ALTER LOGIN (Transact-SQL)

更新日期: 2006 年 12 月 12 日

更改 SQL Server 登录帐户的属性。

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

语法

ALTER LOGIN login_name 
    { 
    <status_option> 
    | WITH <set_option> [ ,... ] 
    } 

<status_option> ::=
        ENABLE | DISABLE

<set_option> ::=            
    PASSWORD = 'password' | hashed_password HASHED
    [ 
      OLD_PASSWORD = 'oldpassword' 
      | <password_option> [ <password_option> ] 
    ]
    | DEFAULT_DATABASE = database
    | DEFAULT_LANGUAGE = language
    | NAME = login_name
    | CHECK_POLICY = { ON | OFF }
    | CHECK_EXPIRATION = { ON | OFF }
    | CREDENTIAL = credential_name
    | NO CREDENTIAL
  
<password_option> ::= 
    MUST_CHANGE | UNLOCK

参数

  • login_name
    指定正在更改的 SQL Server 登录的名称。
  • ENABLE | DISABLE
    启用或禁用此登录。
  • PASSWORD = 'password'
    仅适用于 SQL Server 登录帐户。 指定正在更改的登录的密码。 密码是区分大小写的。
  • PASSWORD **=**hashed_password
    仅适用于 HASHED 关键字。 指定要创建的登录名密码的哈希值。
  • HASHED
    仅适用于 SQL Server 登录名。 指定在 PASSWORD 参数后输入的密码已经过哈希运算。 如果未选择此选项,则在将密码存储到数据库之前,对其进行哈希运算。

    ms189828.note(zh-cn,SQL.90).gif注意:
    此参数只能用于 SQL Server 2000 或更高版本所生成的哈希。
  • OLD_PASSWORD ='oldpassword'
    仅适用于 SQL Server 登录帐户。 要指派新密码的登录的当前密码。 密码是区分大小写的。
  • MUST_CHANGE
    仅适用于 SQL Server 登录帐户。 如果包括此选项,则 SQL Server 将在首次使用已更改的登录时提示输入更新的密码。
  • DEFAULT_DATABASE **=**database
    指定将指派给登录的默认数据库。
  • DEFAULT_LANGUAGE **=**language
    指定将指派给登录的默认语言。
  • NAME = login_name
    正在重命名的登录的新名称。 如果是 Windows 登录,则与新名称对应的 Windows 主体的 SID 必须匹配与 SQL Server 中的登录相关联的 SID。 SQL Server 登录的新名称不能包含反斜杠字符 (\)。
  • CHECK_EXPIRATION = { ON | OFF }
    仅适用于 SQL Server 登录帐户。 指定是否对此登录帐户强制实施密码过期策略。 默认值为 OFF。
  • CHECK_POLICY = { ON | OFF }
    仅适用于 SQL Server 登录帐户。 指定应对此登录名强制实施运行 SQL Server 的计算机的 Windows 密码策略。 默认值为 ON。
  • CREDENTIAL = credential_name
    将映射到 SQL Server 登录的凭据的名称。 该凭据必须已存在于服务器中。 有关详细信息,请参阅凭据
  • NO CREDENTIAL
    删除登录到服务器凭据的当前所有映射。 有关详细信息,请参阅凭据
  • UNLOCK
    仅适用于 SQL Server 登录帐户。 指定应解锁被锁定的登录。

备注

如果 CHECK_POLICY 设置为 ON,则无法使用 HASHED 参数。

如果 CHECK_POLICY 更改为 ON,则将出现以下行为:

  • CHECK_EXPIRATION 也设置为 ON,除非它被显式设置为 OFF。
  • 密码历史使用当前的密码哈希值初始化。

如果 CHECK_POLICY 更改为 OFF,则将出现以下行为:

  • CHECK_EXPIRATION 也设置为 OFF。
  • 清除密码历史。
  • lockout_time 的值被重置。

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

如果 CHECK_POLICY 设置为 OFF,则 CHECK_EXPIRATION 不能设置为 ON。 包含此选项组合的 ALTER LOGIN 语句将失败。

ms189828.note(zh-cn,SQL.90).gif重要提示:
只有在 及更高版本上才会强制执行 CHECK_EXPIRATION 和 CHECK_POLICY。 有关详细信息,请参阅密码策略
ms189828.note(zh-cn,SQL.90).gif重要提示:
中的一个已知问题可能会阻止错误密码计数在达到帐户锁定阈值后重置。 这可能会导致当后续登录尝试失败后立即锁定。 可以通过暂时设置 CHECK_POLICY = OFF,然后设置 CHECK_POLICY = ON 来手动重置错误的密码计数。 有关帐户锁定阈值的详细信息,请参阅 Microsoft 知识库文章 818078:您的用户帐户可能被提前锁定

不能使用带 DISABLE 参数的 ALTER_LOGIN 来拒绝对 Windows 组的访问。 例如,ALTER_LOGIN [domain\group] DISABLE 将返回以下错误消息:

“消息 15151,级别 16,状态 1,第 1 行”

“无法对登录名‘Domain\Group’执行更改,因为它不存在,或者您没有所需的权限。”

这是默认设置。

权限

需要 ALTER ANY LOGIN 权限。

如果使用 CREDENTIAL 选项,则还需要 ALTER ANY CREDENTIAL 权限。

如果更改的登录名是 CONTROL SERVER 权限的被授权者,则进行以下更改时还需要 CONTROL SERVER 权限:

  • 在不提供旧密码的情况下重置密码。
  • 启用 MUST_CHANGE、CHECK_POLICY 或 CHECK_EXPIRATION。
  • 更改登录名。
  • 启用或禁用登录。
  • 将登录映射到其他凭据。

主体可更改用于自身登录的密码、默认语言以及默认数据库。

示例

A. 启用已禁用的登录

以下示例将启用 Mary5 登录。

ALTER LOGIN Mary5 ENABLE;

B. 更改登录密码

以下示例将更改 Mary5 的密码。

ALTER LOGIN Mary5 WITH PASSWORD = '<enterStrongPasswordHere>';

C. 更改登录名称

以下示例将 Mary5 登录名称更改为 Joe2

ALTER LOGIN Mary5 WITH NAME = Joe2;

D. 将登录名映射到凭据

以下示例将登录名 Joe2 映射到凭据 Custodian04

ALTER LOGIN Joe2 WITH CREDENTIAL = Custodian04;

请参阅

参考

CREATE LOGIN (Transact-SQL)
DROP LOGIN (Transact-SQL)
CREATE CREDENTIAL (Transact-SQL)
EVENTDATA (Transact-SQL)

其他资源

凭据

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 12 月 12 日

新增内容:
  • 增加了有关 HASHED 参数的信息。
  • 增加了有关使用 DISABLE 参数来阻止访问 Windows 组的信息。