Как Добавить пользователя Windows в роль сервера sysadmin в SQL Server 2012? [закрытый]
У меня есть сценарий Powershell, который выполняется в контексте пользователя Windows. Этот пользователь имеет имя входа в экземпляр SQL 2012, который является членом роли сервера sysadmin.
Я хочу, чтобы скрипт добавил еще одно имя входа в экземпляр SQL (который также имеет соответствующего пользователя Windows) к роли сервера sysadmin.
чтобы попробовать это в Management Studio (подключен как SA), я использую следующий скрипт:
execute as user = 'domaincurrentsysadmin'
IF IS_SRVROLEMEMBER('sysadmin', 'domainfuturesysadmin') != 1
ALTER SERVER ROLE [sysadmin] ADD MEMBER [domainfuturesysadmin]
revert
У меня два вопроса здесь:
-
когда я запускаю сценарий, как он отображается здесь, вызов IS_SRVROLEMEMBER возвращает 0 как ожидалось, но даже если доменcurrentsysadmin login является членом sysadmin, вызов ALTER SERVER ROLE возвращает:
Msg 15151, Уровень 16, Состояние 1, Строка 8 Невозможно изменить роль сервера "sysadmin", поскольку она не существует или у вас нет разрешения.
когда я запускаю это в контексте SA без EXECUTE В качестве инструкции инструкция ALTER SERVER ROLE, по-видимому, выполняется успешно, но когда я проверяю имя Входа domainfuturesysadmin, она все еще не является членом роли sysadmin
Как добавить имя Входа domainfuturesystem в роль сервера sysadmin?
1 ответов
использовать sp_addsrvrolemember
:
EXEC master..sp_addsrvrolemember @loginame = N'domain\futuresysadmin', @rolename = N'sysadmin'
обновление: Переключение контекста пользователя не наследует роли сервера, например sysadmin. При чтении документации: "разрешения уровня сервера, явно предоставленные удостоверениям в маркере пользователя или через членство в роли, не соблюдаются."Когда вы переключаете пользовательский контекст, ваш пользователь больше не имеет права предоставлять sysadmin другому пользователю.