sp_password (Transact-SQL)

适用范围:SQL Server

添加或更改 SQL Server 登录名的密码。

重要

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

Transact-SQL 语法约定

语法

sp_password
    [ [ @old = ] N'old' ]
    , [ @new = ] N'new'
    [ , [ @loginame = ] N'loginame' ]
[ ; ]

参数

[ @old = ] N'old'

旧密码。 @old为 sysname,默认值为 NULL.

[ @new = ] N'new'

新密码。 @newsysname,无默认值。 如果未使用命名参数,则必须指定@old

重要

请勿使用 NULL 密码。 请使用强密码。 有关详细信息,请参阅 Strong Passwords

[ @loginame = ] N'loginame'

受密码更改影响的登录名。 @loginame为 sysname,默认值为 NULL. @loginame必须已存在,并且只能由 sysadminsecurityadmin 固定服务器角色的成员指定。

返回代码值

0(成功)或 1(失败)。

注解

sp_password 调用 ALTER LOGIN。 此语句支持更多选项。 有关更改密码的信息,请参阅 ALTER LOGIN

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

权限

需要 ALTER ANY LOGIN 权限。 此外, CONTROL SERVER 还需要权限来重置密码而不提供旧密码,或者更改的登录名是否具有 CONTROL SERVER 权限。

主体可更改其自己的密码。

示例

A. 在不知道旧密码的情况下更改登录名的密码

以下示例显示如何使用 ALTER LOGIN 将登录名 Victoria 的密码更改为 B3r1000d#2-36。 此方法是首选方法。 执行此命令的用户必须具有 CONTROL SERVER 权限。

ALTER LOGIN Victoria
    WITH PASSWORD = 'B3r1000d#2-36';
GO

B. 更改密码

以下示例显示如何使用 ALTER LOGIN 将登录名 Victoria 的密码由 B3r1000d#2-36 更改为 V1cteAmanti55imE。 此方法是首选方法。 用户可以 Victoria 在没有额外权限的情况下执行此命令。 其他用户需要 ALTER ANY LOGIN 权限。

ALTER LOGIN Victoria
    WITH PASSWORD = 'V1cteAmanti55imE'
    OLD_PASSWORD = 'B3r1000d#2-36';
GO