如何为 Amazon Relational Database Service(Amazon RDS)SQL Server 开启和关闭 Service Broker?
简短描述
Amazon RDS 支持 Service Broker,但 Amazon RDS 不支持 Service Broker 端点。有关 Service Broker 的更多信息,请参阅有关 Service Broker 的 Microsoft 文档。
解决方法
当您开启 Service Broker 时,Amazon RDS 会请求数据库锁定。在开启 Service Broker 之前,您需要关闭该数据库所有打开的连接。
1. 检查是否已开启 Service Broker:
select name,is_broker_enabled from sys.databases
where name= [YourDB]
2. 如果尚未开启 Service Broker,则将生成一个新的 Service Broker:
ALTER DATABASE [YourDB] SET NEW_BROKER;
GO
3. 在现有的数据库上开启 Service Broker:
ALTER DATABASE [YourDB] SET ENABLE_BROKER;
GO
如果您运行的是多可用区部署,请运行以下命令:
ALTER DATABASE [YourDB] SET PARTNER OFF;
GO
然后,在多可用区部署中再次开启 Service Broker:
ALTER DATABASE [YourDB] SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE
要在现有的数据库上关闭 Service Broker,请运行以下命令:
ALTER DATABASE [YourDB] SET DISABLE_BROKER;
GO
您无法在已经属于可用性组的数据库上开启 Service Broker。如果您在这样的数据库上执行上述解决方法,则会收到类似于以下内容的错误:
ALTER DATABASE [test] SET PARTNER OFF;<br>GO <br>Msg 1416, Level 16, State 1, Line 1<br>Database "test" is not configured for database mirroring.
因此,请先开启 Service Broker,然后再将其添加到可用性组。为此,请将 RDS 数据库转换为单个可用区,然后开启 Service Broker。
1.将您的 RDS 数据库转换为单个可用区。
2.开启 Service Broker:
<p>ALTER DATABASE [DBName ] SET NEW_BROKER;<br>GO
</p><p>ALTER DATABASE [DBName ] SET ENABLE_BROKER;<br>GO
</p>
3.验证 Service Broker 是否已开启:
select name,is_broker_enabled from sys.databases<br>
where name= [DBName ]
4.将您的 RDS 数据库转换回多可用区。
相关信息
Amazon RDS 上的 Microsoft SQL Server
将 Microsoft SQL Server 数据库迁移到 AWS Cloud