SQL Server は 、Service Broker の会話 の進行状況を報告する Broker:Conversation イベントを生成します。
Broker:会話イベントクラスデータ列
| データ列 | タイプ | 説明 | 列番号 | フィルターの適用 |
|---|---|---|---|---|
| ApplicationName | nvarchar |
SQL Server のインスタンスへの接続を作成したクライアント アプリケーションの名前。 この列には、プログラムの表示名ではなく、アプリケーションによって渡された値が設定されます。 | 10 | イエス |
| ClientProcessID | int |
クライアント アプリケーションが実行されているプロセスにホスト コンピューターによって割り当てられた ID。 クライアントでクライアント プロセス ID が指定されると、このデータ列が作成されます。 | 9 | イエス |
| DatabaseID | int |
USE データベース ステートメントで指定された データベース の ID。 USE データベースステートメントが発行されていない場合は、既定のデータベースの ID。 SQL Server Profiler では、 ServerName データ列がトレースにキャプチャされ、そのサーバーが利用可能な場合、データベースの名前が表示されます。 DB_ID関数を使用して、データベースの値を決定します。 | 3 | イエス |
| EventClass | int |
キャプチャされたイベント クラスの種類。 Broker:Conversation の場合は常に 124。 | 二十七 | いいえ |
| EventSequence | int |
このイベントのシーケンス番号。 | 51 | いいえ |
| EventSubClass | nvarchar |
イベント サブクラスの型。 これにより、各イベント クラスに関する詳細情報が提供されます。 | 21 (二十一) | イエス |
| GUID | uniqueidentifier |
ダイアログの会話 ID。 この識別子はメッセージの一部として送信され、会話の両側で共有されます。 | 54 | いいえ |
| HostName | nvarchar |
クライアントが実行されているコンピューターの名前。 このデータ列には、クライアントがホスト名を指定している場合にデータが格納されます。 ホスト名を確認するには、 HOST_NAME 関数を使用します。 | 8 | イエス |
| IsSystem | int |
イベントがシステム プロセスとユーザー プロセスのどちらで発生したか。 0 = ユーザー 1 = システム |
六十 | いいえ |
| LoginSid | image |
ログイン ユーザーのセキュリティ ID 番号 (SID)。 各 SID はサーバーのログインごとに一意です。 | 41 | イエス |
| MethodName | nvarchar |
会話が属する会話グループ。 | 47 | いいえ |
| NTDomainName | nvarchar |
ユーザーが属している Windows ドメイン。 | 7 | イエス |
| NTUserName | nvarchar |
このイベントを生成した接続を所有するユーザーの名前。 | 6 | イエス |
| ObjectName | nvarchar |
ダイアログの会話識別子。 | 34 | いいえ |
| 優先順位 | int |
会話の優先度レベル | 5 | イエス |
| RoleName | nvarchar |
会話ハンドルの役割。 これは イニシエーター または ターゲットです。 | 三十八 | いいえ |
| ServerName | nvarchar |
トレース対象の SQL Server のインスタンスの名前。 | 26 | いいえ |
| 重症度 | int |
このイベントでエラーが報告された場合の SQL Server エラーの重大度。 | 二十九 | いいえ |
| SPID | int |
クライアントに関連付けられているプロセスに SQL Server によって割り当てられるサーバー プロセス ID。 | 12 | イエス |
| StartTime | datetime |
イベントが開始された時刻 (使用可能な場合)。 | 14 | イエス |
| TextData | ntext |
会話の現在の状態。 次のいずれか: SO。 送信を開始しました。 SQL Server はこの会話に対して BEGIN CONVERSATION を処理しましたが、メッセージは送信されていません。 SI。 受信を開始しました。 データベース エンジンの別のインスタンスが現在のインスタンスとの新しい会話を開始しましたが、現在のインスタンスは最初のメッセージの受信を完了していません。 SQL Server は、最初のメッセージが分割されている場合や、SQL Server がメッセージを順不同に受信した場合に、この状態で会話を作成する可能性があります。 ただし、メッセージ交換に対して受信された最初の転送に完全な最初のメッセージが含まれている場合、SQL Server は CO 状態で会話を作成する可能性があります。 CO。 会話。 会話が確立され、会話の両側でメッセージを送信できます。 一般的なサービスのほとんどの通信は、会話がこの状態のときに発生します。 DI。 受信が切断されました 会話のリモート側が END CONVERSATION を発行しました。 会話のローカル側が END CONVERSATION を発行するまで、会話はこの状態のままになります。 アプリケーションは引き続き会話のメッセージを受信できます。 会話のリモート側が会話を終了したため、アプリケーションはこの会話でメッセージを送信できません。 アプリケーションが END CONVERSATION を発行すると、会話は Closed (CD) 状態に移行します。 DO. 送信が切断されました。 会話のローカル側が「END CONVERSATION」というコマンドを発行しました。 会話のリモート側が END CONVERSATION を確認するまで、会話はこの状態のままになります。 アプリケーションは、会話のメッセージを送受信できません。 会話のリモート側が END CONVERSATION を確認すると、会話は Closed (CD) 状態に移行します。 ER。 エラー。 このエンドポイントでエラーが発生しました。 [エラー]、[重大度]、および [状態] 列には、発生した特定のエラーに関する情報が含まれています。 CD。 終了状態。 会話エンドポイントは使用されなくなりました。 |
1 | イエス |
| トランザクション ID | bigint |
トランザクションのシステム割り当て ID。 | 4 | いいえ |
次の表に、このイベント クラスのサブクラス値を示します。
| 身分証明書 | サブクラス | 説明 |
|---|---|---|
| 1 | メッセージの送信 | データベース エンジンが SEND ステートメントを実行すると、SQL Server によって SEND メッセージ イベントが生成されます。 |
| 2 | 会話の終了 | データベース エンジンが WITH ERROR 句を含まない END CONVERSATION ステートメントを実行すると、SQL Server によって END CONVERSATION イベントが生成されます。 |
| 3 | エラーで会話を終了する | データベース エンジンが WITH ERROR 句を含む END CONVERSATION ステートメントを実行すると、SQL Server によって END CONVERSATION WITH ERROR イベントが生成されます。 |
| 4 | ブローカー開始エラー | SQL Server では、Service Broker がエラー メッセージを作成するたびに、 ブローカーによって開始される エラー イベントが生成されます。 たとえば、Service Broker がダイアログのメッセージを正常にルーティングできない場合、ブローカーはダイアログのエラー メッセージを作成し、このイベントを生成します。 SQL Server では、アプリケーション プログラムがエラーで会話を終了するときに、このイベントは生成されません。 |
| 5 | 終了ダイアログ | Service Broker がダイアログを終了しました。 Service Broker は、ダイアログが続行できないが、エラーや会話の通常の終了ではない条件に応じてダイアログを終了します。 たとえば、サービスを削除すると、Service Broker はそのサービスのすべてのダイアログを終了します。 |
| 6 | 受信したシーケンス メッセージ | SQL Server は、SQL Server がメッセージ シーケンス番号を含むメッセージを受信すると、 Received Sequenced Message イベント クラスを生成します。 すべてのユーザー定義メッセージの種類は、シーケンスされたメッセージです。 Service Broker は、次の 2 つの場合に、未受信メッセージを生成します。 Service Broker によって生成されたエラー メッセージは、キューに格納されません。 メッセージの受信確認が順序通りでない可能性があります。 効率を高める目的で、Service Broker には、シーケンスされたメッセージの一部として、使用可能なすべての受信確認メッセージが含まれます。 ただし、アプリケーションが一定期間内にシーケンスメッセージをリモート エンドポイントに送信しない場合、Service Broker はメッセージ受信確認用にシーケンスされていないメッセージを作成します。 |
| 7 | 会話終了を受信しました | SQL Server は、SQL Server が会話の反対側から終了ダイアログ メッセージを受信すると、Received END CONVERSATION イベントを生成します。 |
| 8 | エラーが発生した終了メッセージ交換を受信しました | SQL Server は、SQL Server が会話の反対側からユーザー定義エラーを受信すると、 RECEIVEED END CONVERSATION WITH ERROR イベントを生成します。 SQL Server は、SQL Server がブローカー定義エラーを受け取ったときに、このイベントを生成しません。 |
| 9 | 受信したブローカー エラー メッセージ | SQL Server は、Service Broker が会話の反対側から ブローカー定義のエラー メッセージを受信すると、受信ブローカー エラー メッセージ イベントを生成します。 アプリケーションによって生成されたエラー メッセージを Service Broker が受信した場合、SQL Server はこのイベントを生成しません。 たとえば、現在のデータベースに転送データベースへの既定のルートが含まれている場合、Service Broker は不明なサービス名を持つメッセージを転送データベースにルーティングします。 そのデータベースがメッセージをルーティングできない場合、そのデータベースのブローカーはエラー メッセージを作成し、そのエラー メッセージを現在のデータベースに返します。 現在のデータベースが転送データベースからブローカーによって生成されたエラーを受け取ると、現在のデータベースは 受信ブローカー エラー メッセージ イベントを生成します。 |
| 10 | END CONVERSATION承認を受信しました | SQL Server は、会話の反対側がスレッドのこの側から送信された終了ダイアログまたはエラー メッセージを確認すると 、Received END CONVERSATION Ack イベント クラスを生成します。 |
| 11 | BEGIN DIALOG | データベース エンジンが BEGIN DIALOG コマンドを実行すると、SQL Server によって BEGIN DIALOG イベントが生成されます。 |
| 12 | 作成されたダイアログ | Sql Server は、Service Broker がダイアログの エンドポイントを作成するときに、Dialog Created イベントを生成します。 Service Broker は、現在のデータベースがダイアログのイニシエーターかターゲットかに関係なく、新しいダイアログが確立されるたびにエンドポイントを作成します。 |
| 13 | クリーンアップを使用して会話を終了する | データベース エンジンが WITH CLEANUP 句を含む END CONVERSATION ステートメントを実行すると、SQL Server によって END CONVERSATION WITH CLEANUP イベントが生成されます。 |