SQL Server Service Broker (SQL Server Service Broker)SQL Server Service Broker

適用対象: ○SQL Server ○Azure SQL Database (Managed Instance のみ) ×Azure SQL Data Warehouse ×Parallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Server Service BrokerService Broker は、 SQL Server データベース エンジンSQL Server Database Engineのメッセージング アプリケーションおよびキューイング アプリケーションをネイティブで サポートします。Service BrokerService Broker provides native support for messaging and queuing applications in the SQL Server データベース エンジンSQL Server Database Engine. これにより、 データベース エンジンDatabase Engine コンポーネントを使用して異種データベース間の通信を行う高度なアプリケーションを簡単に作成できるようになるため、This makes it easier for developers to create sophisticated applications that use the データベース エンジンDatabase Engine components to communicate between disparate databases. Service BrokerService Broker を使用すれば、信頼性の高い分散アプリケーションを簡単に開発できます。Developers can use Service BrokerService Broker to easily build distributed and reliable applications.

アプリケーション開発者は、 Service BrokerService Broker を使用すれば、通信やメッセージングの複雑な内部のプログラミングを行わなくても、データ ワークロードを複数のデータベースに分散できます。Application developers who use Service BrokerService Broker can distribute data workloads across several databases without programming complex communication and messaging internals. Service BrokerService Broker によってメッセージ交換のコンテキスト内で通信パスが処理されるので、開発やテストの作業を削減できます。This reduces development and test work because Service BrokerService Broker handles the communication paths in the context of a conversation. また、パフォーマンスも向上します。It also improves performance. たとえば、Web サイトをサポートするフロントエンド データベースで情報の記録を行い、処理負荷の高いタスクはバックエンド データベースのキューに送信できます。For example, front-end databases supporting Web sites can record information and send process intensive tasks to queue in back-end databases. Service BrokerService Broker では、すべてのタスクがトランザクションのコンテキストで管理されるため、信頼性と技術的な一貫性を確保できます。ensures that all tasks are managed in the context of transactions to assure reliability and technical consistency.

Service Broker のドキュメントの格納場所Where is the documentation for Service Broker?

Service BrokerService Broker のリファレンス ドキュメントは SQL Server 2017SQL Server 2017 のドキュメントに含まれています。The reference documentation for Service BrokerService Broker is included in the SQL Server 2017SQL Server 2017 documentation. リファレンス ドキュメントには次のセクションがあります。This reference documentation includes the following sections:

の概念、開発作業、および管理作業については、 以前に公開されたドキュメント Service BrokerService Broker を参照してください。See the previously published documentation for Service BrokerService Broker concepts and for development and management tasks. SQL Server 2017SQL Server 2017Service BrokerService Broker においてわずかな変更しか加えられていないため、 SQL Server 2017SQL Server 2017用のドキュメントは作成されていません。This documentation is not reproduced in the SQL Server 2017SQL Server 2017 documentation due to the small number of changes in Service BrokerService Broker in SQL Server 2017SQL Server 2017.

Service Broker の新機能What's new in Service Broker

SQL Server 2017SQL Server 2017で導入された大きな変更はありません。No significant changes are introduced in SQL Server 2017SQL Server 2017. SQL Server 2012 (11.x)SQL Server 2012 (11.x)では、以下の変更が導入されました。The following changes were introduced in SQL Server 2012 (11.x)SQL Server 2012 (11.x).

Service Broker と Azure SQL Database Managed InstanceService broker and Azure SQL Database Managed Instance

  • インスタンス間の Service Broker はサポートされていませんCross-instance service broker is not supported
  • sys.routes - 前提条件: sys.routes からアドレスを選択してください。sys.routes - Prerequisite: select address from sys.routes. すべてのルートでアドレスをローカルにする必要があります。Address must be LOCAL on every route. sys.routes をご覧ください。See sys.routes.
  • CREATE ROUTE - CREATE ROUTELOCAL 以外の ADDRESS と共に使用することはできません。CREATE ROUTE - you cannot use CREATE ROUTE with ADDRESS other than LOCAL. CREATE ROUTE をご覧ください。See CREATE ROUTE.
  • ALTER ROUTE では、LOCAL 以外の ADDRESS と共に ALTER ROUTE を使用することはできません。ALTER ROUTE cannot use ALTER ROUTE with ADDRESS other than LOCAL. ALTER ROUTE をご覧ください。See ALTER ROUTE.

メッセージを複数の対象サービスに送信可能 (マルチキャスト)Messages can be sent to multiple target services (multicast)

SEND (Transact-SQL) ステートメントの構文が拡張され、複数のメッセージ交換ハンドルをサポートすることにより、マルチキャストが有効になりました。The syntax of the SEND (Transact-SQL) statement has been extended to enable multicast by supporting multiple conversation handles.

メッセージがエンキューされている時間の公開Queues expose the message enqueued time

メッセージがキューに格納されている時間を示す新しい列 message_enqueue_timeがキューに追加されました。Queues have a new column, message_enqueue_time, that shows how long a message has been in the queue.

有害メッセージの処理の無効化が可能Poison message handling can be disabled

CREATE QUEUE (Transact-SQL) ステートメントおよび ALTER QUEUE (Transact-SQL) ステートメントでは、POISON_MESSAGE_HANDLING (STATUS = ON | OFF) 句を追加することによって有害メッセージの処理を無効化できるようになりました。The CREATE QUEUE (Transact-SQL) and ALTER QUEUE (Transact-SQL) statements now have the ability to enable or disable poison message handling by adding the clause, POISON_MESSAGE_HANDLING (STATUS = ON | OFF). カタログ ビュー sys.service_queues に、有害メッセージの処理が有効であるか無効であるかを示す is_poison_message_handling_enabled 列が追加されました。The catalog view sys.service_queues now has the column is_poison_message_handling_enabled to indicate whether poison message is enabled or disabled.

Service Broker での Always On のサポートAlways On support in Service Broker

詳細については、「 Service Broker と Always On 可用性グループ (SQL Server)」を参照してください。For more information, see Service Broker with Always On Availability Groups (SQL Server).