Sql server 我可以在所有数据库上启用ServiceBroker吗?

Sql server 我可以在所有数据库上启用ServiceBroker吗?,sql-server,service-broker,Sql Server,Service Broker,我有一个拥有200多个数据库的多租户数据库服务器。我可以在所有这些数据库上启用service broker而不影响服务器的性能吗?这对服务器有很大影响吗?在数据库上激活Service Broker需要独占访问数据库,换句话说,需要终止所有现有连接,并回滚未提交的事务。您需要查询sys.databases并设置一个动态SQL语句来循环遍历数据库,以在所有数据库上激活ServiceBroker。没有服务器级别的命令来激活所有数据库上的Service Broker 在您开始在这些队列上创建消息类型、契

我有一个拥有200多个数据库的多租户数据库服务器。我可以在所有这些数据库上启用service broker而不影响服务器的性能吗?这对服务器有很大影响吗?

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

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

下面是激活ServiceBroker的代码,请再次注意,因为它将终止所有连接并回滚所有未提交的事务

ALTER DATABASE MyDatabase
SET ENABLE_BROKER 
WITH ROLLBACK IMMEDIATE 
GO 
在激活ServiceBroker之前,您可以运行一个快速查询,查看它是否已被激活

SELECT is_broker_enabled FROM sys.databases WHERE name = 'MyDatabase'
这是基本ServiceBroker演练的一个很好的链接,我在上一个客户端实现ServiceBroker时发现它非常有用


谢谢您提供的信息。我们已经实现了Service broker,但正在考虑在服务器上的所有200多个数据库上启用。只有少数数据库会有消息,其余的将处于空闲状态。我不知道这个问题的答案,但我想,为db启用该设置一定会有一些开销,否则默认情况下它将处于启用状态。如果是我,我只会在必要时启用它。@BenThul默认情况下它是打开的。@RemusRusanu-Hmm。。。我不知道这一点:在我的本地开发副本上,模型已启用“代理”,设置为0,我知道我没有明确地这样设置。@RemusRusanu..我们在6台服务器上至少有500多个数据库,我们一直有选择地打开service broker,到目前为止还没有发现任何问题。我们希望现在打开所有数据库上的service broker,并确保它不会占用内存。我们将在50%的数据库上使用service broker,消息量将非常低too@user370844:监控正常运行。