我有一个拥有200多个数据库的多租户数据库服务器。我可以在所有这些数据库上打开服务代理而不影响服务器的性能吗?这对服务器有很大影响吗?
答案 0 :(得分:4)
激活数据库上的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'
这是我在上一个客户端实现Service Broker时发现非常有用的基本Service Broker演练的一个很棒的链接。
https://www.simple-talk.com/sql/learn-sql-server/service-broker-foundations-workbench/