2016-03-01 57 views
0

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

我知道权限可以逐一授予对象。但我们有数十个,所以想看看有没有什么办法可以减少麻烦。

我们不想使用“系统管理员”,因为它太多了。

任何想法,将不胜感激。

回答

1

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

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

未来,有纪律在创建时授予适当的权限。

+0

感谢Ben的细节。非常感激。标记为答案。 – DIB