通过


如何:在数据库中激活 Service Broker 消息传递(Transact-SQL)

适用于SQL ServerAzure SQL 托管实例

默认情况下, Service Broker 处于启用状态,创建数据库时,消息传送在数据库中处于活动状态。 当消息传递不处于活动状态时,消息将保留在传输队列中。 若要确定 Service Broker 是否在数据库中处于活动状态,请检查 sys.databases 目录视图中的 is_broker_enabled 列。

注意

激活 Service Broker 后,就可以向数据库传递消息。 要从实例外部发送和接收消息,必须创建一个 Service Broker 终结点。

禁用 Service Broker

创建数据库时,默认情况下会启用 Service Broker。 可以使用 ALTER DATABASE 语句在数据库中禁用 Service Broker 消息传递。 禁用 Service Broker 时,消息将保留在传输队列中,不会传递到数据库。

若要禁用 Service Broker,请运行以下 Transact-SQL 脚本:

USE master;
GO
ALTER DATABASE [<database name>]
    SET DISABLE_BROKER;    

注意

如果在迁移到 Azure SQL 托管实例的数据库上禁用 Service Broker,则无法在目标 SQL 托管实例上启用 Service Broker。 若要在目标 SQL 托管实例上使用 Service Broker,请在迁移到 SQL 托管实例之前在源 SQL Server 数据库上启用它。

在数据库中启用 Service Broker

如果 Service Broker 已禁用,则可以使用 ALTER DATABASE 语句来设置 ENABLE_BROKER 该选项来启用它。

若要启用 Service Broker,请运行以下 Transact-SQL 脚本:

USE master;
GO

ALTER DATABASE [<database name>]
    SET ENABLE_BROKER;
GO

检查服务代理状态

若要检查数据库的 Service Broker 的状态,请运行以下 Transact-SQL 脚本:

SELECT name AS [Database Name], is_broker_enabled AS [Service Broker Enabled]
FROM sys.databases
WHERE name = '[<database name>]';

Azure SQL 托管实例中的服务代理 (Service Broker)

在 Azure SQL 托管实例中,Service Broker 默认处于启用状态,无法禁用。 不支持以下 ALTER DATABASE 选项:

  • ENABLE_BROKER
  • DISABLE_BROKER