共用方式為


ssbdiagnose 公用程式

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

語法

ssbdiangose 
[ [ -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

  • -IGNOREerror_id
    指定具有指定之 error_id 的錯誤或訊息不要包含在報表中。您可以多次指定 -IGNORE,以便隱藏多個訊息識別碼。如需詳細資訊,請參閱<錯誤和事件參考 (Service Broker)>。

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

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

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

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

  • TO SERVICEservice_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 CONTRACTcontract_name
    要求 ssbdiagnose 只檢查使用指定之合約的組態。如果沒有指定 ON CONTRACT,ssbdiagnose 就會針對名為 DEFAULT 的合約報告。

  • ENCRYPTION { ON | OFF | ANONYMOUS }
    要求確認是否已針對指定的加密層級正確設定對話:

    ON:預設設定。已設定完整的對話安全性。已經在對話的兩端部署了憑證、遠端服務繫結存在,而且目標服務的 GRANT SEND 陳述式指定了起始端使用者。

    OFF:沒有設定任何對話安全性。沒有部署任何憑證、沒有建立任何遠端服務繫結,而且起始端服務的 GRANT SEND 指定了 public 角色。

    ANONYMOUS:已設定匿名的對話安全性。已經部署了一個憑證、遠端服務繫結指定了匿名子句,而且目標服務的 GRANT SEND 指定了 public 角色。

    如需詳細資訊,請參閱<Service Broker 對話安全性>。

  • 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 資料行會報告交談識別碼。

  • -TIMEOUTtimeout_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 選項,便會產生一則錯誤訊息。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • -?
    顯示命令列說明。

備註

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

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

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

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

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

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

如需有關 ssbdiagnose 所傳回之錯誤的詳細資訊,請參閱<錯誤和事件參考 (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 所報告的三種問題類型如下:

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

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

  • Problem
    報告讓 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 環境變數,以便保存伺服器名稱,然後執行 ssbdiagnose 但不指定 -S

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