PWDCOMPARE (Transact-SQL)
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例
对密码执行哈希操作并将该哈希与现有密码的哈希进行比较。 PWDCOMPARE 可用于搜索空的 SQL Server 登录密码或常见的弱密码。
语法
PWDCOMPARE ( 'clear_text_password'
, password_hash
[ , version ] )
参数
' clear_text_password '
未加密的密码。 clear_text_password 是 sysname (nvarchar(128))。
password_hash
密码的加密哈希。 password_hash 是 varbinary(128)。
version
已过时参数;如果 password_hash 表示来自早于 SQL Server 2000 (8.x)(已迁移到 SQL Server 2005 (9.x) 或更高版本但从未转换为 SQL Server 2000 (8.x) 系统)的登录名的值,则该参数可设置为 1。 version 是 int。
注意
此参数用于向后兼容,但由于密码哈希 blob 现在包含自身的版本说明,因此忽略此参数。 在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。
返回类型
int
如果 clear_text_password 的哈希与 password_hash 相匹配,则返回 1;反之,则返回 0。
注解
PWDCOMPARE 函数不会威胁密码哈希的能力,因为可通过尝试使用作为第一个参数提供的密码登录,执行相同的测试。
PWDCOMPARE 不能与包含数据库用户的密码一起使用。 没有等效的包含数据库。
权限
PWDENCRYPT 向用户开放使用。
检查 sys.sql_logins 的 password_hash 列要求 CONTROL SERVER 权限。
示例
A. 标识没有密码的登录名
下面的示例标识没有密码的 SQL Server 登录名。
SELECT name FROM sys.sql_logins
WHERE PWDCOMPARE('', password_hash) = 1 ;
B. 搜索常见密码
为了搜索您要标识和更改的常见密码,请将密码指定为第一个参数。 例如,执行以下语句以便搜索指定为 password
的密码。
SELECT name FROM sys.sql_logins
WHERE PWDCOMPARE('password', password_hash) = 1 ;