sp_addlogin (Transact-SQL)

创建新的 SQL Server 登录名,该登录名允许用户使用 SQL Server 身份验证连接到 SQL Server 实例。

重要说明重要提示

后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。请改用 CREATE LOGIN

安全说明安全说明

请尽可能使用 Windows 身份验证。

适用范围:SQL Server(SQL Server 2008 到当前版本)。

主题链接图标 Transact-SQL 语法约定

语法

sp_addlogin [ @loginame = ] 'login' 
    [ , [ @passwd = ] 'password' ] 
    [ , [ @defdb = ] 'database' ] 
    [ , [ @deflanguage = ] 'language' ] 
    [ , [ @sid = ] sid ] 
    [ , [ @encryptopt = ] 'encryption_option' ] 
[;]

参数

  • [ @loginame= ] 'login'
    登录的名称。 login 的数据类型为 sysname,无默认值。

  • [ @passwd= ] 'password'
    登录的密码。 password 的数据类型为 sysname,默认值为 NULL。

    安全说明安全说明

    不要使用空密码。请使用强密码。

  • [ @defdb= ] 'database'
    登录的默认数据库(在登录后登录首先连接到该数据库)。 database 的数据类型为 sysname,默认值为 master。

  • [ @deflanguage= ] 'language'
    登录的默认语言。 language 的数据类型为 sysname,默认值为 NULL。 如果未指定 language,则新登录的默认 language 将设置为服务器的当前默认语言。

  • [ @sid= ] 'sid'
    安全标识号 (SID)。 sid 的数据类型为 varbinary(16),默认值为 NULL。 如果 sid 为 NULL,则系统将为新登录生成 SID。 不管是否使用 varbinary 数据类型,NULL 以外的值的长度都必须正好是 16 个字节,并且一定不能已经存在。 指定 sid 非常有用,例如,如果您要编写脚本,或将 SQL Server 登录从一台服务器移动到另一台服务器,并且想让登录在不同服务器上使用相同的 SID,都需要指定它。

  • [ @encryptopt= ] 'encryption_option'
    指定是以明文形式,还是以明文密码的哈希运算结果来传递密码。 注意,不进行加密。 在本讨论中使用“加密”一词是为了向后兼容。 如果传入明文密码,将对它进行哈希运算。 哈希值将存储起来。 encryption_option 的数据类型为 varchar(20),它可以为以下值之一。

    说明

    NULL

    以明文形式传递密码。 这是默认设置。

    skip_encryption

    密码已经过哈希运算。 数据库引擎应存储值,且不对其重新进行哈希运算。

    skip_encryption_old

    所提供的密码由 SQL Server 的早期版本进行哈希运算。 数据库引擎应存储值,且不对其重新进行哈希运算。 提供该选项只是为了升级。

返回代码值

0(成功)或 1(失败)

注释

SQL Server 登录名可以包含 1 到 128 个字符,其中包括字母、符号和数字。 登录名不能包含反斜杠 (\);它可以是保留登录名,例如 sa 或 public,或已经存在;或者是 NULL 或空字符串 ('')。

如果提供默认数据库的名称,则不用执行 USE 语句就可以连接到指定的数据库。 但是,除非数据库所有者授予您(使用 sp_addusersp_addrolemembersp_addrole)该数据库的访问权,否则不能使用默认的数据库。

SID 号是一个 GUID,用于唯一地标识服务器中的登录名。

更改服务器的默认语言将不会更改现有登录的默认语言。 若要更改服务器的默认语言,请使用 sp_configure

如果在将登录名添加到 SQL Server 时已对密码进行了哈希运算,则使用 skip_encryption 来取消密码哈希运算将是有用的。 如果 SQL Server 的早期版本对密码进行了哈希运算,则使用 skip_encryption_old。

无法在用户定义的事务中执行 sp_addlogin。

下表显示了若干个与 sp_addlogin 一起使用的存储过程。

存储过程

说明

sp_grantlogin

添加 Windows 用户或组。

sp_password

更改用户密码。

sp_defaultdb

更改用户的默认数据库。

sp_defaultlanguage

更改用户的默认语言。

权限

需要 ALTER ANY LOGIN 权限。

示例

A.创建 SQL Server 登录

以下示例为用户 Victoria 创建 SQL Server 登录,密码为 B1r12-36,并且不指定默认数据库。

EXEC sp_addlogin 'Victoria', 'B1r12-36';
GO

B.创建具有默认数据库的 SQL Server 登录

以下示例为用户 Albert 创建 SQL Server 登录,密码为 B5432-3M6,默认数据库为 corporate。

EXEC sp_addlogin 'Albert', 'B5432-3M6', 'corporate';
GO

C.创建具有不同默认语言的 SQL Server 登录

以下示例为用户 TzTodorov 创建 SQL Server 登录,密码为 709hLKH7chjfwv,默认数据库为 AdventureWorks2012,默认语言为 Bulgarian。

EXEC sp_addlogin 'TzTodorov', '709hLKH7chjfwv', 'AdventureWorks2012', N'български'

D.创建具有特定 SID 的 SQL Server 登录

以下示例为用户 Michael 创建 SQL Server 登录名,密码为 B548bmM%f6,默认数据库为 AdventureWorks2012,默认语言为 us_english,SID 为 0x0123456789ABCDEF0123456789ABCDEF。

EXEC sp_addlogin 'Michael', 'B548bmM%f6', 'AdventureWorks2012', 'us_english', 0x0123456789ABCDEF0123456789ABCDEF

请参阅

参考

CREATE LOGIN (Transact-SQL)

sp_droplogin (Transact-SQL)

sp_helpuser (Transact-SQL)

sp_revokelogin (Transact-SQL)

xp_logininfo (Transact-SQL)