共用方式為


檢查清單:維護和疑難排解 BizTalk Server 資料庫

BizTalk Server資料庫及其健康情況對於成功BizTalk Server資料庫傳訊環境而言非常重要。 本主題列出維護或疑難排解BizTalk Server資料庫時必須遵循的步驟。

維護 BizTalk Server 資料庫

  • 停用[自動更新統計資料] 和 [自動建立統計資料] 選項, (僅適用于BizTalk Server MessageBox 資料庫) 。 根據預設,這些設定會設定為BizTalk Server組態的一部分。 您不應該變更這些設定。

    若要查看這些設定是否已停用,請在 SQL Server中執行下列預存程式:

    SELECT DATABASEPROPERTYEX('BizTalkMsgBoxDB', 'IsAutoCreateStatistics') AS IsAutoCreateStatistics
    SELECT DATABASEPROPERTYEX('BizTalkMsgBoxDB', 'IsAutoUpdateStatistics') AS IsAutoUpdateStatistics
    

    傳回的值應該是 0 ,表示設定已停用。 如果未傳回0,請在 SQL Server 中執行下列命令來停用設定:

    ALTER DATABASE BizTalkMsgBoxDB SET AUTO_CREATE_STATISTICS OFF
    ALTER DATABASE BizTalkMsgBoxDB SET AUTO_UPDATE_STATISTICS OFF
    

    如需這些設定的詳細資訊,請移至當您嘗試連線到 BizTalk Server 中的 BizTalkMsgBoxDb 資料庫時,遇到封鎖、死結狀況或其他SQL Server問題

  • 設定 Parallelism 的 Max Degree of Parallelism 屬性。 根據預設,此設定會設定為BizTalk Server組態的一部分。 您不應該變更這些設定。

    將平行處理原則的 Max Degree of Parallelism run_valueconfig_value屬性設定為裝載BizTalk Server MessageBox 資料庫之SQL Server實例上一個 (1) 的值。 若要檢查 [平行處理原則的最大程度] 設定,請在 SQL Server 中針對 Master 資料庫執行下列預存程式:

    exec sp_configure 'max degree of parallelism'
    

    如果run_valueconfig_value未設定為 1 (1) 的值,請在 SQL Server中執行下列預存程式:

    exec sp_configure 'max degree of parallelism', '1' reconfigure with override
    

    如需 Max Degree of Parallelism 設定如何影響BizTalk Server的詳細資訊,請移至當您嘗試連線到 BizTalk Server 中的 BizTalkMsgBoxDb 資料庫時,遇到封鎖、死結狀況或其他SQL Server問題

  • 判斷何時可以重建BizTalk Server索引。

    BizTalk Server資料庫中大部分的索引都是叢集 (索引識別碼:1) 。 DBCC SHOWCONTIG 命令可用來顯示BizTalk Server資料庫中資料表的片段資訊。 這些索引是以 GUID 為基礎,因此發生片段是正常的。 如果 DBCC SHOWCONTIG 的掃描密度值小於 30%,則可以在停機期間重建索引。 BizTalk Server資料庫中的許多資料表都包含使用 DataType 定義的資料行,其中無法完成線上索引編制。 因此,當 BizTalk 正在處理資料時,不應該重建BizTalk Server資料庫中資料表的索引。

    如需如何重建 BizTalk 索引的詳細資訊,請移至當您嘗試連線到 BizTalk Server 中的 BizTalkMsgBoxDb 資料庫時,遇到封鎖、死結狀況或其他SQL Server問題

    您也可以使用 sys.dm_db_index_physical_stats 函式來尋找SQL Server中的片段資訊。 如需詳細資訊,請參閱 sys.dm_db_index_physical_stats (Transact-SQL)

  • 監視資料庫是否有鎖定、區塊或死結。

    這是BizTalk Server所使用之SQL Server資料庫上鎖定和區塊的預期行為。 不過,不應該讓這些鎖定或區塊持續一段時間。 BizTalk Server所使用之SQL Server資料庫的擴充封鎖和死結是潛在問題的指標。

    針對BizTalk Server所使用的SQL Server資料庫發生死結和封鎖的目前已知原因,請移至當您嘗試連線到 BizTalk Server 中的 BizTalkMsgBoxDb 資料庫時,遇到封鎖、死結狀況或其他SQL Server問題

  • 監視資料庫和資料表的大小。

    BizTalk Server MessageBox 資料庫的大小通常應該不超過 5 GB。 BizTalkMsgBoxDb 資料庫不應該保存任何資料,而且應該視為緩衝區,直到處理資料或移至 BizTalkDTADb 資料庫為止。 具有強大SQL Server後端和許多長時間執行協調流程的環境,可能會有大於 5GB 的 BizTalkMsgBoxDb 資料庫。 沒有長時間執行協調流程的高磁片區環境應該BizTalk Server MessageBox 資料庫遠小於 5GB。

    BizTalk Server追蹤資料庫的大小可能會有很大的差異,但如果查詢效能大幅減少,則追蹤資料庫可能太大。 作為經驗規則,BizTalk Server追蹤大於 15-20 GB 的資料庫會被視為太大,而且可能會對效能造成負面影響。

    下列問題可能是BizTalk Server太大的資料庫:

    • BizTalk Server MessageBox 資料庫會繼續成長,而資料大小 (不只是記錄檔) 維持很大。 BizTalk Server處理即使是簡單的訊息流程案例,花費的時間比正常時間還長。
    • 群組中樞查詢所需的時間比正常時間長,甚至可能會逾時。
    • 資料庫記錄檔永遠不會遭到截斷。
    • BizTalk SQL Agent 作業的執行速度比正常慢。
    • 相較于一般,某些資料表很大或資料列太多。

    BizTalk Server資料庫可能會因為數個原因而變得很大,包括:

    • BizTalk SQL Agent 作業未執行
    • 過多的暫止訊息或服務實例
    • 磁碟失敗
    • 高階追蹤
    • BizTalk Server節流
    • 效能不佳SQL Server
    • 網路延遲問題

    同樣地,您可以在資料表中擁有太多資料列。 沒有太多資料列的集合數目。 此外,此資料列數目會因數據表中儲存的資料種類而有所不同。 例如,具有超過 1 百萬個數據列 的dta_DebugTrace 資料表可能有太多資料列。 具有超過 200,000 個數據列 的HostNameQ_Suspended 資料表可能有太多資料列。

    請確定您知道環境中的預期內容,以判斷是否發生資料問題。

  • 在BizTalk Server主機上啟用追蹤。

    預設會在預設主機上啟用追蹤。 BizTalk 需要在單一主機上檢查 [允許主機追蹤 ] 選項。 啟用追蹤時,追蹤資料解碼服務 (TDDS) 會將追蹤事件資料從 BizTalk Server MessageBox 資料庫移至BizTalk Server追蹤資料庫。 如果未將任何BizTalk Server主機設定為[允許主機追蹤] 選項,或追蹤主機已停止,則 TDDS 將不會執行,且BizTalk Server MessageBox 資料庫中的TrackingData_x_x資料表將會未核取。

    因此,應該使用 [允許主機追蹤] 選項來設定專用BizTalk Server主機。 如需設定專用追蹤主機的詳細資訊,請參閱 設定專用追蹤主機

    若要允許 TDDS 在大量案例中維護新的追蹤事件,您可以建立單一追蹤主機的多個實例,但不應設定多個主機來進行追蹤。

  • 使用正確的 BizTalk SQL Server Agent作業。

    BizTalk Server SQL Agent 作業的執行對於管理BizTalk Server資料庫以及維護最佳效能而言非常重要。

    • 備份BizTalk Server SQL Server Agent作業是唯一支援用來備份BizTalk Server資料庫的方法。 此作業會要求您設定所有BizTalk Server資料庫,以使用完整復原模式。 您應該為狀況良好的BizTalk Server環境設定此作業。 只有當SQL Server服務停止,以及所有BizTalk Server進程都停止時,才可以使用SQL Server方法來備份BizTalk Server資料庫。

      如需在設定 SQL Agent 備份BizTalk Server作業時使用SQL Server完整復原模式的詳細資訊,請參閱完整復原模式下的記錄傳送或備份。

    • MessageBox_Message_ManageRefCountLog_BizTalkMsgBoxDb SQL Server Agent作業的設計目的是要無限期執行。 因此,SQL Agent 作業歷程記錄可能不會指出此 SQL Agent 作業已順利完成;此行為是設計方式。 如果發生失敗,作業會在 1 分鐘內重新開機,並繼續執行不分頁。 因此,通常可以忽略此作業的失敗通知。

      如果MessageBox_Message_ManageRefCountLog_BizTalkMsgBoxDb SQL Server Agent作業的作業歷程記錄指出此作業會持續失敗並重新啟動,則可能需要進一步調查失敗/重新開機週期的原因。

    • MessageBox_Message_Cleanup_BizTalkMsgBoxDb SQL Server Agent作業是唯一不應該手動啟用的作業,因為它是由MessageBox_Message_ManageRefCountLog_BizTalkMsgBoxDb作業所起始。

    • DTA 清除和封存SQL Server Agent作業會清除和封存追蹤的訊息來維護BizTalk Server追蹤資料庫。 此作業會讀取資料表中的每個資料列,並比較每個資料列的時間戳記,以判斷是否應該移除記錄。

      針對BizTalk Server SQL Server Agent作業進行疑難排解時,請確認除了MessageBox_Message_ManageRefCountLog_BizTalkMsgBoxDb完成以外的所有 SQL Agent 作業,而不會發生錯誤。

    如需SQL Server中使用的BizTalk Server SQL Agent 作業詳細資訊:

  • 監視和終止暫停的實例。

    服務實例可以暫停 (可繼續) 或暫停 (無法繼續) 。 這些服務實例可能是傳訊、協調流程或埠。 BizTalk Server使用 BizTalk Server 管理主控台中的 [群組中樞] 頁面,或使用 Terminate.vbs 腳本,來容納終止和移除這些實例。 如需有關 Terminate.vbs 腳本的詳細資訊,請參閱 移除暫停的服務實例

    您也可以使用結束字元工具來移除暫停的實例。 結束字元工具隨附于BHM 狀況監控

    「孤立」 和 「zombies」 一詞通常會交替使用。 孤立或中斷訊息是沒有相關聯服務實例的訊息,通常是因為服務實例在收到訊息之前終止。 孤立或已隔離的服務是沒有任何相關訊息的服務。 如需BizTalk Server中的 zombie 訊息和服務實例的詳細資訊,請參閱BizTalk Server 中的 Zombies

  • 監視 PhysicalDisk 效能物件的效能計數器。

    BizTalk Server短且非常快速的交易,可在一分鐘內SQL Server。 如果SQL Server無法維持此活動,您可能會遇到BizTalk Server效能問題。 監視PhysicalDisk效能物件中的Avg. Disk sec/ReadAvg. Disk sec/TransferAvg. Disk sec/Write效能監視器計數器。 最佳值小於 10 毫秒, (毫秒) 。 值為 20 毫秒或更大,被視為效能不佳。

    如需BizTalk Server資料庫高可用性的詳細資訊,請參閱為BizTalk Server資料庫提供高可用性

  • 請遵循BizTalk Server資料庫的最佳做法。 請參閱維護BizTalk Server資料庫的最佳做法

針對BizTalk Server資料庫進行疑難排解

執行下列工作,針對BizTalk Server資料庫發生任何問題進行疑難排解。

  • 確定已啟用並執行所有必要的 BizTalk SQL Server Agent作業。

    除了MessageBox_Message_ManageRefCountLog_BizTalkMsgBoxDb作業以外,所有 BizTalk SQL Server Agent作業都應該啟用並成功執行。 請勿停用任何其他工作。

    如果發生失敗,請使用 SQL Server 中的 [檢視歷程記錄] 選項來檢視錯誤資訊,然後據以針對失敗進行疑難排解。 請記住,MessageBox _Message_ManageRefCountLog_BizTalkMsgBoxDb SQL Server Agent作業無限地執行。 因此,只有在作業歷程記錄報告作業持續失敗並重新啟動時,才應該擔心。

  • 使用 MsgBoxViewer 工具來分析 BizTalk MessageBox 和其他資料庫。

    MsgBoxViewer 工具隨附于 BHM 狀況監控。 MsgBoxViewer 工具適用于疑難排解,因為它提供 HTML 報表,其中包含資料表大小和資料列計數的詳細資訊。 報表也可以協助判斷BizTalk Server是否進行節流。 此外,此工具會提供BizTalk Server資料庫和BizTalk Server組態的快照集。

    當BizTalk Server執行速度比平常慢時,請執行 MsgBoxViewer 工具,按一下以選取 [選擇性查詢] 索引標籤上的所有查詢,然後檢閱產生的 HTML 報告是否有任何問題。 [ 摘要報告] 區段會以黃色列出警告,並以紅色顯示潛在問題。

    此外,您可以使用 MsgBoxViewer 工具來判斷哪些資料表是最大且具有最多記錄。 如需通常會成長大型資料表的資料表清單,以及有關如何管理這些資料表的指示,請參閱大型成長BizTalk Server資料庫資料表

  • 使用結束字元工具來解決 MsgBoxViewer 工具所識別的問題。

    結束字元工具隨附于BHM 狀況監控。 此工具可讓使用者輕鬆地解決 BizTalk MsgBoxViewer 工具所識別的任何問題。

  • 調查死結案例。

    在死結案例中,啟用SQL Server上的 DBCC 追蹤,以便將死結資訊寫入 SQLERROR 記錄。 在 SQL Server中,執行下列語句以啟用死結案例的 DBCC 追蹤:

    DBCC TRACEON (1222,-1)
    

    您也可以使用 PSSDIAG 公用程式,在 Lock:Deadlock 事件和 Lock:Deadlock Chain 事件上收集資料。 如需詳細資訊,請參閱 PSSDIAG 資料收集公用程式

    BizTalkMsgBoxDB 資料庫是大量和高交易線上交易處理 (OLTP) 資料庫。 使用這類資料庫時,預期會有一些死結,而且此死結是由BizTalk Server引擎在內部處理。 發生此行為時,錯誤記錄檔中不會列出任何錯誤。 當您調查死結案例時,您在輸出中調查的死結必須與事件記錄檔中的死結錯誤相互關聯。

  • 尋找已封鎖的進程。

    您可以使用 SQL Server 中的活動監視器,取得鎖定系統進程 (SPID) 的伺服器進程識別碼。 然後,您可以執行 SQL Profiler 來判斷在鎖定 SPID 中執行的 SQL 語句。 您可以使用 PSSDIAG 公用程式,針對SQL Server中的鎖定和封鎖問題進行疑難排解。 公用程式會擷取所有已啟用封鎖腳本的 Transact-SQL 事件。 如需詳細資訊,請參閱 PSSDIAG 資料收集公用程式

    在SQL Server中,您可以指定封鎖的進程閾值設定,以判斷哪些 SPID 或 SPID 封鎖的時間超過您指定的臨界值。 如需封鎖進程臨界值選項的詳細資訊,請參閱 封鎖的進程臨界值選項

    當您在SQL Server遇到鎖定或封鎖問題時,您可以連絡 Microsoft 客戶支援服務。

  • 刪除所有垃圾資料。

    如果資料庫已成長為太大,而且如果資料庫中所包含的資料不再需要,則慣用的方法就是刪除資料。 謹慎: 請勿在任何業務關鍵或需要資料的環境中使用這個方法。

    若要清除 BizTalkMsgBox 資料庫

    1. 下載並安裝包含在BHM 狀況監控中的結束字元工具。

    2. 請遵循 如何在測試環境中從 MessageBox 資料庫手動清除資料 主題中的步驟,在 BizTalk MessageBox 資料庫中建立bts_CleanupMsgbox預存程式。

    3. 使用結束字元工具來執行bts_CleanupMsgbox預存程式,並清除 BizTalk MessageBox 資料庫。

      bts_CleanupMsgbox預存程式會刪除資料。 在生產環境中執行此預存程式時,請小心。

    4. 重新開機所有主機和BizTalk Server服務。

    若要清除 BizTalkDTADb 資料庫

    • 方法 1

      1. 備份所有BizTalk Server資料庫。
      2. 執行 預存程式dtasp_PurgeAllCompletedTrackingData 。 如需預存程式的詳細資訊,請參閱 如何從 BizTalk 追蹤資料庫手動清除資料
    • 方法 2:只有在 BizTalkDTADb 資料庫包含許多必須移除的不完整實例時,才使用此選項。

      1. 備份所有BizTalk Server資料庫。
      2. 停止所有 BizTalk 主機、服務和自訂隔離介面卡。 如果您使用 HTTP 或 SOAP 配接器,請重新開機 IIS 服務。
      3. 在 BizTalkDTADb 資料庫上執行 dtasp_CleanHMData 預存程式。
      4. 重新開機所有主機和BizTalk Server服務。

    如果您必須擁有追蹤資料,請備份 BizTalkDTADb 資料庫、將資料庫還原到另一個SQL Server,然後清除原始的 BizTalkDTADb 資料庫。

如果您想要協助分析 MsgBoxViewer 資料或 PSSDIAG 輸出,請連絡 Microsoft 客戶支援服務。 連絡客戶支援服務之前,請先壓縮 MsgBoxViewer 資料、PSSDIAG 輸出,以及更新的事件記錄檔 (.evt 檔案) 。 您可能必須將這些檔案傳送給BizTalk Server支援工程師。

下一個

另請參閱

不應該變更的 SQL Server 設定