授予所有服务代理对象的权限

时间:2016-03-01 10:29:15

标签: sql sql-server tsql service service-broker

有谁知道如何在MS SQL Server数据库中授予用户对所有Service Broker对象(即合同,消息类型,远程绑定,路由或服务)的权限?

我知道可以逐个授予对象权限。但是我们有几十个,所以想知道是否有任何方法可以减少麻烦。

我们不想使用“sysadmin”,因为它太多了。

任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

简而言之,没有像db_datareader这样的内置角色授予所有服务代理对象的所有权限。我的建议是创建数据库角色,为其授予必要的权限,然后将适当的用户放入角色中。为了引导它,您可以在系统视图上编写一些动态SQL,例如'sys.service_queues`,以便为您生成grant语句。例如:

select concat('grant receive on ', 
   quotename(schema_name(schema_id)), 
   '.', 
   quotename(object_name(object_id)), 
   ' to [YourRole]'
)
from sys.service_queues;

继续前进,让纪律在创建时授予适当的权限。