有谁知道如何在MS SQL Server数据库中授予用户对所有Service Broker对象(即合同,消息类型,远程绑定,路由或服务)的权限?
我知道可以逐个授予对象权限。但是我们有几十个,所以想知道是否有任何方法可以减少麻烦。
我们不想使用“sysadmin”,因为它太多了。
任何想法都会受到赞赏。
答案 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;
继续前进,让纪律在创建时授予适当的权限。