0
私は2つのログインがありますlogin1
とlogin2
です。 login1
にはsysadmin
というサーバーロールがあり、login2
に条件付きでいくつかのアクセス許可をlogin1
のコンテキストで付与したいとします。ログインに権限を追加するには、SQL Serverに権限がない場合はどうすればいいですか?
グーグルでは、ユーザー(現在のユーザー)に何らかの許可があるかどうかをテストするために、HAS_PERMS_BY_NAME
を使用することができます。だから私は、次のコードを書いた:
EXECUTE AS LOGIN = 'login2';
IF HAS_PERMS_BY_NAME(NULL, NULL, 'VIEW DEFINITION') != 1
GRANT VIEW ANY DEFINITION TO login2;
IF HAS_PERMS_BY_NAME(NULL, NULL, 'VIEW SERVER STATE') != 1
GRANT VIEW SERVER STATE TO login2;
REVERT;
をしかし、私はそれを実行したとき、私は、次のエラーを得た:私はないですlogin2
の文脈、下の権限を付与していますので、合理的だ
Cannot grant, deny, or revoke permissions to sa, dbo, entity owner, information_schema, sys, or yourself.
正しい。だから私はコードを変更しました:
EXECUTE AS LOGIN = 'login2';
IF HAS_PERMS_BY_NAME(NULL, NULL, 'VIEW DEFINITION') != 1
BEGIN
REVERT;
GRANT VIEW ANY DEFINITION TO login2;
END
EXECUTE AS LOGIN = 'login2';
IF HAS_PERMS_BY_NAME(NULL, NULL, 'VIEW SERVER STATE') != 1
BEGIN
REVERT;
GRANT VIEW SERVER STATE TO login2;
END
私はそれを実行すると、まったく同じエラーメッセージが表示されます。誰でも私の正しい方向性を指すのに役立ちますか?ありがとう。
=「login2''ない 'login'などのユーザーとして実行してみ' – artm