功能概述
tencentdb_ChangeLoginPassword 是部署在 SQL Server 实例 master 库中的存储过程,供用户自助修改其名下 SQL Login 的密码。用户无需拥有 sysadmin 角色即可完成密码修改。调用方式
USE masterGOEXEC dbo.tencentdb_ChangeLoginPassword@login = N'<目标登录名>',@new_password = N'<新密码>'
参数说明
参数 | 类型 | 说明 |
@login | SYSNAME | 要修改密码的 SQL Login 名称 |
@new_password | NVARCHAR(128) | 新密码 |
返回值
返回码 | 含义 |
0 | 成功 |
51001 | 登录名在系统黑名单中 |
51002 | 登录名不存在或非 SQL Login |
51004 | 不允许修改 sa(系统内置特权账号) |
51006 | 密码包含被服务器安全策略禁止的特殊字符 |
51007 | 目标登录名是特权服务器角色成员(sysadmin/securityadmin/serveradmin) |
51008 | 密码不满足复杂度要求 |
51009 | 密码长度超限(> 32位) |
密码复杂度要求
规则 | 要求 |
长度 | 8 ~ 32个字符 |
复杂度 | 至少包含字母、数字、符号中的2类 |
不含账号名 | 密码中不能包含登录名(不区分大小写) |
特殊字符限制 | 不能包含 ]; [; ;[ '] [' 等特殊字符组合 |
调用示例
-- 成功修改密码EXEC dbo.tencentdb_ChangeLoginPassword @login = N'myapp_user', @new_password = N'NewP@ss2026!'-- 返回 0-- 尝试修改系统账号(被拒绝)EXEC dbo.tencentdb_ChangeLoginPassword @login = N'tencent_admin', @new_password = N'Test1234!'-- Msg 51001: Login is in the system blacklist and cannot be modified.-- 密码不满足复杂度(被拒绝)EXEC dbo.tencentdb_ChangeLoginPassword @login = N'myapp_user', @new_password = N'123'-- Msg 51008: Password does not meet complexity requirements.
注意事项
仅 SQL Login 可用:Windows 认证账号不支持通过本存储过程修改密码。
不支持修改特权账号:sysadmin/securityadmin/serveradmin 角色成员不允许修改。
需要 EXECUTE 权限:您的账号需要对该存储过程拥有 EXECUTE 权限才能调用。
在 master 库执行:调用前请先
USE master。