Как Добавить пользователя 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

У меня два вопроса здесь:

  1. когда я запускаю сценарий, как он отображается здесь, вызов IS_SRVROLEMEMBER возвращает 0 как ожидалось, но даже если доменcurrentsysadmin login является членом sysadmin, вызов ALTER SERVER ROLE возвращает:

    Msg 15151, Уровень 16, Состояние 1, Строка 8 Невозможно изменить роль сервера "sysadmin", поскольку она не существует или у вас нет разрешения.

  2. когда я запускаю это в контексте 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 другому пользователю.