次の方法で共有


ssbdiagnose ユーティリティ (Service Broker)

適用対象: SQL Server Azure SQL Managed Instance

ssbdiagnose ユーティリティからは、Service Broker のメッセージ交換や Service Broker サービスの構成の問題が報告されます。 構成チェックは 2 つまたは 1 つのサービスに対して実行できます。 問題点は、コマンド プロンプト ウィンドウにユーザーが解釈できる形式で報告されるか、ファイルまたは別のプログラムにリダイレクトできる XML 形式で報告されます。

構文

ssbdiagnose
[ [ -XML ]
    [ -LEVEL { ERROR | WARNING | INFO } ]
  [ -IGNORE error_id ] [ ...n ]
    [ <baseconnectionoptions> ]
  { <configurationreport> | <runtimereport> }
]
| -?

<configurationreport> ::=
    CONFIGURATION
  { [ FROM SERVICE service_name
      [ <fromconnectionoptions> ]
      [ MIRROR <mirrorconnectionoptions> ]
    ]
    [ TO SERVICE service_name [ , broker_id ]
      [ <toconnectionoptions> ]
      [ MIRROR <mirrorconnectionoptions> ]
    ]
  }
    ON CONTRACT contract_name
  [ ENCRYPTION { ON | OFF | ANONYMOUS } ]

<runtime_report> ::=
    RUNTIME
    [ -SHOWEVENTS ]
        [ -NEW
         [ -ID { conversation_handle
                | conversation_group_id
                 | conversation_id
                  }
        ] [ ...n ]
        ]
    [ -TIMEOUT timeout_interval ]
    [ <runtimeconnectionoptions> ]

<baseconnectionoptions> ::=
  <connectionoptions>

<fromconnectionoptions> ::=
  <connectionoptions>

<toconnectionoptions> ::=
  <connectionoptions>

<mirrorconnectionoptions> ::=
  <connectionoptions>

<runtimeconnectionoptions> ::=
  [ CONNECT TO <connectionoptions> ] [ ...n ]

<connectionoptions> ::=
  [ -E | { -U login_id [ -P password ] } ]
  [ -S server_name [ \instance_name ] ]
  [ -d database_name ]
  [ -l login_timeout ]
  [ -N encryption_option ]
  [ -i hostname_in_certificate ]
  [ -C ]

コマンドライン オプション

-XML

ssbdiagnose の出力を XML 形式で生成することを指定します。 この出力は、ファイルまたは他のアプリケーションにリダイレクトできます。 -XML が指定されていない場合は、ssbdiagnose の出力がユーザーが解釈できる形式に設定されます。

-LEVEL { ERROR | WARNING | INFO }

報告するメッセージのレベルを指定します。

Value 説明
ERROR エラー メッセージのみを報告します。
WARNING (既定) エラー メッセージと警告メッセージを報告します。
INFO エラー メッセージ、警告メッセージ、および情報メッセージを報告します。

-IGNORE error_id

指定した error_id のエラーまたはメッセージがレポートから除外されます。 -IGNORE を複数回指定すると、複数のメッセージ ID を除外することができます。

<baseconnectionoptions>

接続オプションが特定の句に含まれていない場合に ssbdiagnose が使用する、基本的な接続情報を指定します。 特定の句で指定された接続情報は、baseconnectionoption の情報をオーバーライドします。 優先的に使用される接続情報は、パラメーターごとに判別されます。 たとえば、-S-d の両方が baseconnetionoptions で指定され、toconnetionoptions-d のみが指定されている場合、ssbdiagnosebaseconnetionoptions からの -Stoconnetionoptions からの -d を使用します。

CONFIGURATION

Service Broker サービスのペアまたは 1 つのサービスでの構成エラーのレポートを要求します。

FROM SERVICE service_name

メッセージ交換を開始するサービスを指定します。

<fromconnectionoptions>

発信側サービスが格納されているデータベースへの接続に必要な情報を指定します。 fromconnectionoptions が指定されていない場合、ssbdiagnose では baseconnectionoptions の接続情報を使用して発信側データベースに接続します。 fromconnectionoptions が指定されている場合は、発信側サービスが格納されているデータベースを含める必要があります。 fromconnectionoptions が指定されていない場合、baseconnectionoptions はイニシエーター データベースを指定する必要があります。

TO SERVICE service_name [ , broker_id ]

メッセージ交換の発信先サービスを指定します。

service_name: 発信先サービスの名前を指定します。

broker_id: 発信先データベースを示す Service Broker ID を指定します。 broker_id は GUID です。 発信先データベースで次のクエリを実行すると、この ID を検索できます。

SELECT service_broker_guid
FROM sys.databases
WHERE database_id = DB_ID();

<toconnectionoptions>

発信先サービスが格納されているデータベースへの接続に必要な情報を指定します。 toconnectionoptions が指定されていない場合、ssbdiagnose では baseconnectionoptions の接続情報を使用して発信先データベースに接続します。

MIRROR

関連する Service Broker サービスが、ミラー化されたデータベースでホストされます。 ssbdiagnose は、サービスへのルートがミラー化されたルートであることを確認します。この場合、MIRROR_ADDRESSCREATE ROUTE で指定されています。

<mirrorconnectionoptions>

ミラー データベースへの接続に必要な情報を指定します。 mirrorconnectionoptions が指定されていない場合、ssbdiagnose では baseconnectionoptions の接続情報を使用してミラー データベースに接続します。

ON CONTRACT contract_name

指定されたコントラクトを使用する構成のみを ssbdiagnose でチェックするように要求します。 ON CONTRACT が指定されていない場合、ssbdiagnose では、DEFAULT という名前のコントラクトに関するレポートが生成されます。

ENCRYPTION { ON | OFF | ANONYMOUS }

指定されたレベルの暗号化向けにダイアログが正しく構成されているかどうかを検証するように要求します。

  • ON: 既定の設定 完全ダイアログ セキュリティが構成されているかどうかを検証します。 証明書がダイアログの両側に配置されていること、リモート サービス バインドが存在すること、および発信先サービスに対する GRANT SEND ステートメントで発信側ユーザーを指定していることを確認します。

  • OFF: ダイアログ セキュリティが構成されていないかどうかを検証します。 証明書が配置されていないこと、リモート サービス バインドが作成されていないこと、および発信側サービスに対する GRANT SEND ステートメントで public ロールを指定していることを確認します。

  • ANONYMOUS: 匿名ダイアログ セキュリティが構成されているかどうかを検証します。 一方の証明書が配置されていること、リモート サービス バインドで匿名句が指定されていること、および発信先サービスに対する GRANT SEND ステートメントで public ロールを指定していることを確認します。

RUNTIME

Service Broker メッセージ交換の実行時エラーの原因である問題に関するレポートを要求します。 -NEW-ID も指定されていない場合、ssbdiagnose では、接続オプションで指定されたすべてのデータベース内のメッセージ交換をすべて監視します。 -NEW または -ID が指定されている場合、ssbdiagnose では、パラメーターで指定された ID の一覧が作成されます。

ssbdiagnose では、実行中に、実行時エラーを示す SQL Server Profiler イベントをすべて記録します。 また、指定された ID に対して発生するイベントに加え、システムレベルのイベントも記録します。 実行時エラーが検出されると、 ssbdiagnose では、関連付けられている構成に対して構成レポートを実行します。

既定では、出力レポートに実行時エラーは含まれず、構成の分析結果のみが含まれます。 レポートに実行時エラーを含めるには、-SHOWEVENTS を使用してください。

-SHOWEVENTS

ssbdiagnoseRUNTIME レポートの実行中に SQL Server Profiler イベントを報告するように指定します。 エラー状態と見なされるイベントのみが報告されます。 既定では、ssbdiagnose はエラー イベントを監視するだけで、エラー イベントをレポートに出力しません。

  • -NEW: ssbdiagnose が実行を開始した後に開始される最初のメッセージ交換を、実行時に監視するように要求します。

  • -ID: 指定されたメッセージ交換要素を実行時に監視するように要求します。 -ID は複数回指定できます。

メッセージ交換ハンドルを指定すると、関連するメッセージ交換のエンドポイントに関連付けられたイベントのみが報告されます。 メッセージ交換 ID を指定すると、そのメッセージ交換のすべてのイベントと、そのメッセージ交換の発信側と発信先のエンドポイントが報告されます。 メッセージ交換グループ ID が指定されている場合は、すべてのメッセージ交換のイベントと、メッセージ交換グループ内のエンドポイントが報告されます。

conversation_handle

アプリケーション内のメッセージ交換エンドポイントを識別する一意識別子です。 メッセージ交換ハンドルは、メッセージ交換の一方のエンドポイントに対して一意であり、発信側と発信先のエンドポイントのメッセージ交換ハンドルは異なります。

メッセージ交換ハンドルは、BEGIN DIALOG ステートメントの @dialog_handle パラメーターと、RECEIVE ステートメントの結果セットに含まれる conversation_handle 列によって、アプリケーションに返されます。

メッセージ交換ハンドルは、sys.transmission_queue および sys.conversation_endpoints カタログ ビューの conversation_handle 列に報告されます。

conversation_group_id

メッセージ交換グループを識別する一意識別子です。

メッセージ交換グループ ID は、GET CONVERSATION GROUP ステートメントの @conversation_group_id パラメーターと、RECEIVE ステートメントの結果セットに含まれる conversation_group_id 列によって、アプリケーションに返されます。

メッセージ交換グループ ID は、sys.conversation_groups および sys.conversation_endpoints カタログ ビューの conversation_group_id 列に報告されます。

conversation_id

メッセージ交換を識別する一意識別子です。 メッセージ交換 ID は、メッセージ交換の発信側と発信先の両方のエンドポイントで同じです。

メッセージ交換 ID は、sys.conversation_endpoints カタログ ビューの conversation_id 列に報告されます。

-TIMEOUT timeout_interval

RUNTIME レポートを実行する秒数を指定します。 -TIMEOUT が指定されていない場合、ランタイム レポートは無制限に実行されます。 -TIMEOUT は、CONFIGURATION レポートではなく、RUNTIME レポートでのみ使用されます。 -TIMEOUT が指定されていない場合に ssbdiagnose を終了したり、タイム-アウト間隔を経過する前にランタイム レポートを終了したりするには、Ctrl キーを押しながら C キーを押します。 timeout_interval は 1 から 2,147,483,647 までの数値にする必要があります。

<runtimeconnectionoptions>

監視対象のメッセージ交換要素に関連付けられたサービスが格納されているデータベースについての接続情報を指定します。 すべてのサービスが同じデータベースに格納されている場合は、CONNECT TO 句を 1 つ指定するだけで十分です。 サービスが異なるデータベースに格納されている場合は、各データベースに対して CONNECT TO 句を指定する必要があります。 runtimeconnectionoptions が指定されていない場合、ssbdiagnose では baseconnectionoptions の接続情報を使用します。

E-

現在の Windows アカウントをログイン ID として使用して、データベース エンジンのインスタンスに対して Windows 認証接続を開きます。 ログインは sysadmin 固定サーバー ロールのメンバーである必要があります。

-E オプションを使用すると、SQLCMDUSER 環境変数および SQLCMDPASSWORD 環境変数のユーザー設定とパスワード設定が無視されます。

-E-U も指定されていない場合、ssbdiagnose では、SQLCMDUSER 環境変数の値を使用します。 SQLCMDUSER も設定されていない場合、ssbdiagnose では Windows 認証を使用します。

-E オプションが -U オプションまたは -P オプションと共に使用されると、エラー メッセージが生成されます。

-U login_id

指定されたログイン ID を使用して SQL Server 認証接続を開きます。 ログインは sysadmin 固定サーバー ロールのメンバーである必要があります。

-E-U も指定されていない場合、ssbdiagnose では、SQLCMDUSER 環境変数の値を使用します。 SQLCMDUSER も設定されていない場合、ssbdiagnose では、ssbdiagnose を実行しているユーザーの Windows アカウントに基づいた Windows 認証モードを使用して接続を試行します。

-U オプションが -E オプションと同時に使用されると、エラー メッセージが生成されます。 -U オプションの後に複数の引数があると、エラー メッセージが生成され、プログラムが終了します。

-P password

-U ログイン ID のパスワードを指定します。 パスワードでは大文字と小文字が区別されます。 -U オプションが使用され、-P オプションが使用されていない場合、ssbdiagnose では、SQLCMDPASSWORD 環境変数の値を使用します。 SQLCMDPASSWORD も設定されていない場合は、ssbdiagnose はユーザーにパスワードを要求します。

注意事項

SET SQLCMDPASSWORD コマンドを入力する際は、スクリーンにパスワードが表示されてしまうので注意してください。

パスワードなしで -P オプションが指定されている場合、ssbdiagnose では既定のパスワード (NULL) を使用します。

重要

空白のパスワードは使用しないでください。 強力なパスワードを使用してください。 詳細については、「 Strong Passwords」を参照してください。

パスワード プロンプトは、次のようにパスワード プロンプトをコンソールに出力することによって表示されます。 Password:

ユーザーが行った入力は表示されません。 つまり、入力時には何も表示されず、カーソルが移動しません。

-P オプションが -E オプションと同時に使用されると、エラー メッセージが生成されます。

-P オプションに複数の引数がある場合は、エラー メッセージが生成されます。

-S server_name [ \instance_name ]

分析対象の Service Broker サービスが格納されている、データベース エンジンのインスタンスを指定します。

サーバー上のデータベース エンジンの既定のインスタンスに接続するには、server_name を指定します。 サーバー上のデータベース エンジンの名前付きインスタンスに接続するには、<server_name>\<instance_name> を指定します。 -S が指定されていない場合、ssbdiagnose では、SQLCMDSERVER 環境変数の値を使用します。 SQLCMDSERVER も設定されていない場合、ssbdiagnose はローカル コンピューター上にあるデータベース エンジンの既定のインスタンスに接続されます。

-d database_name

分析対象の Service Broker サービスが格納されているデータベースを指定します。 データベースが存在しない場合は、エラー メッセージが生成されます。 -d が指定されていない場合、ログインの既定のデータベースのプロパティに指定されたデータベースが既定値になります。

-l login_timeout

サーバーへの接続試行がタイムアウトするまでの秒数を指定します。-l が指定されていない場合、ssbdiagnose では、SQLCMDLOGINTIMEOUT 環境変数に設定された値を使用します。 SQLCMDLOGINTIMEOUT も設定されていない場合、既定のタイムアウトは 30 秒です。 ログイン タイムアウトは、0 ~ 65,534 の数値にする必要があります。 指定した値が数値以外の場合、または範囲外の場合、ssbdiagnose はエラー メッセージを生成します。 この値に 0 を指定すると、タイムアウトは無制限になります。

-N encryption_option

接続を暗号化することを指定します。 有効な値は OptionalMandatoryStrict です。 入力された値は、必要な最小レベルの暗号化を表します。 既定値は Mandatory です。

Mandatory 暗号化が選択されている場合は、信頼された証明機関の認定を使用する必要があります。 詳細については、「SQL Server の証明書要件」を参照してください。

厳密な暗号化を使用するには、SQL Server データベース エンジンは信頼されたルート証明機関によって署名された TLS 証明書を使用して構成する必要があります。

-i hostname_in_certificate

サーバー証明書の検証中に使用するサーバー証明書の別の予期される共通名 (CN) またはサブジェクト代替名 (SAN) を指定します。 このオプションを指定しない場合、証明書の検証により、証明書内の CN または SAN が、接続先のサーバー名と一致することが保証されます。 このパラメーターは、サーバー名が CN または SAN と一致しない場合 (DNS エイリアスを使用する場合など) に設定できます。

C:

接続がサーバー証明書を信頼し、サーバー証明書の検証をバイパスすることを指定します。 信頼されたサーバー証明書を使用する場合、このオプションは必要ありません。

-?

コマンド ライン ヘルプを表示します。

解説

ssbdiagnose を使用すると、次の操作を実行できます。

  • 新しく構成された Service Broker アプリケーションに構成エラーがないことを確認する。

  • 既存の Service Broker アプリケーションの構成を変更した後に構成エラーがないことを確認する。

  • Service Broker データベースをデタッチしてからデータベース エンジンのインスタンスに再アタッチした後に構成エラーがないことを確認する。

  • メッセージがサービス間で正常に送信されない場合に構成エラーがあるかどうかを調査する。

  • Service Broker の一連のメッセージ交換要素で発生するすべてのエラーに関するレポートを取得する。

構成レポート

メッセージ交換で使用されている構成を正しく分析するには、メッセージ交換で使用されているオプションと同じオプションを使用する ssbdiagnose の構成レポートを実行します。 メッセージ交換よりも低いレベルのオプションを ssbdiagnose に指定すると、 ssbdiagnose は、メッセージ交換に必要な条件を報告しない場合があります。 また、より高いレベルのオプションを ssbdiagnoseに指定すると、メッセージ交換に必要のない項目を報告する場合があります。 たとえば、同じデータベース内の 2 つのサービス間のメッセージ交換は、ENCRYPTION OFF を指定して実行できます。 ssbdiagnose を実行してこの 2 つのサービス間の構成を検証する場合でも、既定の ENCRYPTION ON 設定を使用すると、ssbdiagnose は、データベースにマスター キーが存在しないことを報告します。 マスター キーは、メッセージ交換には必要ありません。

ssbdiagnose の構成レポートを実行するたびに、1 つの Service Broker サービスまたは 1 組のサービスが分析されます。 Service Broker サービスの複数のペアに関するレポートを作成するには、ssbdiagnose を複数回呼び出す .cmd コマンド ファイルを作成します。

ランタイム レポート

-RUNTIME が指定されている場合、ssbdiagnose では、runtimeconnectionoptionsbaseconnectionoptions で指定されたすべてのデータベースを検索して Service Broker ID の一覧を作成します。 作成される ID の一覧は、-NEW および -ID で指定する内容によって異なります。

  • -NEW-ID も指定されていない場合、接続オプションで指定されたすべてのデータベースに関するすべてのメッセージ交換が一覧に含まれます。

  • -NEW が指定されている場合、ssbdiagnose が作成する一覧には、ssbdiagnose の実行後に開始される最初のメッセージ交換の要素が含まれます。 これには、メッセージ交換 ID、および発信先と発信側の両方のメッセージ交換エンドポイントのメッセージ交換ハンドルも含まれます。

  • -ID がメッセージ交換ハンドルと共に指定されている場合、そのハンドルのみが一覧に含まれます。

  • -ID がメッセージ交換 ID と共に指定されている場合、そのメッセージ交換 ID と、そのメッセージ交換の両方のエンドポイントのハンドルが一覧に追加されます。

  • -ID がメッセージ交換グループ ID と共に指定されている場合、そのグループ内のすべてのメッセージ交換 ID とメッセージ交換ハンドルが一覧に追加されます。

接続オプションで対応されていないデータベースの要素は、一覧に含まれません。 たとえば、-ID を使用してメッセージ交換 ID を指定しても、発信先データベースではなく発信側データベースのみに対して runtimeconnectionoptions 句を指定するとします。 ssbdiagnose は、発信先のメッセージ交換ハンドルを ID の一覧に含めず、メッセージ交換 ID と、発信側のメッセージ交換ハンドルのみを含めます。

ssbdiagnose では、runtimeconnectionoptionsbaseconnectionoptions に含まれるデータベースの SQL Server プロファイラー イベントを監視します。 これにより、ランタイムの一覧に含まれる 1 つ以上の Service Broker ID でエラーが発生したことを示す Service Broker イベントが検索されます。 ssbdiagnose では、どのメッセージ交換グループにも関連付けられていないシステムレベルの Service Broker エラー イベントも検索します。

ssbdiagnose がメッセージ交換エラーを検出すると、このユーティリティは、構成レポートも実行して、そのイベントの根本原因の報告を試行します。 ssbdiagnose では、データベース内のメタデータを使用して、メッセージ交換で使用されるインスタンス、Service Broker ID、データベース、サービス、およびコントラクトを特定します。 その後、使用可能なすべての情報を使用して構成レポートを実行します。

既定では、ssbdiagnose はエラー イベントを報告しません。 報告するのは、構成チェック時に見つかった根本的な問題だけです。 これにより、報告される情報量が最小限に抑えられるため、根本的な構成の問題に注目することができます。 -SHOWEVENTS によって検出されたエラー イベントを確認するには、ssbdiagnose を指定します。

ssbdiagnose によって報告される問題

ssbdiagnose が報告する問題は、3 種類に分類されます。 XML 出力ファイルでは、各種類の問題が Issue 要素の異なる型として報告されます。 ssbdiagnose が報告する 3 種類の問題は次のとおりです。

  • Diagnosis: 構成上の問題を報告します。 これには、CONFIGURATION レポートの実行中または RUNTIME レポートの構成フェーズ中に見つかった問題が含まれます。 ssbdiagnose は、構成上の各問題を一度だけ報告します。

  • Event: RUNTIME レポートの実行中に監視されるメッセージ交換で問題が検出されたことを示す SQL Server Profiler イベントを報告します。 ssbdiagnose は、イベントが生成されるたびにイベントを報告します。 複数のメッセージ交換で問題が検出される場合は、イベントが複数回報告されます。

  • Problem: ssbdiagnose で構成分析を完了したり、メッセージ交換を監視したりすることができない場合に、その原因となる問題を報告します。

SQLCMD 環境変数

ssbdiagnose ユーティリティでは、sqlcmd ユーティリティでも使用されている SQLCMDSERVERSQLCMDUSERSQLCMDPASSWORD、および SQLCMDLOGINTIMOUT の各環境変数がサポートされています。 これらの環境変数を設定するには、コマンド プロンプト SET の コマンドを使用するか、sqlcmd を使用して実行する Transact-SQL スクリプトの setvar コマンドを使用します。 sqlcmdsetvar を使用する方法の詳細については、「sqlcmd - スクリプト変数の使用」をご覧ください。

アクセス許可

connectionoptions 句では、-E または -U のいずれかで指定されたログインが、-S で指定されたインスタンスの sysadmin 固定サーバー ロールのメンバーである必要があります。

ここでは、コマンド プロンプトでの ssbdiagnose の使用例を示します。

A. 同じデータベース内の 2 つのサービスの構成を確認する

次の例では、以下の条件に該当する場合に構成レポートを要求する方法を示します。

  • 発信側と発信先のサービスが同じデータベース内に格納されている。

  • データベースがデータベース エンジンの既定のインスタンス内に存在する。

  • インスタンスが ssbdiagnose が実行されるコンピューター上に存在しています。

ON CONTRACT が指定されていないため、ssbdiagnose ユーティリティは、DEFAULT コントラクトを使用する構成を報告します。

ssbdiagnose -E -d MyDatabase CONFIGURATION FROM SERVICE /test/initiator TO SERVICE /test/target

B. 異なるコンピューター上の、同じログインを使用する 2 つのサービスの構成を確認する

次の例では、異なるコンピューター上に発信側と発信先のサービスが格納されており、そのサービスに同じ Windows 認証ログインを使用してアクセスできる場合に、構成レポートを要求する方法を示します。

ssbdiagnose -E CONFIGURATION FROM SERVICE /text/initiator -S InitiatorComputer -d InitiatorDatabase TO SERVICE /test/target -S TargetComputer -d TargetDatabase ON CONTRACT TestContract

C: 異なるコンピューター上の、個別のログインを使用する 2 つのサービスの構成を確認する

次の例では、異なるコンピューター上に発信側と発信先のサービスが格納されており、データベース エンジンの各インスタンスに個別の SQL Server 認証ログインが必要となる場合に、構成レポートを要求する方法を示します。

ssbdiagnose CONFIGURATION FROM SERVICE /text/initiator
-S InitiatorComputer -U InitiatorLogin -p !wEx23Dvb
-d InitiatorDatabase TO SERVICE /test/target -S TargetComputer
-U TargetLogin -p ER!49jiy -d TargetDatabase ON CONTRACT TestContract

D. 匿名の暗号化を使用している、異なるコンピューター上でミラー化されたサービスの構成を確認する

次の例では、異なるコンピューター上に発信側と発信先のサービスが格納されており、発信側が名前付きインスタンスにミラー化されている場合に、構成レポートを要求する方法を示します。 このレポートでは、サービスが匿名の暗号化を使用するように構成されていることも確認します。

ssbdiagnose -E CONFIGURATION FROM SERVICE /text/initiator
-S InitiatorComputer -d InitiatorDatabase MIRROR
-S MirrorComputer/MirrorInstance TO SERVICE /test/target
-S TargetComputer -d TargetDatabase ON CONTRACT TestContract ENCRYPTION ANONYMOUS

E. 2 つのコントラクトの構成を確認する

次の例では、以下の条件に該当する場合に構成レポートを要求するコマンド ファイルの作成方法を示します。

  • 発信側と発信先のサービスが同じデータベース内に格納されている。

  • データベースがデータベース エンジンの既定のインスタンス内に存在する。

  • インスタンスが ssbdiagnose が実行されるコンピューター上に存在する。

ssbdiagnose は、実行されるたびに、同じサービス間で異なるコントラクトの構成を報告します。

ssbdiagnose -E -d MyDatabase CONFIGURATION FROM SERVICE
/test/initiator TO SERVICE /test/target ON CONTRACT PayRaiseContract
ssbdiagnose -E -d MyDatabase CONFIGURATION FROM SERVICE /test/initiator
TO SERVICE /test/target ON CONTRACT PromotionContract

F. タイムアウトが設定された、ローカル コンピューター上の特定のメッセージ交換の状態を監視する

次の例では、 ssbdiagnoseを実行しているコンピューターの既定のインスタンスにある同一のデータベースに発信側と発信先のサービスが格納されている場合に、特定のメッセージ交換を監視する方法を示します。 タイムアウト間隔は 20 秒に設定されています。

ssbdiagnose -E -d TestDatabase RUNTIME -ID D68D77A9-B1CF-41BF-A5CE-279ABCAB140D -TIMEOUT 20

G. 2 台のコンピューターにまたがるメッセージ交換の状態を監視する

次の例では、異なるコンピューター上に発信側と発信先のサービスが格納されている場合に、特定のメッセージ交換を監視する方法を示します。

ssbdiagnose RUNTIME -ID D68D77A9-B1CF-41BF-A5CE-279ABCAB140D
-TIMEOUT 10 CONNECT TO -E -S InitiatorComputer/InitiatorInstance
-d InitiatorDatabase CONNECT TO -E -S TargetComputer/TargetInstance
-d TargetDatabase

H. 同じインスタンス内の 2 つのデータベースにあるメッセージ交換の状態を監視する

次の例では、データベース エンジンの同じインスタンス内にある異なるデータベースに発信側と発信先のサービスが格納されている場合に、特定のメッセージ交換を監視する方法を示します。 この例では、baseconnectionoptions を使用してインスタンスとログインの情報を指定し、2 つの CONNECT TO 句を使用してデータベースを指定しています。 すべてのランタイム イベントがレポートの出力に含まれるように、-SHOWEVENTS を指定しています。

ssbdiagnose -E -S TestComputer/DevTestInstance RUNTIME -SHOWEVENTS
-ID 5094d4a7-e38c-4c37-da37-1d58b1cb8455 -TIMEOUT 10 CONNECT TO
-d InitiatorDatabase CONNECT TO -d TargetDatabase

I. 2 つのデータベース間の 2 つのメッセージ交換の状態を監視する

次の例では、データベース エンジンの同じインスタンス内にある異なるデータベースに発信側と発信先のサービスが格納されている場合に、2 つのメッセージ交換を監視する方法を示します。 この例では、baseconnectionoptions を使用してインスタンスとログインの情報を指定し、2 つの CONNECT TO 句を使用してデータベースを指定しています。

ssbdiagnose -E -S TestComputer/DevTestInstance RUNTIME
-ID 5094d4a7-e38c-4c37-da37-1d58b1cb8455
-ID 9b293be9-226b-4e22-e169-1d2c2c15be86 -TIMEOUT 10 CONNECT TO
-d InitiatorDatabase CONNECT TO -d TargetDatabase

J. 2 つのデータベース間のすべてのメッセージ交換の状態を監視する

次の例では、データベース エンジンの同じインスタンス内にある 2 つのデータベース間で行われるすべてのメッセージ交換を監視する方法を示します。 この例では、baseconnectionoptions を使用してインスタンスとログインの情報を指定し、2 つの CONNECT TO 句を使用してデータベースを指定しています。

ssbdiagnose -E -S TestComputer/DevTestInstance RUNTIME
-TIMEOUT 10 CONNECT TO -d InitiatorDatabase CONNECT TO
-d TargetDatabase

K. 特定のエラーを無視する

次の例では、テスト システムで現在アクティブ化を構成している方法で既知のエラー (303 と 304) を無視する方法を示します。

ssbdiagnose -IGNORE 303 -IGNORE 304 -E -d TestDatabase
CONFIGURATION FROM SERVICE /test/initiator TO SERVICE /test/target
ON CONTRACT TextContract

L. ssbdiagnose の XML 出力をリダイレクトする

次の例では、 ssbdiagnose が出力を XML ファイルとして生成するように要求する方法を示します。この XML ファイルはファイルにリダイレクトされます。 その後、TestDiag.xml ファイルをアプリケーションで開いて、 ssbdiagnose の XML ファイルを分析およびレポートすることができます。 また、XML Notepad などの一般的な XML エディターで表示することもできます。

ssbdiagnose -XML -E -d MyDatabase CONFIGURATION FROM SERVICE
/test/initiator TO SERVICE /test/target > c:\MyDiagnostics\TestDiag.xml

M. 環境変数を使用する

次の例では、最初に、サーバー名を保持する SQLCMDSERVER 環境変数を設定し、次に、-S を指定せずに ssbdiagnose を実行します。

SET SQLCMDSERVER=MyComputer
ssbdiagnose -XML -E -d MyDatabase CONFIGURATION FROM SERVICE
/test/initiator TO SERVICE /test/target