2008-12-05 71 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' ]