Windows ユーザーのコンテキストで実行される Powershell スクリプトがあります。このユーザーは、sysadmin サーバー ロールのメンバーである SQL 2012 インスタンスにログインしています。
スクリプトで、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
ここには2つの問題があります:
ここに表示されているようにスクリプトを実行すると、IS_SRVROLEMEMBER への呼び出しは期待どおり 0 を返しますが、domain\currentsysadmin ログインが sysadmin のメンバーであっても、ALTER SERVER ROLE への呼び出しは次を返します。
メッセージ 15151、レベル 16、状態 1、行 8 サーバー ロール 'sysadmin' は、存在しないか権限がないため、変更できません。
これを SA のコンテキストで EXECUTE AS ステートメントなしで実行すると、ALTER SERVER ROLE ステートメントは正常に実行されたように見えますが、domain\futuresysadmin ログインを確認すると、まだ sysadmin ロールのメンバーではありません。
domain\futuresystem ログインを sysadmin サーバー ロールに追加するにはどうすればよいですか?