ALTER LOGIN (Transact-SQL)
更改 SQL Server 登录帐户的属性。
语法
ALTER LOGIN login_name
{
<status_option>
| WITH <set_option> [ ,... ]
| <cryptographic_credential_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
<cryptographic_credentials_option> ::=
ADD CREDENTIAL credential_name
| DROP CREDENTIAL credential_name
参数
login_name
指定正在更改的 SQL Server 登录的名称。域登录名必须用方括号括起来,其格式为 [domain\user]。ENABLE | DISABLE
启用或禁用此登录名。PASSWORD ='password'
仅适用于 SQL Server 登录名。指定正在更改的登录的密码。密码是区分大小写的。PASSWORD **=**hashed_password
仅适用于 HASHED 关键字。指定要创建的登录名的密码的哈希值。HASHED
仅适用于 SQL Server 登录名。指定在 PASSWORD 参数后输入的密码已经过哈希运算。如果未选择此选项,则在将密码存储到数据库之前,对其进行哈希运算。此选项只能用于在两台服务器之间同步登录名。切勿使用 HASHED 选项定期更改密码。注意 此参数只能用于 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 登录的凭据的名称。该凭据必须已存在于服务器中。有关详细信息,请参阅 凭据(数据库引擎)。凭据不能映射到 sa 登录名。NO CREDENTIAL
删除登录到服务器凭据的当前所有映射。有关详细信息,请参阅凭据(数据库引擎)。UNLOCK
仅适用于 SQL Server 登录名。指定应解锁被锁定的登录名。ADD CREDENTIAL
将可扩展的密钥管理 (EKM) 提供程序凭据添加到登录名。有关详细信息,请参阅了解可扩展的密钥管理 (EKM)。DROP CREDENTIAL
删除登录名的可扩展密钥管理 (EKM) 提供程序凭据。有关详细信息,请参阅了解可扩展的密钥管理 (EKM)。
注释
如果 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 语句将失败。
重要提示 |
---|
只有在 Windows Server 2003 及更高版本上才会强制执行 CHECK_EXPIRATION 和 CHECK_POLICY。有关详细信息,请参阅密码策略。 |
重要提示 |
---|
Windows Server 2003 中的一个已知问题可能会阻止错误密码计数在达到帐户锁定阈值后重置。这可能会导致当后续登录尝试失败后立即锁定。可以通过暂时设置 CHECK_POLICY = OFF,然后设置 CHECK_POLICY = ON 来手动重置错误的密码计数。有关帐户锁定阈值的详细信息,请参阅 Microsoft 知识库文章 818078:Your User Account May Be Prematurely Locked Out(您的用户帐户可能被提前锁定)。 |
不能使用带 DISABLE 参数的 ALTER_LOGIN 来拒绝对 Windows 组的访问。例如,ALTER_LOGIN [domain\group] DISABLE 将返回以下错误消息:
“消息 15151,级别 16,状态 1,第 1 行”
“无法对登录名‘Domain\Group' 执行更改,因为它不存在,或者您没有所需的权限。”
这是默认设置。
权限
需要 ALTER ANY LOGIN 权限。
如果使用 CREDENTIAL 选项,则还需要 ALTER ANY CREDENTIAL 权限。
如果正在更改的登录名是 sysadmin 固定服务器角色的成员或 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 登录名称更改为 John2。
ALTER LOGIN Mary5 WITH NAME = John2;
D. 将登录名映射到凭据
以下示例将登录名 John2 映射到凭据 Custodian04。
ALTER LOGIN John2 WITH CREDENTIAL = Custodian04;
E. 将登录名映射到可扩展密钥管理凭据
以下示例将登录名 Mary5 映射到 EKM 凭据 EKMProvider1。
ALTER LOGIN Mary5
ADD CREDENTIAL EKMProvider1;
GO
F. 解除锁定登录名
若要解除锁定 SQL Server 登录名,请执行以下语句,并将 **** 替换为所需帐户密码。
ALTER LOGIN [Mary5] WITH PASSWORD = '****' UNLOCK ;
GO
若要在不更改密码的情况下解除锁定登录名,请关闭检查策略,然后再打开此检查策略。
ALTER LOGIN [Mary5] WITH CHECK_POLICY = OFF;
ALTER LOGIN [Mary5] WITH CHECK_POLICY = ON;
GO
G. 使用 HASHED 更改登录名的密码
以下示例将 TestUser 登录名的密码更改为已经过哈希运算的值。
ALTER LOGIN TestUser WITH
PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED ;
GO