2

db__denydatareader および db__denydatawriter ロールに追加した SqlServer 内にカスタム ロールを作成した場合。私は、データベースを通過し、必要なすべてのストアドプロシージャに実行権限を付与したと思います。

すべてが正常に動作し、これらの sps を呼び出すと正常に動作します。1 つの例外は、sp_executesql を使用して動的 SQL を実行するストアド プロシージャです。これは言って失敗します

The SELECT permission was denied on the object 'listing_counter', database 'Cannla', schema 'dbo'.

基になるテーブルへの選択アクセス権を付与せずに、このクエリを実行する権限をロールに付与する方法はありますか?

私がやりたいことは、sys.sp_executesql で exec を許可することだと思いますが、特定の場合に限られます。

4

2 に答える 2

3

execute_sql を使用するストアド プロシージャ専用の新しいユーザーを作成し、彼に必要な権限を付与してから、WITH EXECUTE AS 'MyUser' をプロシージャ定義に追加できます。 MSDN を参照してください。

于 2008-12-05T07:28:14.000 に答える
0

そのために次のステートメントを使用して使用します。それは私のために働いた。

sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ] [ , [ @provider= ] 'provider_name' ]

 [ , [ @datasrc= ] 'data_source' ] 
 [ , [ @location= ] 'location' ] 
 [ , [ @provstr= ] 'provider_string' ] 
 [ , [ @catalog= ] 'catalog' ] 
于 2008-12-05T07:05:22.283 に答える