对象上的SELECT权限被拒绝

时间:2008-12-05 06:55:57

标签: sql-server security roles

如果在SqlServer中创建了自定义角色,我将其添加到db__denydatareader和db__denydatawriter角色中。我想通过db并授予所有neccersary存储过程的exec权限。

一切正常,调用那些sps运行正常。一个例外是使用sp_executesql执行动态sql的存储过程。这说不清楚

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

有没有办法授予角色运行此查询的权限,而不给予它对基础表的选择权限?

我想我想要做的是在sys.sp_executesql上授予exec,但仅限于某种情况。

2 个答案:

答案 0 :(得分:3)

您可以为使用execute_sql的存储过程创建一个新用户,授予他所需权限,然后添加到过程定义WITH EXECUTE AS'MyUser'。 See MSDN.

答案 1 :(得分:0)

使用以下语句。它对我有用。

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

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