【发布时间】:2016-03-01 10:29:15
【问题描述】:
有谁知道如何授予用户对 MS SQL Server 数据库中所有 Service Broker 对象(即合同、消息类型、远程绑定、路由或服务)的权限?
我知道可以对对象逐一授予权限。但是我们有几十个,所以想看看有没有什么聪明的方法可以减少麻烦。
我们不想使用“sysadmin”,因为它太多了。
任何想法都将不胜感激。
【问题讨论】:
标签: sql sql-server tsql service service-broker
有谁知道如何授予用户对 MS SQL Server 数据库中所有 Service Broker 对象(即合同、消息类型、远程绑定、路由或服务)的权限?
我知道可以对对象逐一授予权限。但是我们有几十个,所以想看看有没有什么聪明的方法可以减少麻烦。
我们不想使用“sysadmin”,因为它太多了。
任何想法都将不胜感激。
【问题讨论】:
标签: sql sql-server tsql service service-broker
简而言之,没有像db_datareader 这样的内置角色可以授予对所有服务代理对象的所有权限。我的建议是创建一个数据库角色,为其授予必要的权限,然后将适当的用户放入该角色。为了引导它,您可以在系统视图(如“sys.service_queues”)上编写一些动态 SQL 来为您生成授权语句。例如:
select concat('grant receive on ',
quotename(schema_name(schema_id)),
'.',
quotename(object_name(object_id)),
' to [YourRole]'
)
from sys.service_queues;
今后,有纪律在创建时授予适当的权限。
【讨论】: