我们有一个 Service Broker,它监听数据库的更改,然后根据更改的数据将消息发送到队列。如果登录的用户具有 sysadmin 或以下服务器角色,则此方法有效:
我们有一个 Service Broker,它监听数据库的更改,然后根据更改的数据将消息发送到队列。如果登录的用户具有 sysadmin 或 db_owner 的服务器角色,则此方法有效。我们希望其他用户也能使用这种方法,但不希望他们拥有 sysadmin 或 db_owner 级别的权限。我创建了一个新角色,但我不确定需要授予什么权限才能让 Service Broker 正常工作。有什么想法吗?
我创建了一个新角色,并授予测试用户该角色的成员资格。我已授予该角色在队列上的接收权限和服务上的发送权限。例如:
GRANT RECEIVE ON [dbo].[QueryNotificationErrorsQueue] to [db_servicebrokeruser]
GRANT RECEIVE ON [dbo].[EventNotificationErrorsQueue] to [db_servicebrokeruser]
GRANT RECEIVE ON [dbo].[ServiceBrokerQueue] to [db_servicebrokeruser]
GRANT SEND ON SERVICE:: [http://schemas.microsoft.com/SQL/Notifications/QueryNotificationService] to [db_servicebrokeruser]
GRANT SEND ON SERVICE:: [http://schemas.microsoft.com/SQL/ServiceBroker/ServiceBroker] to [db_servicebrokeruser]
GRANT SEND ON SERVICE:: [http://schemas.microsoft.com/SQL/Notifications/EventNotificationService] to [db_servicebrokeruser]
我仍然没有看到消息流向队列,也没有看到任何错误。