SQL REVOKE
コマンドのパラメータを設定するにはどうすればよいですか?SQL REVOKEコマンドをパラメータ化する方法
DECLARE @ViewName nvarchar = 'MyViewName'
DECLARE @UserRole nvarchar = 'MyRoleName'
REVOKE SELECT ON [@ViewName] TO [@UserRole]
出力次のエラー:
Cannot find the object '@ViewName', because it does not exist or you do not have permission.`
が、私はこれを解決するために、動的SQLを使用する必要があるか、別の方法はありますか?
私の実際の使用事例は、ASP.NET SqlDataClient
にあり、コードが生成されているので、私はそれを制御できません。 SQL(SQLプロファイラによって盗聴)に送信されるコードは次のとおりです。
exec sp_executesql N'REVOKE SELECT ON [@ViewName] TO [@UserRole]',N'@ViewName nvarchar(24),@UserRole nvarchar(12)',@ViewName=N'MyViewName',@UserRole=N'MyUserRole'
動的SQLを使用する必要があります。 –
'GRANT'と' REVOKE'はかなりの権限を必要とするので、動的SQLを構築し、別の資格情報でコマンドを実行できるストアドプロシージャでこれを行うのが魅力的です。そうすることで、ストアドプロシージャへのアクセスを制御し、監査が必要になった場合に監査を追加し、最後にパラメータを使用し続けることができるようにすることで、REVOKEに権限を選択的に割り当てることができます。 –
正解のように聞こえる@JeroenMostertあなたが答えとしてそれを入れ、小さな例を追加するならば、私は正しい印をつけます。 – Adam