共用方式為


監視資料庫鏡像(SQL Server)

本節介紹資料庫鏡像監視器和 sp_dbmmonitor 系統預存程式、說明資料庫鏡像監視的運作方式(包括 資料庫鏡像監視器作業),並摘要說明您可以監視資料庫鏡像會話的相關信息。 此外,本節介紹如何為一組預先定義的資料庫鏡像事件定義警告閾值,以及如何在任何資料庫鏡像事件上設定警示。

您可以在鏡像會話期間監視鏡像資料庫,以確認數據是否流動及流向程度。 若要在伺服器實例上設定和管理一或多個鏡像資料庫的監視,您可以使用資料庫鏡像監視器或 sp_dbmmonitor 系統預存程式。

資料庫鏡像監視作業 資料庫鏡像監視作業可在背景中運作,與資料庫鏡像監視器無關。 SQL Server Agent 會定期呼叫 資料庫鏡像監視作業 、預設值為一分鐘,而作業會呼叫更新鏡像狀態的預存程式。 如果您使用 SQL Server Management Studio 來啟動鏡像會話,系統會自動建立 資料庫鏡像監視作業 。 不過,如果您只使用 ALTER DATABASE <database_name> SET PARTNER 設定鏡像,必須透過執行預存程式來建立作業。

本主題內容:

監控鏡像狀態

若要在伺服器實例上設定及管理一或多個鏡像資料庫的監視,您可以使用資料庫鏡像監視器或 dbmmonitor 系統預存程式。 您可以在鏡像會話期間監視鏡像資料庫,以確認數據是否流動及流向程度。

具體而言,監視鏡像資料庫可讓您:

  • 確認鏡像正常運作。

    基本狀態包括確認兩個伺服器實例是否已啟動、伺服器是否已連線,以及記錄檔正從主伺服器移至鏡像伺服器。

  • 判斷鏡像資料庫是否跟上主體資料庫。

    在高效能模式期間,主體伺服器可能會累積需要從主體伺服器傳送到鏡像伺服器的尚未傳送的記錄檔記錄。 此外,在任何操作模式下,鏡像伺服器可能會累積已寫入日誌檔案但仍需在鏡像資料庫上還原的待還原日誌記錄。

  • 判斷主體伺服器實例在高效能模式期間無法使用時遺失的數據量。

    您可以透過查看未傳送的交易日誌數量(若有)以及遺失交易在主機上被提交的時間間隔,來判斷資料遺失。

  • 比較目前的效能與過去的效能。

    發生問題時,資料庫管理員可以檢視鏡像效能的歷程記錄,以協助瞭解目前的狀態。 查看歷程記錄可讓用戶偵測效能趨勢、識別效能問題的模式(例如網路速度緩慢或進入記錄的命令數目非常大)。

  • 針對鏡像夥伴之間資料流量減少的原因進行排除故障。

  • 設定關鍵效能計量的警告臨界值。

    如果新的狀態數據列包含超過閾值的值,則會將參考事件傳送至 Windows 事件記錄檔。 然後,系統管理員可以根據這些事件手動設定警示。 如需詳細資訊,請參閱在鏡像效能計量上使用警告臨界值和警示(SQL Server)。

監視資料庫鏡像狀態的工具

您可以使用資料庫鏡像監視器或 sp_dbmmonitorresults 系統預存程式來監視鏡像狀態。 這些工具能夠用來監控本機伺服器實例上的任何鏡像資料庫的資料庫鏡像。此功能可供系統管理員,也就是sysadmin固定伺服器角色的成員使用,以及被系統管理員加入 msdb 資料庫中的 dbm_monitor 固定資料庫角色的使用者使用。 使用任一工具時,系統管理員也可以手動重新整理鏡像狀態。

備註

系統管理員也可以設定和檢視關鍵效能計量的警告閾值。 如需詳細資訊,請參閱在鏡像效能計量上使用警告臨界值和警示(SQL Server)。

  • 資料庫鏡像監視器

    資料庫鏡像監視器是一種圖形使用者介面工具,可讓系統管理員檢視和更新狀態,以及在數個主要效能計量上設定警告臨界值。 dbm_monitor固定資料庫角色的成員也可以使用資料庫鏡像監視器來檢視鏡像狀態數據表的最新數據列,但無法更新狀態數據表。

    監視器會顯示 [ 狀態 ] 索引標籤面上所選資料庫的狀態,包括效能計量。 此頁面的內容來自於主體伺服器執行個體和鏡像伺服器執行個體。 當透過獨立連接至主伺服器和鏡像伺服器的執行個體來蒐集狀態時,頁面將以非同步方式填充。 監視器會嘗試以 30 秒間隔更新狀態數據表。 只有在數據表未在 15 秒內更新,且使用者是 系統管理員 固定伺服器角色的成員時,更新才會成功。 如需報告在 狀態 頁面上的資訊摘要,請參閱稍後在本主題中 資料庫鏡像監視器所顯示的狀態

    如需資料庫鏡像監視器介面的簡介,請參閱 資料庫鏡像監視器概觀。 如需啟動資料庫鏡像監視器的詳細資訊,請參閱啟動資料庫鏡像監視器(SQL Server Management Studio)。

  • 系統預存程序

    您也可以執行 sp_dbmmonitorresults 系統預存程式來擷取或更新目前的狀態。 其他 dbmmonitor 預存程式可讓您設定監視、變更監視參數、檢視目前的更新期間,以及卸載伺服器實例上的監視。

    下表介紹與資料庫鏡像監視器無關管理及使用資料庫鏡像監視的預存程式。

    程序 說明
    sp_dbmmonitoraddmonitoring 建立作業,以定期更新伺服器實例上每個鏡像資料庫的狀態資訊。
    sp_dbmmonitorchangemonitoring 變更資料庫鏡像監視參數的值。
    sp_dbmmonitorhelpmonitoring 回傳目前的更新期間。
    sp_dbmmonitorresults 傳回受監視資料庫的狀態數據列,並可讓您選擇程式是否事先取得最新狀態。
    sp_dbmmonitordropmonitoring 停止並刪除伺服器實例上所有資料庫的鏡像監視作業。

    dbmmonitor 系統預存程式可作為資料庫鏡像監視器的輔助程式。 例如,即使使用 sp_dbmmonitoraddmonitoring 設定監視,資料庫鏡像監視器仍可用來檢視狀態。

監視的運作方式

本節介紹資料庫鏡像狀態數據表、資料庫鏡像監視作業和監視器、使用者如何監視資料庫鏡像狀態,以及如何卸除監視作業。

資料庫鏡像狀態數據表

資料庫鏡像狀態會儲存在 msdb 資料庫中的內部未記載資料庫鏡像狀態數據表中。 此狀態數據表會在伺服器實例上第一次更新鏡像狀態時自動建立。

系統管理員可以自動或手動更新狀態數據表,且更新間隔下限為 15 秒。 15 秒的最低限制可防止伺服器實例因狀態請求過載。

如果執行,資料庫鏡像監視器和資料庫鏡像監視作業都會自動更新狀態數據表。 資料庫鏡像監視器作業 預設會更新數據表一分鐘一次(系統管理員可以指定 1 到 120 分鐘的更新期間)。 相反地,資料庫鏡像監視器會每隔 30 秒自動更新數據表。 針對這些更新, 資料庫鏡像監視作業和資料庫鏡像監視器 會呼叫 sp_dbmmonitorupdate

第一次執行sp_dbmmonitorupdate時,它會在 msdb 資料庫中建立資料庫鏡像狀態數據表和dbm_monitor固定資料庫角色。 sp_dbmmonitorupdate 通常會將新數據列插入伺服器實例上每個鏡像資料庫的狀態數據表,以更新鏡像狀態;如需詳細資訊,請參閱本主題稍後的。 此程式也會評估新數據列中的效能計量,並截斷比目前保留期間還舊的數據列(預設值為 7 天)。 如需詳細資訊,請參閱 sp_dbmmonitorupdate (Transact-SQL)

備註

除非資料庫鏡像監視器目前正由 系統管理員 固定伺服器角色的成員使用,否則只有在 資料庫鏡像監視器作業 存在且 SQL Server Agent 正在執行時,才會自動更新狀態數據表。

資料庫鏡像監視器作業

資料庫鏡像監視作業 資料庫鏡像監視作業與資料庫鏡像監視器無關。 只有在 SQL Server Management Studio 用來啟動鏡像會話時,才會自動建立資料庫鏡像監視器作業。 如果 ALTER DATABASE database_name SET PARTNER 命令一律用來啟動鏡像,只有當系統管理員執行 sp_dbmmonitoraddmonitoring 預存程式時,作業才會存在。

建立 資料庫鏡像監視器作業 之後,假設 SQL Server Agent 正在執行,則預設會呼叫作業一分鐘一次。 然後作業會呼叫 sp_dbmmonitorupdate 系統預存程式。

SQL Server Agent 預設會呼叫 資料庫鏡像監視器作業 一次,而作業會 呼叫sp_dbmmonitorupdate 來更新狀態數據表。 系統管理員可以使用 sp_dbmmonitorchangemonitoring 系統預存程式來變更更新期間,而且可以使用 sp_dbmmonitorchangemonitoring 系統預存程式來檢視目前的更新期間。 如需詳細資訊,請參閱sp_dbmmonitoraddmonitoring(Transact-SQL)sp_dbmmonitorchangemonitoring(Transact-SQL)。

監視資料庫鏡像狀態 (由系統管理員)

系統管理員固定伺服器角色的成員可以檢視和更新狀態數據表

  • 使用資料庫鏡像監視器

    使用資料庫鏡像監視器時,系統管理員可以手動重新整理 [狀態 ] 頁面、流覽樹狀目錄或 [ 歷程記錄 ] 頁面。 這也會更新狀態數據表,除非它已在前 15 秒內更新。

    若要檢視指定伺服器實例上鏡像狀態的歷程記錄,系統管理員也可以按下伺服器實例的 [ 歷程記錄 ] 按鈕(在 [ 狀態 ] 頁面上)。 記錄會顯示在 [ 資料庫鏡像記錄 ] 對話框中。 在此,系統管理員可以在伺服器實例的狀態數據表中檢視部分或所有數據列。

    如需 狀態 頁面計量的相關信息,請參閱本主題稍後的「資料庫鏡像監視器」所顯示的效能計量。

  • 使用 sp_dbmmonitorresults

    系統管理員可以使用 sp_dbmmonitorresults 系統預存程序來檢視狀態資料表,如果該資料表在前 15 秒內未更新,則可以選擇更新。 此程式會呼叫 sp_dbmmonitorupdate 程式,並根據過程調用中所要求的數量傳回一或多個歷程記錄數據列。 如需其結果集中狀態的相關信息,請參閱 sp_dbmmonitorresults (Transact-SQL)

監視資料庫鏡像狀態(由 dbm_monitor 成員)

如前所述,第一次執行sp_dbmmonitorupdate時,它會在 msdb 資料庫中建立dbm_monitor固定資料庫角色。 dbm_monitor固定資料庫角色的成員可以使用資料庫鏡像監視器或sp_dbmmonitorresults預存程式來檢視現有的鏡像狀態。 但這些用戶無法更新狀態數據表。 若要了解顯示狀態的存留期,用戶可以在 [狀態] 頁面上查看主體記錄 (<time>[鏡像記錄]<卷標中的時間>

dbm_monitor固定資料庫角色的成員取決於資料庫鏡像監視作業,以定期更新狀態數據表。 如果作業不存在或 SQL Server Agent 已停止,狀態會變得越來越過時,而且可能不再反映鏡像會話的設定。 例如,在故障轉移之後,夥伴可能會顯示為共用相同的角色-主體或鏡像,或目前的主體伺服器可能會顯示為鏡像伺服器,而目前的鏡像伺服器可能會顯示為主體伺服器。

卸除資料庫鏡像監視作業

資料庫鏡像監視作業資料庫鏡像監視器作業會一直存在,直到被刪除為止。 監視作業必須由系統管理員管理。 若要卸除 資料庫鏡像監視作業,請使用 sp_dbmmonitordropmonitoring。 如需詳細資訊,請參閱 sp_dbmmonitordropmonitoring (Transact-SQL)

資料庫鏡像監視器顯示的狀態

[資料庫鏡像監視器] 的 [ 狀態 ] 頁面會描述夥伴,以及鏡像會話的狀態。 狀態包含效能計量,例如事務歷史記錄的狀態和其他資訊,其旨在協助目前預估完成故障轉移所需的時間,以及會話未同步處理時數據遺失的可能性。 此外,[ 狀態] 頁面會顯示一般鏡像會話的狀態和相關信息。

備註

如需資料庫鏡像監視器和 狀態 頁面的簡介,請參閱本主題稍早 的監視資料庫鏡像狀態工具

每個項目的資訊摘要將在下列各節中說明。

合作夥伴

[ 狀態] 頁面會顯示每個合作夥伴的下列資訊:

  • 伺服器實例

    狀態顯示在 [ 狀態 ] 資料列中的伺服器實例名稱。

  • 目前的角色

    伺服器實例的目前角色。 可能的狀態為:

    • 校長

    • 鏡子

  • 鏡像狀態

    可能的狀態為:

    • 未知

    • 同步中

    • 同步

    • 已暫停

    • 已中斷連線

  • 證人連結

    證人連接狀態。 可能的狀態為:

    • 未知

    • 已連線

    • 斷開。

登入主體伺服器

[ 狀態] 頁面會顯示有關主體伺服器上記錄狀態的下列資訊,從指定的時間起:

  • 未傳送記錄檔

    在傳送佇列中等候的記錄數量,以 KB 為單位。

  • 最舊的未傳送交易

    傳送佇列中最舊的未傳送交易存留期。 此交易的存留期表示尚未傳送到鏡像伺服器實例的交易分鐘數。 這個值有助於從時間方面來測量資料遺失的可能性。

  • 傳送記錄的時間(估計)

    根據目前的傳送速率,估計主要伺服器實例需要花費多少分鐘,才能將當前在傳送佇列中的記錄傳送至鏡像伺服器實例。 傳送記錄的實際時間將受到傳入交易速率的影響,這可能會有很大的差異。 不過, 傳送記錄的時間(估計) 值對於大致估計手動故障轉移所需的時間很有用。

  • 目前的傳送速率

    每秒以 KB 為單位將交易傳送至鏡像伺服器實例的速率。

  • 新交易的目前速率

    傳入交易被記錄到主體日誌上的速率,每秒以 KB 為單位。 若要判斷鏡像是否落後、持平或趕上,請將此值與 傳送記錄的估計時間 進行比較。

登入鏡像伺服器

[ 狀態 ] 頁面會顯示有關鏡像伺服器上記錄狀態的下列資訊,從指定的時間起:

  • 未還原的記錄檔

    在重做佇列中等候的記錄數量,以 KB 為單位。

  • 還原記錄的時間(估計)

    目前在重做佇列中套用至鏡像資料庫之記錄所需的大約分鐘數。

  • 目前的還原速率

    將交易還原至鏡像資料庫的速率(以 KB/秒為單位)。

鏡像會話

此外,[ 狀態] 頁面會顯示鏡像會話的下列資訊:

  • 鏡像提交額外負荷

    每筆交易的平均延遲以毫秒為單位(僅與高安全性模式相關)。 這項延遲是當主體伺服器執行個體等待鏡像伺服器執行個體將交易記錄寫入重做佇列中時所產生的負擔量。

  • 傳送和還原所有目前記錄的時間(估計)

    傳送已在主體認可的所有未傳送記錄檔,以及還原目前在重做佇列中的所有記錄檔所需的估計時間。 由於傳送和還原可以平行運作,因此此估計值可能小於 [ 傳送記錄的時間] 值的總和(估計的)[還原記錄 的時間] 字段。

  • 證人地址

    見證伺服器實例的網路位址。 如需此位址格式的詳細資訊,請參閱指定伺服器網路位址(資料庫鏡像)。

  • 作業模式

    資料庫鏡像工作模式:

    • 高效能 (異步)

    • 沒有自動故障轉移的高安全性(同步)

    • 高度安全性與自動故障轉移(同步)

鏡像資料庫的其他資訊來源

除了使用資料庫鏡像監視器和 dbmmonitor 預存程式來監視鏡像資料庫並設定受監視效能變數的警示之外,SQL Server 2014 還提供資料庫鏡像的目錄檢視、性能計數器和事件通知。

本節內容:

資料庫鏡像元數據

每個資料庫鏡像會話都會在透過下列目錄或動態管理檢視公開的元數據中描述:

資料庫鏡像性能計數器

性能計數器可讓您監視資料庫鏡像效能。 例如,您可以檢查 異動延遲 計數器,以查看資料庫鏡像是否影響主體伺服器上的效能,您可以檢查 重做佇列記錄傳送佇列 計數器,以查看鏡像資料庫與主體資料庫是否保持一定程度。 您可以檢查 Log Bytes Sent/sec 計數器,以監視每秒傳送的記錄數量。

在任一夥伴上的性能監視器中,性能計數器可在資料庫鏡像性能物件中取得(SQLServer:Database Mirroring)。 如需詳細資訊,請參閱 SQL Server 資料庫鏡像物件

啟動效能監視器

資料庫鏡像事件通知

事件通知是一種特殊的資料庫物件。 事件通知會執行,以回應各種 Transact-SQL 數據定義語言 (DDL) 語句和 SQL 追蹤事件,並將伺服器和資料庫事件的相關信息傳送至 Service Broker 服務。

下列事件可供資料庫鏡像使用:

相關工作

預存程序

另請參閱

資料庫鏡像 (SQL Server)
WMI 提供者的伺服器事件概念