ALTER LOGIN (Transact-SQL)
更改 SQL Server 登录帐户的属性。
注意
Microsoft Entra ID 以前称为 Azure Active Directory (Azure AD)。
选择产品
在下一行中,选择感兴趣的产品名称,仅显示该产品的信息。
* SQL Server *
SQL Server
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 |禁用
启用或禁用此登录名。 禁用登录不会影响已连接的登录行为。 (使用 KILL
语句终止现有连接。禁用的登录名保留其权限,但仍可以模拟。
PASSWORD = 'password'
仅适用于 SQL Server 登录名。 指定正在更改的登录名的密码。 密码区分大小写。
PASSWORD = hashed_password
仅适用于 HASHED 关键字。 指定要创建的登录名的密码的哈希值。
重要
登录名(或包含的数据库用户)连接并进行身份验证时,连接将缓存有关登录名的标识信息。 对于 Windows 身份验证登录名,这包括有关 Windows 组中的成员身份的信息。 只要保持连接,登录名的标识将保持身份验证。 若要强制更改标识(如密码重置或更改 Windows 组成员身份),登录必须从身份验证机构(Windows 或 SQL Server)注销,然后再次登录。
sysadmin 固定服务器角色或任何具有 ALTER ANY CONNECTION
权限的登录名的成员可以使用 KILL
命令结束连接并强制登录重新连接。 在打开与对象资源管理器和查询编辑器窗口的多个连接时,SQL Server Management Studio 可以重复使用连接信息。 关闭所有连接以强制重新连接。
散 列
仅适用于 SQL Server 登录名。 指定在 PASSWORD 参数已哈希处理后输入的密码。 如果未选择此选项,则会先对密码进行哈希处理,然后再存储在数据库中。 此选项应仅用于两个服务器之间的登录同步。 不要使用 HASHED 选项定期更改密码。
OLD_PASSWORD = 'old_password'
仅适用于 SQL Server 登录名。 将向其分配新密码的登录名的当前密码。 密码区分大小写。
MUST_CHANGE
仅适用于 SQL Server 登录名。 如果包含此选项,则首次使用更改的登录名时,SQL Server 会提示输入更新的密码。
DEFAULT_DATABASE = 数据库
指定要分配给登录名的默认数据库。
DEFAULT_LANGUAGE = 语言
指定要分配给登录名的默认语言。 所有 SQL 数据库登录名的默认语言都是英语,不能更改。 Linux 上的 SQL Server 上 sa
登录的默认语言为英语,但可以更改。
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
删除登录名到服务器凭据的任何现有映射。 有关详细信息,请参阅 凭据。
开锁
仅适用于 SQL Server 登录名。 指定应解锁锁定的登录名。
添加 CREDENTIAL
将可扩展密钥管理(EKM)提供程序凭据添加到登录名。 有关详细信息,请参阅 可扩展密钥管理(EKM)。
DROP CREDENTIAL
从登录名中删除可扩展密钥管理 (EKM) 提供程序凭据。 有关详细信息,请参阅 [可扩展密钥管理 (EKM)] (../../relational-databases/security/encryption/extensible-key-management-ekm.md)。
言论
当CHECK_POLICY设置为 ON 时,无法使用 HASHED 参数。
当CHECK_POLICY更改为 ON 时,会发生以下行为:
- 密码历史记录使用当前密码哈希的值进行初始化。
当CHECK_POLICY更改为 OFF 时,会发生以下行为:
- CHECK_EXPIRATION也设置为 OFF。
- 已清除密码历史记录。
- 重置 lockout_time 的值。
如果指定了MUST_CHANGE,则必须将CHECK_EXPIRATION和CHECK_POLICY设置为 ON。 否则,该语句将失败。
如果CHECK_POLICY设置为 OFF,则无法将CHECK_EXPIRATION设置为 ON。 具有此选项组合的 ALTER LOGIN 语句失败。
不能将 ALTER LOGIN 与 DISABLE 参数一起使用来拒绝对 Windows 组的访问。 例如,ALTER LOGIN [<domain>\<group>] DISABLE
返回以下错误消息:
"Msg 15151, Level 16, State 1, Line 1
Cannot alter the login '*Domain\Group*', because it doesn't exist or you don't have permission.
这是设计造成的。
在 SQL 数据库中,对连接进行身份验证所需的登录数据和服务器级防火墙规则会临时缓存在每个数据库中。 此缓存会定期刷新。 若要强制刷新身份验证缓存并确保数据库具有最新版本的登录表,请执行 DBCC FLUSHAUTHCACHE。
权限
需要 ALTER ANY LOGIN 权限。
如果使用 CREDENTIAL 选项,则还需要 ALTER ANY CREDENTIAL 权限。
如果所更改的登录名是 sysadmin 固定服务器角色或 CONTROL SERVER 权限的被授权者的成员,则进行以下更改时也需要 CONTROL SERVER 权限:
- 重置密码而不提供旧密码。
- 启用MUST_CHANGE、CHECK_POLICY或CHECK_EXPIRATION。
- 更改登录名。
- 启用或禁用登录名。
- 将登录名映射到其他凭据。
主体可以更改其自己的登录名的密码、默认语言和默认数据库。
例子
一个。 启用禁用的登录名
以下示例启用登录 Mary5
。
ALTER LOGIN Mary5 ENABLE;
B. 更改登录名的密码
以下示例将登录名 Mary5
的密码更改为强密码。
ALTER LOGIN Mary5 WITH PASSWORD = '<enterStrongPasswordHere>';
C. 以登录身份登录时更改登录名的密码
如果尝试更改当前登录的登录名的密码,并且没有 ALTER ANY LOGIN
权限,则必须指定 OLD_PASSWORD
选项。
ALTER LOGIN Mary5 WITH PASSWORD = '<enterStrongPasswordHere>' OLD_PASSWORD = '<oldWeakPasswordHere>';
D. 更改登录名
以下示例将登录名 Mary5
更改为 John2
。
ALTER LOGIN Mary5 WITH NAME = John2;
E. 将登录名映射到凭据
以下示例将登录名 John2
映射到凭据 Custodian04
。
ALTER LOGIN John2 WITH CREDENTIAL = Custodian04;
F. 将登录名映射到可扩展密钥管理凭据
以下示例将登录名 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
相关内容
* SQL 数据库 *
SQL 数据库
Azure SQL 数据库的语法
ALTER LOGIN login_name
{
<status_option>
| WITH <set_option> [ , .. .n ]
}
[;]
<status_option> ::=
ENABLE | DISABLE
<set_option> ::=
PASSWORD = 'password'
[
OLD_PASSWORD = 'oldpassword'
]
| NAME = login_name
参数
login_name
指定正在更改的 SQL Server 登录名的名称。 域登录名必须用括号括起来,格式为 [domain\user]。
ENABLE |禁用
启用或禁用此登录名。 禁用登录不会影响已连接的登录行为。 (使用 KILL
语句终止现有连接。禁用的登录名保留其权限,但仍可以模拟。
PASSWORD = 'password'
仅适用于 SQL Server 登录名。 指定正在更改的登录名的密码。 密码区分大小写。
与 SQL 数据库的连续活动连接需要重新授权(数据库引擎至少每 10 小时执行一次)。 数据库引擎尝试使用最初提交的密码重新授权,无需用户输入。 出于性能原因,在 SQL 数据库中重置密码时,即使连接由于连接池而重置,连接也不会重新进行身份验证。 这不同于本地 SQL Server 的行为。 如果自最初授权连接后密码已更改,则必须终止连接,并使用新密码建立的新连接。 具有 KILL DATABASE CONNECTION 权限的用户可以使用 KILL 命令显式终止与 SQL 数据库的连接。 有关详细信息,请参阅 KILL。
重要
登录名(或包含的数据库用户)连接并进行身份验证时,连接将缓存有关登录名的标识信息。 对于 Windows 身份验证登录名,这包括有关 Windows 组中的成员身份的信息。 只要保持连接,登录名的标识将保持身份验证。 若要强制更改标识(如密码重置或更改 Windows 组成员身份),登录必须从身份验证机构(Windows 或 SQL Server)注销,然后再次登录。
OLD_PASSWORD = 'old_password'
仅适用于 SQL Server 登录名。 将向其分配新密码的登录名的当前密码。 密码区分大小写。
NAME = login_name
正在重命名的登录名的新名称。 如果这是 Windows 登录名,则对应于新名称的 Windows 主体的 SID 必须与与 SQL Server 中的登录名关联的 SID 匹配。 SQL Server 登录名的新名称不能包含反斜杠字符 (\)。
言论
在 SQL 数据库中,对连接进行身份验证所需的登录数据和服务器级防火墙规则会临时缓存在每个数据库中。 此缓存会定期刷新。 若要强制刷新身份验证缓存并确保数据库具有最新版本的登录表,请执行 DBCC FLUSHAUTHCACHE。
权限
需要 ALTER ANY LOGIN 权限。
如果所更改的登录名是 sysadmin 固定服务器角色或 CONTROL SERVER 权限的被授权者的成员,则进行以下更改时也需要 CONTROL SERVER 权限:
- 重置密码而不提供旧密码。
- 更改登录名。
- 启用或禁用登录名。
- 将登录名映射到其他凭据。
主体可以更改其自己的登录名的密码。
例子
这些示例还包括使用其他 SQL 产品的示例。 查看支持哪些以前的参数。
一个。 启用禁用的登录名
以下示例启用登录 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
。
适用于:SQL Server 2008 (10.0.x) 及更高版本。
ALTER LOGIN Mary5 ADD CREDENTIAL EKMProvider1;
GO
F. 使用 HASHED 更改登录名的密码
以下示例将 TestUser
登录名的密码更改为已哈希值。
适用于:SQL Server 2008 (10.0.x) 及更高版本。
ALTER LOGIN TestUser WITH PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED;
GO
相关内容
* SQL 托管实例 *
Azure SQL 托管实例
SQL Server 和 Azure SQL 托管实例的语法
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
-- Syntax for Azure SQL Managed Instance using Microsoft Entra logins
ALTER LOGIN login_name
{
<status_option>
| WITH <set_option> [ , .. .n ]
}
[;]
<status_option> ::=
ENABLE | DISABLE
<set_option> ::=
DEFAULT_DATABASE = database
| DEFAULT_LANGUAGE = language
参数
适用于 SQL 和 Microsoft Entra 登录名的参数
login_name
指定正在更改的 SQL Server 登录名的名称。 Microsoft Entra 登录名必须指定为user@domain。 例如,john.smith@contoso.com,或作为Microsoft Entra 组或应用程序名称。 对于Microsoft Entra 登录名,login_name 必须与在 master
数据库中创建的现有 Microsoft Entra 登录名相对应。
ENABLE |禁用
启用或禁用此登录名。 禁用登录不会影响已连接的登录行为。 (使用 KILL
语句终止现有连接。禁用的登录名保留其权限,但仍可以模拟。
DEFAULT_DATABASE = 数据库
指定要分配给登录名的默认数据库。
DEFAULT_LANGUAGE = 语言
指定要分配给登录名的默认语言。 所有 SQL 数据库登录名的默认语言都是英语,不能更改。 Linux 上的 SQL Server 上 sa
登录的默认语言为英语,但可以更改。
仅适用于 SQL 登录名的参数
PASSWORD = 'password'
仅适用于 SQL Server 登录名。 指定正在更改的登录名的密码。 密码区分大小写。 与外部登录名一起使用时,密码也不适用,例如Microsoft Entra 登录名。
与 SQL 数据库的连续活动连接需要重新授权(数据库引擎至少每 10 小时执行一次)。 数据库引擎尝试使用最初提交的密码重新授权,无需用户输入。 出于性能原因,在 SQL 数据库中重置密码时,即使连接由于连接池而重置,连接也不会重新进行身份验证。 这不同于本地 SQL Server 的行为。 如果自最初授权连接后密码已更改,则必须终止连接,并使用新密码建立的新连接。 具有 KILL DATABASE CONNECTION 权限的用户可以使用 KILL 命令显式终止与 SQL 数据库的连接。 有关详细信息,请参阅 KILL。
PASSWORD = hashed_password
仅适用于 HASHED 关键字。 指定要创建的登录名的密码的哈希值。
散 列
仅适用于 SQL Server 登录名。 指定在 PASSWORD 参数已哈希处理后输入的密码。 如果未选择此选项,则会先对密码进行哈希处理,然后再存储在数据库中。 此选项应仅用于两个服务器之间的登录同步。 不要使用 HASHED 选项定期更改密码。
OLD_PASSWORD = 'old_password'
仅适用于 SQL Server 登录名。 将向其分配新密码的登录名的当前密码。 密码区分大小写。
MUST_CHANGE
仅适用于 SQL Server 登录名。 如果包含此选项,则首次使用更改的登录名时,SQL Server 会提示输入更新的密码。
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
删除登录名到服务器凭据的任何现有映射。 有关详细信息,请参阅 凭据。
开锁
仅适用于 SQL Server 登录名。 指定应解锁锁定的登录名。
添加 CREDENTIAL
将可扩展密钥管理(EKM)提供程序凭据添加到登录名。 有关详细信息,请参阅 可扩展密钥管理(EKM)。
DROP CREDENTIAL
从登录名中删除可扩展密钥管理 (EKM) 提供程序凭据。 有关详细信息,请参阅 可扩展密钥管理(EKM)。
言论
当CHECK_POLICY设置为 ON 时,无法使用 HASHED 参数。
当CHECK_POLICY更改为 ON 时,会发生以下行为:
- 密码历史记录使用当前密码哈希的值进行初始化。
当CHECK_POLICY更改为 OFF 时,会发生以下行为:
- CHECK_EXPIRATION也设置为 OFF。
- 已清除密码历史记录。
- 重置 lockout_time 的值。
如果指定了MUST_CHANGE,则必须将CHECK_EXPIRATION和CHECK_POLICY设置为 ON。 否则,该语句将失败。
如果CHECK_POLICY设置为 OFF,则无法将CHECK_EXPIRATION设置为 ON。 具有此选项组合的 ALTER LOGIN 语句失败。
不能将 ALTER_LOGIN 与 DISABLE 参数一起使用来拒绝对 Windows 组的访问。 这是设计造成的。 例如,ALTER_LOGIN [domain\group] DISABLE 返回以下错误消息:
"Msg 15151, Level 16, State 1, Line 1 "Cannot alter the login '*Domain\Group*', because it doesn't exist or you don't have permission."
在 SQL 数据库中,对连接进行身份验证所需的登录数据和服务器级防火墙规则会临时缓存在每个数据库中。 此缓存会定期刷新。 若要强制刷新身份验证缓存并确保数据库具有最新版本的登录表,请执行 DBCC FLUSHAUTHCACHE。
权限
需要 ALTER ANY LOGIN 权限。
如果使用 CREDENTIAL 选项,则还需要 ALTER ANY CREDENTIAL 权限。
如果所更改的登录名是 sysadmin 固定服务器角色或 CONTROL SERVER 权限的被授权者的成员,则进行以下更改时也需要 CONTROL SERVER 权限:
- 重置密码而不提供旧密码。
- 启用MUST_CHANGE、CHECK_POLICY或CHECK_EXPIRATION。
- 更改登录名。
- 启用或禁用登录名。
- 将登录名映射到其他凭据。
主体可以更改其自己的登录名的密码、默认语言和默认数据库。
只有具有 sysadmin
特权的 SQL 主体才能对 Microsoft Entra 登录名执行 ALTER LOGIN 命令。
例子
这些示例还包括使用其他 SQL 产品的示例。 查看支持哪些以前的参数。
一个。 启用禁用的登录名
以下示例启用登录 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
。
适用于:SQL Server 2008 (10.0.x) 及更高版本,以及 Azure SQL 托管实例。
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
登录名的密码更改为已哈希值。
适用于:SQL Server 2008 (10.0.x) 及更高版本,以及 Azure SQL 托管实例。
ALTER LOGIN TestUser WITH PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED;
GO
H. 禁用 Microsoft Entra 用户的登录名
以下示例禁用 Microsoft Entra 用户的登录名,joe@contoso.com。
ALTER LOGIN [joe@contoso.com] DISABLE;
相关内容
* Azure Synapse
Analytics *
Azure Synapse Analytics
Azure Synapse 的语法
ALTER LOGIN login_name
{
<status_option>
| WITH <set_option> [ , .. .n ]
}
[;]
<status_option> ::=
ENABLE | DISABLE
<set_option> ::=
PASSWORD = 'password'
[
OLD_PASSWORD = 'oldpassword'
]
| NAME = login_name
参数
login_name
指定正在更改的 SQL Server 登录名的名称。 域登录名必须用括号括起来,格式为 [domain\user]。
ENABLE |禁用
启用或禁用此登录名。 禁用登录不会影响已连接的登录行为。 (使用 KILL
语句终止现有连接。禁用的登录名保留其权限,但仍可以模拟。
PASSWORD = 'password'
仅适用于 SQL Server 登录名。 指定正在更改的登录名的密码。 密码区分大小写。
与 SQL 数据库的连续活动连接需要重新授权(数据库引擎至少每 10 小时执行一次)。 数据库引擎尝试使用最初提交的密码重新授权,无需用户输入。 出于性能原因,在 SQL 数据库中重置密码时,即使连接由于连接池而重置,连接也不会重新进行身份验证。 这不同于本地 SQL Server 的行为。 如果自最初授权连接后密码已更改,则必须终止连接,并使用新密码建立的新连接。 具有 KILL DATABASE CONNECTION 权限的用户可以使用 KILL 命令显式终止与 SQL 数据库的连接。 有关详细信息,请参阅 KILL。
重要
登录名(或包含的数据库用户)连接并进行身份验证时,连接将缓存有关登录名的标识信息。 对于 Windows 身份验证登录名,这包括有关 Windows 组中的成员身份的信息。 只要保持连接,登录名的标识将保持身份验证。 若要强制更改标识(如密码重置或更改 Windows 组成员身份),登录必须从身份验证机构(Windows 或 SQL Server)注销,然后再次登录。
OLD_PASSWORD = 'old_password'
仅适用于 SQL Server 登录名。 将向其分配新密码的登录名的当前密码。 密码区分大小写。
NAME = login_name
正在重命名的登录名的新名称。 如果这是 Windows 登录名,则对应于新名称的 Windows 主体的 SID 必须与与 SQL Server 中的登录名关联的 SID 匹配。 SQL Server 登录名的新名称不能包含反斜杠字符 (\)。
言论
在 SQL 数据库中,对连接进行身份验证所需的登录数据和服务器级防火墙规则会临时缓存在每个数据库中。 此缓存会定期刷新。 若要强制刷新身份验证缓存并确保数据库具有最新版本的登录表,请执行 DBCC FLUSHAUTHCACHE。
权限
需要 ALTER ANY LOGIN 权限。
如果所更改的登录名是 sysadmin 固定服务器角色或 CONTROL SERVER 权限的被授权者的成员,则进行以下更改时也需要 CONTROL SERVER 权限:
- 重置密码而不提供旧密码。
- 更改登录名。
- 启用或禁用登录名。
- 将登录名映射到其他凭据。
主体可以更改其自己的登录名的密码。
例子
这些示例还包括使用其他 SQL 产品的示例。 查看支持哪些以前的参数。
一个。 启用禁用的登录名
以下示例启用登录 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
。
适用于:SQL Server 2008 (10.0.x) 及更高版本。
ALTER LOGIN Mary5 ADD CREDENTIAL EKMProvider1;
GO
F. 解锁登录名
若要解锁 SQL Server 登录名,请执行以下语句,将 ****
替换为所需的帐户密码。
ALTER LOGIN [Mary5] WITH PASSWORD = '****' UNLOCK;
GO
G. 使用 HASHED 更改登录名的密码
以下示例将 TestUser
登录名的密码更改为已哈希值。
适用于:SQL Server 2008 (10.0.x) 及更高版本。
ALTER LOGIN TestUser WITH PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED;
GO
相关内容
* Analytics
平台系统 (PDW) *
分析平台系统
Analytics Platform System 的语法
ALTER LOGIN login_name
{
<status_option>
| WITH <set_option> [ , ... ]
}
<status_option> ::= ENABLE | DISABLE
<set_option> ::=
PASSWORD = 'password'
[
OLD_PASSWORD = 'oldpassword'
| <password_option> [ <password_option> ]
]
| NAME = login_name
| CHECK_POLICY = { ON | OFF }
| CHECK_EXPIRATION = { ON | OFF }
<password_option> ::=
MUST_CHANGE | UNLOCK
参数
login_name
指定正在更改的 SQL Server 登录名的名称。 域登录名必须用括号括起来,格式为 [domain\user]。
ENABLE |禁用
启用或禁用此登录名。 禁用登录不会影响已连接的登录行为。 (使用 KILL
语句终止现有连接。禁用的登录名保留其权限,但仍可以模拟。
PASSWORD = 'password'
仅适用于 SQL Server 登录名。 指定正在更改的登录名的密码。 密码区分大小写。
重要
登录名(或包含的数据库用户)连接并进行身份验证时,连接将缓存有关登录名的标识信息。 对于 Windows 身份验证登录名,这包括有关 Windows 组中的成员身份的信息。 只要保持连接,登录名的标识将保持身份验证。 若要强制更改标识(如密码重置或更改 Windows 组成员身份),登录必须从身份验证机构(Windows 或 SQL Server)注销,然后再次登录。
OLD_PASSWORD = 'old_password'
仅适用于 SQL Server 登录名。 将向其分配新密码的登录名的当前密码。 密码区分大小写。
MUST_CHANGE
仅适用于 SQL Server 登录名。 如果包含此选项,则首次使用更改的登录名时,SQL Server 会提示输入更新的密码。
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。
开锁
仅适用于 SQL Server 登录名。 指定应解锁锁定的登录名。
言论
当CHECK_POLICY设置为 ON 时,无法使用 HASHED 参数。
当CHECK_POLICY更改为 ON 时,会发生以下行为:
- 密码历史记录使用当前密码哈希的值进行初始化。
当CHECK_POLICY更改为 OFF 时,会发生以下行为:
- CHECK_EXPIRATION也设置为 OFF。
- 已清除密码历史记录。
- 重置 lockout_time 的值。
如果指定了MUST_CHANGE,则必须将CHECK_EXPIRATION和CHECK_POLICY设置为 ON。 否则,该语句将失败。
如果CHECK_POLICY设置为 OFF,则无法将CHECK_EXPIRATION设置为 ON。 具有此选项组合的 ALTER LOGIN 语句失败。
不能将 ALTER_LOGIN 与 DISABLE 参数一起使用来拒绝对 Windows 组的访问。 这是设计造成的。 例如,ALTER_LOGIN [domain\group] DISABLE 返回以下错误消息:
"Msg 15151, Level 16, State 1, Line 1 "Cannot alter the login '*Domain\Group*', because it doesn't exist or you don't have permission."
在 SQL 数据库中,对连接进行身份验证所需的登录数据和服务器级防火墙规则会临时缓存在每个数据库中。 此缓存会定期刷新。 若要强制刷新身份验证缓存并确保数据库具有最新版本的登录表,请执行 DBCC FLUSHAUTHCACHE。
权限
需要 ALTER ANY LOGIN 权限。
如果使用 CREDENTIAL 选项,则还需要 ALTER ANY CREDENTIAL 权限。
如果所更改的登录名是 sysadmin 固定服务器角色或 CONTROL SERVER 权限的被授权者的成员,则进行以下更改时也需要 CONTROL SERVER 权限:
- 重置密码而不提供旧密码。
- 启用MUST_CHANGE、CHECK_POLICY或CHECK_EXPIRATION。
- 更改登录名。
- 启用或禁用登录名。
- 将登录名映射到其他凭据。
主体可以更改其自己的登录名的密码、默认语言和默认数据库。
例子
这些示例还包括使用其他 SQL 产品的示例。 查看支持哪些以前的参数。
一个。 启用禁用的登录名
以下示例启用登录 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
。
适用于:SQL Server 2008 (10.0.x) 及更高版本。
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
登录名的密码更改为已哈希值。
适用于:SQL Server 2008 (10.0.x) 及更高版本。
ALTER LOGIN TestUser WITH PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED;
GO