質問

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' ] 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top