如果在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,但仅限于某种情况。
答案 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' ]