共用方式為


ssbdiagnose 公用程式

ssbdiagnose 公用程式會報告 Service Broker 交談或 Service Broker 服務組態中的問題。 您可以針對兩個服務或單一服務進行組態檢查。 問題會在命令提示字元視窗中報告成人們可讀取的文字,或可重新導向至檔案或其他程式的格式化 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 ]

命令列選項

  • -XML
    指定 ssbdiagnose 輸出要產生為已格式化的 XML。 這種輸出可重新導向至檔案或其他應用程式。 如果沒有指定 -XMLssbdiagnose 輸出就會格式化成使用者可讀取的文字。

  • -LEVEL { ERROR | WARNING | INFO}
    指定要報告的訊息層級。

    ERROR:僅報告錯誤訊息。

    WARNING:報告錯誤和警告訊息。

    INFO:報告錯誤、警告和參考用訊息。

    預設值是 WARNING

  • -IGNORE error_id
    指定具有指定之 error_id 的錯誤或訊息,不要包含在報表中。 您可以多次指定 -IGNORE,以隱藏多個訊息識別碼。

  • <baseconnectionoptions>
    指定當特定子句中未包含連接選項時,ssbdiagnose 所使用的基底連接資訊。 在特定子句中提供的連接資訊,會覆寫 baseconnectionoption 資訊。 這會針對每項參數個別執行。 例如,如果 -S-d 都在 baseconnetionoptions 中指定,而只有 -dtoconnetionoptions 中指定,則 ssbdiagnose 會使用 baseconnetionoptions 中的 -S 及 toconnetionoptions 中的 -d。

  • CONFIGURATION
    要求一組 Service Broker 服務之間或單一服務的組態錯誤報表。

  • FROM SERVICE service_name
    指定起始交談的服務。

  • <fromconnectionoptions>
    指定連接至保留起始端服務之資料庫所需的資訊。 如果沒有指定 fromconnectionoptionsssbdiagnose 就會使用 baseconnectionoptions 中的連接資訊連接至起始端資料庫。 如果指定了 fromconnectionoptions,它就必須包括含有起始端服務的資料庫。 如果沒有指定 fromconnectionoptionsbaseconnectionoptions 就必須指定起始端資料庫。

  • TO SERVICE service_name[, broker_id ]
    指定用於交談的服務。

    service_name:指定目標服務的名稱。

    broker_id:指定可識別目標資料庫的 Service Broker 識別碼。broker_id 是 GUID。 您可以在目標資料庫中執行下列查詢,以便尋找此識別碼:

    SELECT service_broker_guid
    FROM sys.databases
    WHERE database_id = DB_ID();
    
  • <toconnectionoptions>
    指定連接至保存目標服務之資料庫所需的資訊。 如果沒有指定 toconnectionoptionsssbdiagnose 就會使用 baseconnectionoptions 中的連接資訊連接至目標資料庫。

  • MIRROR
    指定相關聯的 Service Broker 服務由鏡像資料庫所主控。 ssbdiagnose 會確認服務的路由為鏡像路由,其中 MIRROR_ADDRESS 指定於 CREATE ROUTE 上。

  • <mirrorconnectionoptions>
    指定連接至鏡像資料庫所需的資訊。 如果沒有指定 mirrorconnectionoptionsssbdiagnose 就會使用 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-IDssbdiagnose 就會監視連接選項中指定之所有資料庫內的所有交談。 如果指定了 -NEW-IDssbdiagnose 就會建立參數中指定之識別碼的清單。

    ssbdiagnose 正在執行時,它會記錄所有指出執行階段錯誤的 SQL Server Profiler 事件。 它會記錄針對指定之識別碼發生的事件,以及系統層級事件。 如果遇到了執行階段錯誤,ssbdiagnose 就會針對相關聯的組態執行組態報表。

    根據預設,輸出報表不會包含執行階段錯誤,只會包含組態分析的結果。 您可以使用 -SHOWEVENTS,讓執行階段錯誤包含在報表中。

  • -SHOWEVENTS
    指定 ssbdiagnose 在 RUNTIME 報表期間報告 SQL Server Profiler 事件。 僅報告被視為錯誤條件的事件。 根據預設,ssbdiagnose 只會監視錯誤事件,但不會在輸出中報告這些事件。

  • -NEW
    要求執行階段監視在 ssbdiagnose 開始執行之後開始的第一個交談。

  • -ID
    要求指定的交談元素之執行階段監視。 您可以指定多次 -ID

    如果您指定了交談控制代碼,系統就只會報告與相關聯之交談端點相關聯的事件。 如果您指定了交談識別碼,系統就會報告該交談及其起始端和目標端點的所有事件。 如果您指定了交談群組識別碼,系統就會報告該交談群組中所有交談和端點的所有事件。

  • conversation_handle
    可識別應用程式中某個交談端點的唯一識別碼。 交談控制代碼對於交談的某個端點而言是唯一的,而起始端和目標端點具有不同的交談控制代碼。

    BEGIN DIALOG 陳述式的 @dialog\_handle 參數和 RECEIVE 陳述式結果集中的 conversation_handle 資料行,會將交談控制代碼傳回應用程式。

    sys.transmission_queuesys.conversation_endpoints 目錄檢視的 conversation_handle 資料行,會報告交談控制代碼。

  • conversation_group_id
    識別交談群組且不重複的識別碼。

    GET CONVERSATION GROUP 陳述式的 @conversation\_group\_id 參數和 RECEIVE 陳述式結果集中的 conversation_group_id 資料行,會將交談群組識別碼傳回應用程式。

    sys.conversation_groupssys.conversation_endpoints 目錄檢視的 conversation_group_id 資料行,會報告交談群組識別碼。

  • conversation_id
    識別交談且不重複的識別碼。 對於交談的起始端和目標端點而言,其交談識別碼都相同。

    sys.conversation_endpoints 目錄檢視的 conversation_id 資料行,會報告交談識別碼。

  • -TIMEOUT timeout_interval
    指定 RUNTIME 報表要執行的秒數。 如果沒有指定 -TIMEOUT,執行階段報表就會無限期地執行。 -TIMEOUT 僅適用於 RUNTIME 報表,而不適用於 CONFIGURATION 報表。 如果沒有指定 -TIMEOUT,或想要在 - 逾時間隔到期之前結束執行階段報表,您可以使用 CTRL + C 結束 ssbdiagnose。 timeout_interval 必須是介於 1 到 2,147,483,647 之間的數字。

  • <runtimeconnectionoptions>
    指定資料庫的連接資訊,而這些資料庫包含與受監視之交談元素相關聯的服務。 如果所有服務都位於相同的資料庫中,您就只需要指定一個 CONNECT TO 子句。 如果各項服務位於不同的資料庫中,您就必須針對每個資料庫提供一個 CONNECT TO 子句。 如果沒有指定 runtimeconnectionoptionsssbdiagnose 就會使用 baseconnectionoptions 中的連接資訊。

  • -E
    使用您目前的 Windows 帳戶做為登入識別碼,藉以開啟 Database Engine 執行個體的 Windows 驗證連接。 此登入必須是 sysadmin 固定伺服器角色的成員。

    -E 選項會忽略 SQLCMDUSER 和 SQLCMDPASSWORD 環境變數的使用者與密碼設定。

    如果沒有指定 -E-Ussbdiagnose 就會使用 SQLCMDUSER 環境變數的值。 如果也沒有設定 SQLCMDUSER,ssbdiagnose 就會使用 Windows 驗證。

    如果同時使用 -E 選項和 -U 選項或 -P 選項,便會產生錯誤訊息。

  • -U login_id
    使用指定的登入識別碼,藉以開啟 SQL Server 驗證連接。 此登入必須是 sysadmin 固定伺服器角色的成員。

    如果沒有指定 -E-Ussbdiagnose 就會使用 SQLCMDUSER 環境變數的值。 如果也沒有設定 SQLCMDUSER,ssbdiagnose 就會嘗試根據正在執行 ssbdiagnose 之使用者的 Windows 帳戶,使用 Windows 驗證模式進行連接。

    如果同時使用 -U 選項和 -E 選項,便會產生錯誤訊息。 如果 –U 選項後面有多個引數,便會產生錯誤訊息,而且程式將會結束。

  • -P password
    指定 -U 登入識別碼的密碼。 密碼會區分大小寫。 如果使用了 -U 選項,但沒有使用 -P 選項,ssbdiagnose 就會使用 SQLCMDPASSWORD 環境變數的值。 如果也沒有設定 SQLCMDPASSWORD,ssbdiagnose 就會提示使用者輸入密碼。

    安全性注意事項安全性注意事項

    當您輸入 SET SQLCMDPASSWORD 命令時,任何能夠查看監視器的人都可以看到密碼。

    如果指定了 -P 選項而不包含密碼,ssbdiagnose 就會使用預設密碼 (NULL)。

    安全性注意事項安全性注意事項

    請勿使用空白密碼。請使用增強式密碼。如需詳細資訊,請參閱<增強式密碼>。

    將密碼提示傳至主控台時,會依照下列方式來顯示密碼提示:Password:

    使用者輸入為隱藏狀態。 這表示畫面上不會顯示任何內容,而且游標也不會移動。

    如果同時使用 -P 選項和 -E 選項,便會產生錯誤訊息。

    如果 -P 選項後面有多個引數,便會產生錯誤訊息。

  • -S server_name[\instance_name]
    指定保存要分析之 Service Broker 服務的 Database Engine 執行個體。

    指定 server_name,即可連接至該伺服器上的 Database Engine 預設執行個體。 指定 server_name**\**instance_name ,即可連接至該伺服器上的 Database Engine 具名執行個體。 如果沒有指定 -Sssbdiagnose 會使用 SQLCMDSERVER 環境變數的值。 如果也沒有設定 SQLCMDSERVER,ssbdiagnose 就會連接至本機電腦上的 Database Engine 預設執行個體。

  • -d database_name
    指定保存要分析之 Service Broker 服務的資料庫。 如果此資料庫不存在,就會產生錯誤訊息。 如果沒有指定 -d,預設值就是登入之預設資料庫屬性中所指定的資料庫。

  • -l login_timeout
    指定嘗試連接至伺服器會發生逾時之前,所經過的秒數。 如果沒有指定 -lssbdiagnose 就會使用針對 SQLCMDLOGINTIMEOUT 環境變數所設定的值。 如果也沒有指定 SQLCMDLOGINTIMEOUT,預設的逾時就是三十秒。 此登入逾時必須是介於 0 和 65534 之間的數字。 如果所提供的值不是數值或不在該範圍內,ssbdiagnose 就會產生錯誤訊息。 0 值指定逾時值無限。

  • -?
    顯示命令列說明。

備註

您可以使用 ssbdiagnose 進行下列作業:

  • 在新設定的 Service Broker 應用程式中,確認沒有任何組態錯誤。

  • 在您變更現有 Service Broker 應用程式的組態之後,確認沒有任何組態錯誤。

  • 在 Service Broker 資料庫卸離,然後重新附加至新的 Database Engine 執行個體之後,確認沒有任何組態錯誤。

  • 當訊息無法順利在服務之間傳輸時,研究是否存在組態錯誤。

  • 取得在一組 Service Broker 交談元素中發生之任何錯誤的報表。

組態報表

若要正確分析交談所使用的組態,請執行與交談使用相同選項的 ssbdiagnose 組態報表。 如果您針對 ssbdiagnose 所指定的選項層級低於交談所使用的選項層級,ssbdiagnose 可能不會報告交談所需的條件。 如果您為 ssbdiagnose 指定較高的選項層級,它可能會報告交談所不需要的報表項目。 例如,在相同資料庫中兩個服務之間的交談,可能會在 ENCPRYPTION OFF 的情況下執行。 如果您執行 ssbdiagnose 以驗證這兩個服務之間的組態,但卻使用預設的 ENCRYPTION ON 設定,ssbdiagnose 就會報告資料庫缺少主要金鑰。 這種交談不需要使用主要金鑰。

每次執行 ssbdiagnose 組態報表時,它只會分析一個 Service Broker 服務或一對服務。 若要報告多對 Service Broker 服務,請建立多次呼叫 ssbdiagnose 的 .cmd 命令檔。

執行階段報表

指定 -RUNTIME 時,ssbdiagnose 會搜尋在 runtimeconnectionoptionsbaseconnectionoptions 中所指定的所有資料庫,以便建立 Service Broker 識別碼的清單。所建立的完整識別碼清單會因針對 -NEW 和 -ID 指定的內容而有所不同:

  • 如果沒有指定 -NEW-ID,此清單就會包含連接選項中指定之所有資料庫的所有交談。

  • 如果指定了 -NEWssbdiagnose 就會包含在 ssbdiagnose 執行之後開始的第一個交談之元素。 這同時包括目標和起始端交談端點的交談識別碼與交談控制代碼。

  • 如果指定了 -ID 與交談控制代碼,只有該控制代碼會包含在清單中。

  • 如果指定了 -ID 與交談識別碼,則交談識別碼及其兩個交談端點的控制代碼都會加入清單中。

  • 如果指定了 -ID 與交談群組識別碼,則該群組中的所有交談識別碼和交談控制代碼都會加入清單中。

此清單不會包含連接選項未涵蓋之資料庫的元素。 例如,假設您使用 -ID 指定交談識別碼,但是僅針對起始端資料庫 (而非目標資料庫) 提供 runtimeconnectionoptions 子句。 ssbdiagnose 將不會在其識別碼清單中包含目標交談控制代碼,而只會包含交談識別碼和起始端交談控制代碼。

ssbdiagnose 會監視由 runtimeconnectionoptionsbaseconnectionoptions 所涵蓋之資料庫中的 SQL Server Profiler 事件。 它會根據執行階段清單中的一個或多個 Service Broker 識別碼,搜尋表示遇到錯誤的 Service Broker 事件。ssbdiagnose 也會搜尋未特別與任何交談群組相關聯的系統層級 Service Broker 錯誤事件。

如果 ssbdiagnose 找到交談錯誤,此公用程式就會透過同時執行組態報表,嘗試報告事件的根本原因。 ssbdiagnose 會使用資料庫內的中繼資料,嘗試判斷交談所使用的執行個體、Service Broker 識別碼、資料庫、服務與合約。 然後,它會使用所有可用的資訊來執行組態報表。

根據預設,ssbdiagnose 不會報告錯誤事件。 它只會報告在組態檢查期間所找到的基礎問題。 如此會將報告的資訊量減到最少,協助您將焦點集中在基礎組態問題。 您可以指定 -SHOWEVENTS,以便查看 ssbdiagnose 所遇到的錯誤事件。

ssbdiagnose 所報告的問題

ssbdiagnose 會報告三種問題類別。 在 XML 輸出檔中,每種問題類別都會報告成個別的 Issue 元素類型。 ssbdiagnose 所報告的三種問題類型如下:

  • 診斷
    報告組態問題。 這包括在 CONFIGURATION 報表執行時或 RUNTIME 報表的組態設定階段期間所發現的問題。 ssbdiagnose 會一次報告每個組態問題。

  • 事件
    報告會指出 RUNTIME 報表期間所監視之交談遇到問題的 SQL Server Profiler 事件。 ssbdiagnose 會在每次產生事件時報告這些事件。 如果許多交談都遇到該問題,可能會報告多次該事件。

  • 問題
    報告會讓 ssbdiagnose 無法完成組態分析或監視交談的問題。

sqlcmd 環境變數

ssbdiagnose 公用程式支援 sqlcmd 公用程式也使用的 SQLCMDSERVER、SQLCMDUSER、SQLCMDPASSWORD 和 SQLCMDLOGINTIMOUT 環境變數。 您可以透過使用命令提示字元 SET 命令,或在使用 sqlcmd 所執行的 Transact-SQL 指令碼中使用 setvar 命令,設定這些環境變數。 如需有關如何在 sqlcmd 中使用 setvar 的詳細資訊,請參閱<以指令碼變數使用 sqlcmd>。

權限

在每個 connectionoptions 子句中,使用 -E-U 所指定的登入,必須是以 -S 所指定之執行個體內 sysadmin 固定伺服器角色的成員。

範例

本節包含在命令提示字元處使用 ssbdiagnose 的範例。

A.檢查相同的資料庫中兩個服務的組態

下列範例將示範如何在下列條件成立時要求組態報表:

  • 起始端和目標服務位於相同的資料庫中。

  • 資料庫位於 Database Engine 的預設執行個體中。

  • 執行個體位於執行 ssbdiagnose 的同一部電腦上。

ssbdiagnose 公用程式會報告使用 DEFAULT 合約的組態,因為沒有指定 ON CONTRACT。

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

B.檢查使用單一登入之不同電腦上的兩個服務之組態

下列範例將示範如何在起始端和目標服務位於不同的電腦,但是可以使用相同的 Windows 驗證登入存取時,要求組態報表。

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

C.檢查使用不同登入之不同電腦上兩個服務的組態

下列範例將示範如何在起始端和目標服務位於不同的電腦,而且每個 Database Engine 執行個體都需要不同的 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.檢查兩個合約的組態

下列範例將示範如何建立命令檔,以便在下列條件成立時要求組態報表:

  • 起始端和目標服務位於相同的資料庫中。

  • 資料庫位於 Database Engine 的預設執行個體中。

  • 執行個體位於執行 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.監視跨越兩部電腦之交談的狀態

下列範例將示範如何監視特定交談,其中起始端和目標服務位於不同的電腦上。

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.監視相同執行個體內兩個資料庫中的交談狀態

下列範例將示範如何監視特定交談,其中起始端和目標服務位於相同 Database Engine 執行個體的不同資料庫中。 此範例會使用 baseconnectionoptions 指定執行個體和登入資訊,並且使用兩個 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.監視兩個資料庫之間兩個交談的狀態

下列範例將示範如何監視兩個交談,其中起始端和目標服務位於相同 Database Engine 執行個體的不同資料庫中。 此範例會使用 baseconnectionoptions 指定執行個體和登入資訊,並且使用兩個 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.監視兩個資料庫之間的所有交談狀態

下列範例將示範如何監視相同 Database Engine 執行個體中兩個資料庫之間的所有交談。 此範例會使用 baseconnectionoptions 指定執行個體和登入資訊,並且使用兩個 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 檔,以便重新導向至檔案。 然後,應用程式可以開啟 TestDiag.xml 檔,以便分析或報告 ssbdiagnose XML 檔。 或者,您可以從一般 XML 編輯器 (例如 XML Notepad) 中檢視此檔案。

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

請參閱

參考

BEGIN DIALOG CONVERSATION (Transact-SQL)

CREATE BROKER PRIORITY (Transact-SQL)

CREATE CERTIFICATE (Transact-SQL)

CREATE CONTRACT (Transact-SQL)

CREATE ENDPOINT (Transact-SQL)

CREATE MASTER KEY (Transact-SQL)

CREATE MESSAGE TYPE (Transact-SQL)

CREATE QUEUE (Transact-SQL)

CREATE REMOTE SERVICE BINDING (Transact-SQL)

CREATE ROUTE (Transact-SQL)

CREATE SERVICE (Transact-SQL)

RECEIVE (Transact-SQL)

sys.transmission_queue (Transact-SQL)

sys.conversation_endpoints (Transact-SQL)

sys.conversation_groups (Transact-SQL)

概念

SQL Server Service Broker