CREATE LOGIN (Transact-SQL)

更新日期: 2006 年 7 月 17 日

创建新的 SQL Server 登录名。

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

语法

CREATE LOGIN login_name { WITH <option_list1> | FROM <sources> }

<sources> ::=
    WINDOWS [ WITH <windows_options> [ ,... ] ]
    | CERTIFICATE certificateName
    | ASYMMETRIC KEY asym_key_name

<option_list1> ::= 
    PASSWORD = { 'password' | hashed_password HASHED } [ MUST_CHANGE ]
    [ , <option_list2> [ ,... ] ]

<option_list2> ::=  
    SID = sid
    | DEFAULT_DATABASE = database    
    | DEFAULT_LANGUAGE = language
    | CHECK_EXPIRATION = { ON | OFF}
    | CHECK_POLICY = { ON | OFF}
    | CREDENTIAL = credential_name 

<windows_options> ::=      
    DEFAULT_DATABASE = database
    | DEFAULT_LANGUAGE = language

参数

  • login_name
    指定创建的登录名。 有四种类型的登录名:SQL Server 登录名、Windows 登录名、证书映射登录名和非对称密钥映射登录名。 如果从 Windows 域帐户映射 login_name,则 login_name 必须用方括号 ([ ]) 括起来。 请参阅本主题稍后部分中的示例 D。
  • WINDOWS
    指定将登录名映射到 Windows 登录名。
  • CERTIFICATE certificateName
    指定将与此登录名关联的证书名称。 此证书必须已存在于 master 数据库中。
  • ASYMMETRIC KEY asym_key_name
    指定将与此登录名关联的非对称密钥的名称。 此密钥必须已存在于 master 数据库中。
  • PASSWORD ='password'
    仅适用于 SQL Server 登录名。 指定正在创建的登录名的密码。 此值可能已经过哈希运算。 应使用强密码。 有关详细信息,请参阅强密码
  • PASSWORD **=**hashed_password
    仅适用于 HASHED 关键字。 指定要创建的登录名密码的哈希值。
  • HASHED
    仅适用于 SQL Server 登录名。 指定在 PASSWORD 参数后输入的密码已经过哈希运算。 HASHED 选项只能用于关闭了密码策略检查的登录名。 如果未选择此选项,则在将作为密码输入的字符串存储到数据库之前,对其进行哈希运算。
  • MUST_CHANGE
    仅适用于 SQL Server 登录名。 如果包括此选项,则 SQL Server 将在首次使用新登录名时提示用户输入新密码。
  • CREDENTIAL **=**credential_name
    将映射到新 SQL Server 登录名的凭据的名称。 该凭据必须已存在于服务器中。
  • SID = sid
    仅适用于 SQL Server 登录名。 指定新 SQL Server 登录名的 GUID。 如果未选择此选项,则 SQL Server 自动指派 GUID。
  • DEFAULT_DATABASE **=**database
    指定将指派给登录名的默认数据库。 如果未包括此选项,则默认数据库将设置为 master
  • DEFAULT_LANGUAGE **=**language
    指定将指派给登录名的默认语言。 如果未包括此选项,则默认语言将设置为服务器的当前默认语言。 即使将来服务器的默认语言发生更改,登录名的默认语言也仍保持不变。
  • CHECK_EXPIRATION = { ON | OFF }
    仅适用于 SQL Server 登录名。 指定是否对此登录帐户强制实施密码过期策略。 默认值为 OFF。
  • CHECK_POLICY = { ON | OFF }
    仅适用于 SQL Server 登录名。 指定应对此登录名强制实施运行 SQL Server 的计算机的 Windows 密码策略。 默认值为 ON。

备注

密码是区分大小写的。

只有创建 SQL Server 登录名时,才支持对密码预先进行哈希运算。

如果指定 MUST_CHANGE,则 CHECK_EXPIRATION 和 CHECK_POLICY 必须设置为 ON。 否则,该语句将失败。

不支持 CHECK_POLICY = OFF 和 CHECK_EXPIRATION = ON 的组合。

如果 CHECK_POLICY 设置为 OFF,将对 lockout_time 进行重置,并将 CHECK_EXPIRATION 设置为 OFF。

ms189751.note(zh-cn,SQL.90).gif重要提示:
只有在 及更高版本上才会强制执行 CHECK_EXPIRATION 和 CHECK_POLICY。 有关详细信息,请参阅密码策略

从证书或非对称密钥创建的登录名仅用于代码签名。 不能用于连接到 SQL Server。 仅当 master 中已存在证书或非对称密钥时,才能从证书或非对称密钥创建登录名。

权限

需要对服务器具有 ALTER ANY LOGIN 权限。 如果使用 CREDENTIAL 选项,则还需要对此服务器的 ALTER ANY CREDENTIAL 权限。

示例

A. 创建带密码的登录名

以下示例为特定用户创建一个登录名并分配一个密码。 MUST_CHANGE 选项需要用户首次连接到服务器时更改此密码。

CREATE LOGIN Mary5 WITH PASSWORD = '<enterStrongPasswordHere>' MUST_CHANGE;
GO

B. 创建映射到凭据的登录名

以下示例为特定用户创建一个登录名。 此登录名将映射到凭据。

CREATE LOGIN Mary5 WITH PASSWORD = '<enterStrongPasswordHere>', 
    CREDENTIAL = <credential_name>;
GO

C. 从证书创建登录名

以下示例将从 master 中的证书为特定用户创建一个登录名。

USE MASTER;
CREATE CERTIFICATE <certificateName>
    WITH SUBJECT = '<login_name> certificate in master database',
    EXPIRY_DATE = '02/02/2009';
GO
CREATE LOGIN <login_name> FROM CERTIFICATE <certificateName>;
GO

D. 从 Windows 域帐户创建登录名

以下示例将从 Windows 域帐户创建 [Adventure-Works\Mary5] 登录名。

CREATE LOGIN [Adventure-Works\Mary5] FROM WINDOWS;
GO

请参阅

参考

ALTER LOGIN (Transact-SQL)
DROP LOGIN (Transact-SQL)
EVENTDATA (Transact-SQL)

其他资源

主体
密码策略

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 7 月 17 日

更改的内容:
  • 明确了从证书或非对称密钥创建的登录名的使用方法。