授予对所有服务代理对象的权限
Grant permissions on all service broker objects
有谁知道如何授予用户对 MS SQL 服务器数据库中所有 Service Broker 对象(即合同、消息类型、远程绑定、路由或服务)的权限?
我知道可以对对象逐一授予权限。但是我们有几十个,所以想看看有没有什么聪明的方法可以减少麻烦。
我们不想使用 "sysadmin",因为它太多了。
如有任何想法,我们将不胜感激。
简而言之,没有像 db_datareader
这样的内置角色授予对所有服务代理对象的所有权限。我的建议是创建一个数据库角色,授予它必要的权限,然后将适当的用户放入角色中。为了 bootstrap 这个,你可以在系统视图上写一些动态 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;
展望未来,有纪律在创建时授予适当的权限。
有谁知道如何授予用户对 MS SQL 服务器数据库中所有 Service Broker 对象(即合同、消息类型、远程绑定、路由或服务)的权限?
我知道可以对对象逐一授予权限。但是我们有几十个,所以想看看有没有什么聪明的方法可以减少麻烦。
我们不想使用 "sysadmin",因为它太多了。
如有任何想法,我们将不胜感激。
简而言之,没有像 db_datareader
这样的内置角色授予对所有服务代理对象的所有权限。我的建议是创建一个数据库角色,授予它必要的权限,然后将适当的用户放入角色中。为了 bootstrap 这个,你可以在系统视图上写一些动态 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;
展望未来,有纪律在创建时授予适当的权限。