我正在尝试通过存储过程更改用户密码。
DECLARE @newpwd VARCHAR(20)
DECLARE @usrid VARCHAR(50)
DECLARE @SQL NVARCHAR(4000)
DECLARE @oldpass VARCHAR(50)
SET @usrid = 'ddladmin'
SET @newpwd = 'demo@121245'
SET @oldpass = 'demo@123'
SET @SQL = 'ALTER LOGIN ' + @usrid + ' WITH PASSWORD = ' + QUOTENAME(@newpwd, '''') + ' OLD_PASSWORD = ' + QUOTENAME(@oldpass, '''');
EXEC sp_executesql @SQL
通过上述查询,我收到了错误消息:
无法更改登录信息' ddladmin',因为它不存在或您没有权限。
但是当我尝试通过alter
脚本直接改变它时,例如
ALTER LOGIN ddladmin WITH PASSWORD ='demo@12121'
它正在运作。有人可以帮忙吗?
答案 0 :(得分:0)
错误信息非常明确:
因为它不存在或您没有权限。
我试图运行你的脚本,它对我没有任何错误。
因此,假设您的服务器上存在登录ddladmin
,则表示您无权更改登录。您应该检查运行查询的用户,并最终change the execution context:
SELECT USER_NAME(), SUSER_NAME()
EXEC sp_executesql @SQL
EXECUTE AS LOGIN ='SA'
SELECT USER_NAME(), SUSER_NAME()
EXEC sp_executesql @SQL
REVERT