オブジェクトに対するSELECT許可が拒否されました
-
19-08-2019 - |
質問
db__denydatareaderおよびdb__denydatawriterロールに追加したSqlServer内にカスタムロールを作成した場合。私はデータベースを調べ、すべての必要なストアドプロシージャにexec権限を付与したと思います。
すべてが正常に動作し、それらのspsを呼び出すと正常に実行されます。 1つの例外は、sp_executesqlを使用して動的SQLを実行するストアドプロシージャです。これは
と言って失敗しますThe SELECT permission was denied on the object 'listing_counter', database 'Cannla', schema 'dbo'.
基礎となるテーブルへの選択アクセス権を付与せずに、このクエリを実行するロールパーミッションを付与する方法はありますか?
私がやりたいのは、sys.sp_executesqlでexecを付与することですが、特定の場合のみです。
解決
execute_sqlを使用するストアドプロシージャだけに新しいユーザーを作成し、必要な権限を付与してから、EXECUTE AS 'MyUser'を使用してプロシージャ定義に追加できます。 MSDNを参照してください。
他のヒント
そのために次のステートメントを使用して使用します。うまくいきました。
sp_addlinkedserver [@ server =] 'server' [、[@ srvproduct =] 'product_name'] [、[@ provider =] 'provider_name']
[ , [ @datasrc= ] 'data_source' ]
[ , [ @location= ] 'location' ]
[ , [ @provstr= ] 'provider_string' ]
[ , [ @catalog= ] 'catalog' ]
所属していません StackOverflow