我可以在我的所有数据库上打开服务代理吗?

Can I turn on service broker on all my databases?

我有一个超过 200 个的多租户数据库服务器 databases.Can 我在所有这些数据库上打开服务代理而不影响服务器的性能?这对服务器有很大影响吗?

在数据库上激活 Service Broker 需要独占访问数据库,换句话说,所有现有连接都需要终止,未提交的事务需要回滚。您需要查询 sys.databases 并设置一个动态 SQL 语句来遍历数据库以在所有数据库上激活 Service Broker。没有用于在所有数据库上激活 Service Broker 的服务器级命令。

在您开始在这些队列上创建消息类型、合同、队列和服务并开始累积数据之前,激活 Service Broker 不会对服务器产生影响。

这是激活 Service Broker 的代码,再次当心,因为它会终止所有连接并回滚所有未提交的事务。

ALTER DATABASE MyDatabase
SET ENABLE_BROKER 
WITH ROLLBACK IMMEDIATE 
GO 

在激活 Service Broker 之前,您可以运行快速查询它是否已经被激活。

SELECT is_broker_enabled FROM sys.databases WHERE name = 'MyDatabase'

这是一个很棒的 link 基本 Service Broker 演练,我发现在我的最后一个客户上实施 Service Broker 时非常有用。

https://www.simple-talk.com/sql/learn-sql-server/service-broker-foundations-workbench/