2

如果在 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 权限,但仅限于特定情况。

4

2 回答 2

3

您可以仅为使用 execute_sql 的存储过程创建一个新用户,授予他所需的权限,然后添加到带有 EXECUTE AS 'MyUser' 的过程定义中。 请参阅 MSDN。

于 2008-12-05T07:28:14.000 回答
0

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

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

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