在SQL Server 2012中,怎么可能
select has_perms_by_name('sp_grantlogin', 'object', 'execute')
...返回1,但从同一Windows用户调用sp_grantlogin返回
Msg 15247, Level 16, State 1, Procedure sp_grantlogin, Line 13
User does not have permission to perform this action
答案 0 :(得分:4)
这是正确的。
用户有权执行存储过程,但存储过程中的代码在执行时会抛出该错误。
您可以使用
检查存储过程代码EXEC sp_helptext 'sp_grantlogin'
显示
-- CHECK PERMISSIONS --
IF ( NOT is_srvrolemember('securityadmin') = 1 )
BEGIN
DBCC auditevent (105, 1, 0, @loginame, NULL, NULL, NULL, NULL, NULL, NULL)
RAISERROR(15247,-1,-1)
RETURN ( 1 )
END
要查看错误15247,您可以使用
SELECT *
FROM sys.messages
WHERE message_id = 15247 and language_id = 1033
返回
用户无权执行此操作。
答案 1 :(得分:0)
确保在SQL Server Management Studio中启用了sysadmin
和securityadmin
服务器角色。
为此,请在SQL Server Management Studio中执行以下操作:
Security
Login
securityadmin
sysadmin