2008-12-05 56 views
2

如果已經創建了我加入db__denydatareader和db__denydatawriter角色的SqlServer中的自定義角色。我想通過數據庫並授予執行權限給所有的壞死存儲過程。SELECT權限被拒絕的對象

一切工作正常,調用這些sps將運行良好。一個例外是使用sp_executesql執行動態sql的存儲過程。這沒有說

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

是否有任何方法來授予角色權限運行此查詢而不會給它選擇訪問基礎表?

我想我想要做的是在sys.sp_executesql上授予exec,但只在某些情況下。

回答

2

您可以直接創建一個新用戶對於使用execute_sql的存儲過程,授予他需要的權限,然後將過程定義添加到WITH EXECUTE AS'MyUser'中。 See MSDN.

+1

這是非常酷,看起來它會做的伎倆。謝謝 – mjallday 2008-12-05 07:34:57

0

對此使用以下語句。它爲我工作。

的sp_addlinkedserver [@服務器= '服務器'[[@ srvproduct =] 'PRODUCT_NAME'] [[@供應商=] 'PROVIDER_NAME']

[ , [ @datasrc= ] 'data_source' ] 
[ , [ @location= ] 'location' ] 
[ , [ @provstr= ] 'provider_string' ] 
[ , [ @catalog= ] 'catalog' ]