我有一个在Windows用户的上下文中执行的Powershell脚本。此用户登录SQL 2012实例,该实例是sysadmin服务器角色的成员。
我希望脚本在SQL实例(也有相应的Windows用户)上添加另一个登录到sysadmin服务器角色。
要在Management Studio中尝试此操作(连接为SA),我使用以下脚本:
execute as user = 'domain\currentsysadmin'
IF IS_SRVROLEMEMBER('sysadmin', 'domain\futuresysadmin') != 1
ALTER SERVER ROLE [sysadmin] ADD MEMBER [domain\futuresysadmin]
revert
我有两个问题:
当我运行此处显示的脚本时,对IS_SRVROLEMEMBER的调用按预期返回0,但即使domain \ currentsysadmin登录是sysadmin的成员,对ALTER SERVER ROLE的调用也会返回:
Msg 15151,Level 16,State 1,Line 8 无法更改服务器角色'sysadmin',因为它不存在或您没有权限。
当我在没有EXECUTE AS语句的SA上下文中运行它时,ALTER SERVER ROLE语句似乎成功运行,但是当我检查域\ futuresysadmin登录时,它仍然不是sysadmin的成员作用
如何将域\期货系统登录添加到sysadmin服务器角色?
答案 0 :(得分:4)
使用sp_addsrvrolemember
:
EXEC master..sp_addsrvrolemember @loginame = N'domain\futuresysadmin', @rolename = N'sysadmin'
更新: 用户上下文切换不会继承任何服务器角色,例如sysadmin。在阅读文档时:“未明确授予用户令牌中的身份或通过角色成员身份授予的服务器级权限。”切换用户上下文时,您的用户不再有权将sysadmin授予其他用户。