監視高可用性及站台恢復

 

適用版本: Exchange Server 2010 SP2, Exchange Server 2010 SP3

上次修改主題的時間: 2015-03-09

確定您的伺服器操作確實,且資料庫副本正常,是每天通訊作業的主要目標。 為了協助確保 Microsoft Exchange Server 2010 組織的可用性和可靠性,您必須主動監控硬體、Windows 作業系統和 Exchange 2010 服務。 主動式監控結合了預防性維護,可在嚴重問題干擾 Exchange 組織運作之前,協助您識別潛在的錯誤。

監控您的 Exchange 組織,涵蓋定期檢查服務或資料的問題。 監控通常包含發生問題時傳送警示的通知系統。Windows Server 2008 和 Exchange 2010 包含一些可協助您 Exchange 組織順利執行的工具和服務。 以下是每日監控的主要優點:

  • 符合服務等級協定 (SLA) 的需求

  • 確定成功完成特定的系統管理工作,例如,每日備份作業。

  • 偵測並解決問題,例如,可能影響通訊服務或資料可用性的問題。

在 Exchange 2010 組織內,作業中包括的程序、角色及責任都應該定形。 請務必了解,健全營運作法與狀況良好的基礎結構之間的關聯。 有大量文件記錄的完善操作處理序與程序,可協助確保 Exchange 所仰賴之組織環境內的所有元件,均能有效地受到管理。

Exchange 2010 包含一些內建的工具、指令碼和功能,針對高可用性或站台恢復設定 Exchange 時,可做為定期主動式監控的一部分。 高可用性和站台恢復的主要監控指令程式為 Get-MailboxDatabaseCopyStatusTest-ReplicationHealth。 除了提供可執行監控功能和報告狀態的指令程式之外,Exchange 2010 還具有可在 Windows Server 中充分運用 Crimson 通道能力的新事件日誌資料流功能,以及可從這些事件通道收集和分析資料的內建指令碼。

您可以使用本主題中的詳細資料,為資料庫可用性群組 (DAG) 監控信箱資料庫副本的狀況和狀態。

目錄

Get-MailboxDatabaseCopyStatus 指令程式

Test-ReplicationHealth 指令程式

Crimson 通道事件記錄

CollectOverMetrics.ps1 指令碼

CollectReplicationMetrics.ps1 指令碼

CheckDatabaseRedundancy.ps1 指令碼

Get-MailboxDatabaseCopyStatus 指令程式

您可以使用 Get-MailboxDatabaseCopyStatus 指令程式來檢視信箱資料庫副本的狀態資訊。 此指令程式可讓您檢視特定資料庫的所有副本資訊、特定伺服器的特定副本資訊,或伺服器的所有資料庫副本資訊。 下表說明信箱資料庫可能的副本狀態值。

資料庫副本狀態

資料庫副本狀態 描述

失敗

因為信箱資料庫副本未擱置且無法複製或重新顯示記錄檔,所以信箱資料庫副本的狀態為「失敗」。 當狀態為「失敗」且未擱置時,系統會定期檢查導致副本狀態變更為「失敗」的問題是否已解決。 當系統偵測到問題已解決且沒有其他問題,副本狀態會自動變更為「正常」。

植入

已植入信箱資料庫副本、信箱資料庫副本的內容索引,或是兩者皆已植入。 成功完成植入時副本狀態應變更為正在初始化。

SeedingSource

信箱資料庫副本正被用來作為資料庫副本植入作業的來源。

已擱置

因為系統管理員執行 Suspend-MailboxDatabaseCopy 指令程式,手動擱置資料庫副本,所以信箱資料庫副本的狀態為「已擱置」。

正常

信箱資料庫副本成功複製並重新顯示記錄檔,或已成功複製並重新顯示所有可用的記錄檔。

ServiceDown

Microsoft Exchange 複寫服務無法在主控信箱資料庫副本的伺服器上使用或執行。

初始化

當已建立信箱資料庫副本、Microsoft Exchange 複寫服務開始或剛開始,以及從「已擱置」、「ServiceDown」、「失敗」、「植入」、「SinglePageRestore」、「LostWrite」或「已中斷」轉換為其他狀態期間,信箱資料庫副本的狀態將為「正在初始化」。 在此狀態下,系統會驗證資料庫和記錄資料流的狀態是否一致。 在大部分情況下,副本狀態會維持在「正在初始化」的狀態約 15 秒,但在任何情況下,通常維持在此狀態的時間不應超過 30 秒。

重新同步處理

信箱資料庫副本及其記錄檔已經和資料庫的主動副本比對過,以檢查兩份副本之間的任何分歧。 副本狀態會維持在此狀態,直到偵測到分歧或分歧解決為止。

已裝載

主動副本為線上並接受用戶端連線。 只有信箱資料庫的主動副本可以有「已裝載」的副本狀態。

已卸載

主動副本為離線且不接受用戶端連線。 只有信箱資料庫的主動副本可以有「已卸載」的副本狀態。

裝載中

主動副本正在進入線上,並且尚未接受用戶端連線。 只有信箱資料庫的主動副本可以有「裝載中」的副本狀態。

卸載中

主動副本即將離線並終止用戶端連線。 只有信箱資料庫的主動副本可以有「卸載中」的副本狀態。

DisconnectedAndHealthy

信箱資料庫副本不再連線至主動資料庫副本,並且在中斷連線時其狀態為「正常」。 此狀態表示資料庫副本與其來源資料庫副本的連接性。 來源副本和目標資料庫副本之間發生 DAG 網路失敗時即可能報告此狀態。

DisconnectedAndResynchronizing

信箱資料庫副本不再連線至主動資料庫副本,並且在中斷連線時其狀態為「重新同步處理」。 此狀態表示資料庫副本與其來源資料庫副本的連接性。 來源副本和目標資料庫副本之間發生 DAG 網路失敗時即可能報告此狀態。

FailedAndSuspended

由於偵測到失敗,並且明確需要系統管理員的介入來解決失敗,所以系統同時設定了「失敗」和「已擱置」狀態。 例如,如果系統在作用中信箱資料庫和資料庫副本之間偵測到無法復原的分歧。 不像「失敗」狀態,系統不會定期檢查問題是否已解決並自動復原。 而是在資料庫副本可以轉換為正常狀態之前,由系統管理員介入來解決失敗的根本原因。

SinglePageRestore

此狀態表示信箱資料庫副本發生單一頁面還原操作。

Get-MailboxDatabaseCopyStatus 指令程式還包含稱為 ConnectionStatus 的參數,可傳回使用中複寫網路的相關資訊。 如果您使用此參數,IncomingLogCopyingNetworkSeedingNetwork 等兩個其他輸出欄位將填入該工作的輸出。

Get-MailboxDatabaseCopyStatus 範例

下列範例使用 Get-MailboxDatabaseCopyStatus 指令程式。 每一個範例都會將結果以管線傳送至 Format-List 指令程式,以便以清單格式顯示輸出。

本範例傳回 DB2 資料庫所有複本的狀態資訊。

Get-MailboxDatabaseCopyStatus -Identity DB2 | Format-List

本範例傳回信箱伺服器 MBX2 上所有資料庫複本的狀態。

Get-MailboxDatabaseCopyStatus -Server MBX2 | Format-List

此範例傳回本機 Mailbox Server 上所有資料庫副本的狀態。

Get-MailboxDatabaseCopyStatus -Local | Format-List

此範例傳回 Mailbox Server MBX1 上資料庫 DB3 的狀態、記錄傳送和植入網路資訊。

Get-MailboxDatabaseCopyStatus -Identity DB3\MBX1 -ConnectionStatus | Format-List

如需使用 Get-MailboxDatabaseCopyStatus 指令程式的相關資訊,請參閱 Get-MailboxDatabaseCopyStatus

Get-MailboxDatabaseCopyStatus 指令程式

Test-ReplicationHealth 指令程式

您可以使用 Test-ReplicationHealth 指令程式來檢視信箱資料庫副本的連續複寫狀態資訊。 此指令程式可用來檢查複寫和重新顯示的各個部分,以提供 DAG 中特定 Mailbox Server 的完整概觀。

Test-ReplicationHealth 指令程式旨在用來主動監視連續複寫和連續複寫管線、Active Manager 的可用性,以及基礎叢集服務、仲裁及網路元件的健全狀況和狀態。 可在本機或在遠端針對 DAG 中任何的信箱伺服器執行。 Test-ReplicationHealth 指令程式會執行下表所列出的測試。

Test-ReplicationHealth 指令程式測試

測試名稱 描述

ClusterService

驗證在指定的 DAG 成員上是否正在執行叢集服務並且可以存取,若沒有指定任何 DAG 成員,則驗證本機伺服器。

ReplayService

驗證在指定的 DAG 成員上是否正在執行 Microsoft Exchange 複寫服務並且可以存取,若沒有指定任何 DAG 成員,則驗證本機伺服器。

ActiveManager

驗證在指定的 DAG 成員上所執行的 Active Manager 執行個體 (若沒有指定任何 DAG 成員,則為本機伺服器),其角色是有效的 (主要、次要或獨立)。

TasksRpcListener

驗證在指定的 DAG 成員上是否正在執行工作遠端程序呼叫 (RPC) 伺服器並且可以存取,若沒有指定任何 DAG 成員,則驗證本機伺服器。

TcpListener

驗證在指定的 DAG 成員上是否正在執行 TCP 記錄複製接聽程式並且可以存取,若沒有指定任何 DAG 成員,則驗證本機伺服器。

DagMembersUp

驗證所有 DAG 成員是否可以使用、執行和存取。

ClusterNetwork

驗證在指定的 DAG 成員上找到的所有叢集管理網路是否皆可用 (若沒有指定任何 DAG 成員,則為本機伺服器)。

QuorumGroup

驗證預設的叢集群組 (仲裁群組) 的狀態為正常且為線上。

FileShareQuorum

驗證見證伺服器、見證目錄和 DAG 的共用設定是否皆可存取。

DBCopySuspended

檢查在指定的 DAG 成員上所有信箱資料庫副本的狀態是否皆為「已擱置」,若沒有指定任何 DAG 成員,則檢查本機伺服器。

DBCopyFailed

檢查在指定的 DAG 成員上所有信箱資料庫副本的狀態是否皆為「失敗」,若沒有指定任何 DAG 成員,則檢查本機伺服器。

DBInitializing

檢查在指定的 DAG 成員上所有信箱資料庫副本的狀態是否皆為「正在初始化」,若沒有指定任何 DAG 成員,則檢查本機伺服器。

DBDisconnected

檢查在指定的 DAG 成員上所有信箱資料庫副本的狀態是否皆為「已中斷連線」,若沒有指定任何 DAG 成員,則檢查本機伺服器。

DBLogCopyKeepingUp

驗證在指定的 DAG 成員 (若沒有指定任何 DAG 成員,則驗證本機伺服器) 上資料庫被動副本的記錄檔複製和檢查是否可跟得上被動副本上的記錄檔產生活動。

DBLogReplayKeepingUp

驗證在指定的 DAG 成員 (若沒有指定任何 DAG 成員,則驗證本機伺服器) 上資料庫被動副本的重新顯示活動是否可跟得上記錄檔複製和檢查活動。

Test-ReplicationHealth 範例

這個範例使用 Test-ReplicationHealth 指令程式來測試 Mailbox Server MBX1 的複寫狀況。

Test-ReplicationHealth -Identity MBX1

Get-MailboxDatabaseCopyStatus 指令程式

Crimson 通道事件記錄

Windows Server 2008 包含兩個類別的事件記錄: Windows 記錄與「應用程式及服務」記錄。 Windows 記錄類別包含可於舊版 Windows 使用的事件記錄: 應用程式、 安全性和系統事件記錄。 也包含兩個新記錄: 「安裝」記錄與 ForwardedEvents 記錄。Windows 記錄的目的是從舊版應用程式和套用到整個系統的事件儲存事件。

「應用程式及服務」記錄是新的事件記錄類別。 這些記錄儲存單一應用程式或元件中的事件,而非可能影響整個系統的事件。 事件記錄的這個新類別稱為應用程式的Crimson 通道。

「應用程式及服務」記錄類別包含四個子類型: 「系統管理」、「操作」、「分析」和「偵錯」記錄。 如果您使用事件記錄來疑難排解問題,則「系統管理」記錄中的事件特別有用。 「系統管理」記錄中的事件應提供您如何回應事件的指引。 「操作」記錄中的事件也相當有用,但可能需要更多解譯。 「系統管理」與「偵錯」記錄難以使用。 「分析」記錄 (預設為隱藏並停用) 儲存用於追蹤問題的事件,經常記錄著大量事件。 「偵錯」記錄供開發人員於偵錯應用程式時使用。

Exchange 2010 將事件記錄到「應用程式及服務」記錄區的Crimson 通道內。 您可以執行下列步驟來檢視這些通道:

  1. 開啟 [事件檢視器]。

  2. 在主控台樹狀目錄中,瀏覽至 [應用程式及服務記錄] > [Microsoft] > [Exchange]。

  3. 選取 [Exchange] 下的Crimson 通道: [HighAvailability] 或 [MailboxDatabaseFailureItems]。

HighAvailability 通道包含與啟動和關閉 Microsoft Exchange 複寫服務相關的事件,以及 Microsoft Exchange 複寫服務內執行的元件,例如,Active Manager、第三方同步處理複寫 API、工作 RPC 伺服器、TCP 接聽程式和磁碟區陰影複製服務 (VSS) 編寫器。 Active Manager 也會使用 HighAvailability 通道來記錄與 Active Manager 角色監視相關的事件和資料庫動作事件,例如,資料庫裝載操作和記錄檔截斷,以及記錄與 DAG 基礎叢集相關的事件。

MailboxDatabaseFailureItems 通道可用來記錄影響複寫信箱資料庫失敗的所有相關事件。

Get-MailboxDatabaseCopyStatus 指令程式

CollectOverMetrics.ps1 指令碼

Exchange 2010 包含稱為 CollectOverMetrics.ps1 的指令碼,您可以在 Scripts 資料夾內找到這個指令碼。 CollectOverMetrics.ps1 會讀取 DAG 成員事件日誌,以收集一段特定時間內的資料庫作業相關資訊 (例如資料庫裝載、移動和轉換)。 此指令碼會記錄每一項作業的下列資訊:

  • 資料庫的識別碼

  • 作業開始和結束的時間

  • 作業開始和完成時用來裝載資料庫的伺服器

  • 執行作業的原因

  • 作業是否執行成功,包括作業失敗時的錯誤詳細資料

此指令碼會以每列一項作業的方式將這些資訊寫入 .csv 檔案中。 它會為每個 DAG 寫入一個個別的 .csv 檔案。

指令碼支援可讓您自訂指令碼行為和輸出的參數。 例如,您可以使用 DatabaseReportFilter 參數將產生的結果限定為指定的子集。 摘要 HTML 報告中只會包含符合這些篩選器的作業。 下表列出可用的參數。

CollectOverMetrics.ps1 指令碼參數

參數 描述

DatabaseAvailabilityGroup

指定您想從其中收集度量資訊的 DAG 名稱。 若省略此參數,會使用本機伺服器為其成員的 DAG。 您可以使用萬用字元從多個 DAG 收集資訊並提供其相關報告。

Database

提供需產生報告的資料庫清單。 支援萬用字元,例如,-Database:"DB1","DB2"-Database:"DB*"

StartTime

指定所要報告之時段的持續時間。 指令碼只會收集在這段時間內記錄的事件。 因此,指令碼可能會擷取一部分的作業記錄 (例如,只有該時段開始時的作業結尾或相反)。 如果沒有指定 StartTime 也沒有指定 EndTime,指令碼會預設為過去 24 小時。 如果只指定其中一個參數,此時段將為於指定之時間開始或結束的 24 小時。

EndTime

指定所要報告之時段的持續時間。 指令碼只會收集在這段時間內記錄的事件。 因此,指令碼可能會擷取一部分的作業記錄 (例如,只有該時段開始時的作業結尾或相反)。 如果沒有指定 StartTime 也沒有指定 EndTime,指令碼會預設為過去 24 小時。如果只指定其中一個參數,此時段將為於指定之時間開始或結束的 24 小時。

ReportPath

指定用來儲存事件處理結果的資料夾。 若省略此參數,則會使用 Scripts 資料夾。 指定此參數時,指令碼會取得指令碼所產生的 .csv 檔案清單,並使用它們當作產生摘要 HTML 報告的資料來源。 此報告與使用 -GenerateHtmlReport 選項所產生的報告相同。 產生的檔案可以橫跨在許多不同時間 (甚至是時間重疊) 的多個資料庫可用性群組,而且指令碼會將它們的所有資料合部合併在一起。

GenerateHtmlReport

指定讓指令碼收集它曾記錄的所有資訊、按作業類型將資料分組,然後再產生包含每個分組之統計資料的 HTML 檔案。 此報告包括各分組的作業總數、失敗的作業數目,以及每一組所花費的時間。 報告中也包含造成作業失敗之錯誤類型的細目。

ShowHtmlReport

指定 HTML 產生的報表於產生後應以 Web 瀏覽器顯示。

SummariseCSVFiles

指定讓指令碼從指令碼先前產生的現有 .csv 檔案讀取資料, 然後再使用這項資料產生與 GenerateHtmlReport 參數產生之報告類似的摘要報告。

ActionType

指定指令碼應收集的操作動作類型。 這個參數的值為 MoveMountDismountRemountMove 值是指每次資料庫變更其作用中的伺服器時 (不論是受控制移動或容錯移轉) 所進行的動作。 MountDismountRemount 值則是指資料庫變更其裝載的狀態,但並未移動至其他電腦。

ActionTrigger

指定指令碼應收集哪些系統管理作業。 這個參數的值為 AdminAutomatic。 Automatic 動作是系統自動執行的動作 (例如,伺服器離線時的容錯移轉)。 Admin 動作是系統管理員使用 Exchange 管理命令介面或 Exchange 管理主控台執行的任何動作。

RawOutput

指定讓指令碼將已寫入至 .csv 檔案的結果,直接寫入輸出資料流中,就和使用 write-output 一樣。 接著便可將這項資訊傳送到其他命令。

IncludedExtendedEvents

指定讓指令碼收集事件,而收集的事件提供裝載資料庫所花時間的診斷詳細資料。 如果伺服器的應用程式事件日誌很大,這個階段可能非常耗時。

MergeCSVFiles

指定讓指令碼取得包含每一項作業相關資料的所有 .csv 檔案,並將它們合併成單一 .csv 檔案。

ReportFilter

指定應使用出現在 .csv 檔案中的欄位將篩選器套用到作業。 這個參數使用的格式與 Where 作業相同,也就是將每個元素設定為 $_,並傳回布林值。 例如: {$_DatabaseName -notlike "Mailbox Database*"} 可用來在報告中排除預設資料庫。

CollectOverMetrics.ps1 範例

以下範例會收集名為 DAG1 之 DAG 中符合 DB* (包含萬用字元) 的所有資料庫度量資訊。 收集度量資訊之後,會產生並顯示 HTML 報告。

CollectOverMetrics.ps1 -DatabaseAvailabilityGroup DAG1 -Database:"DB*" -GenerateHTMLReport -ShowHTMLReport

下列範例示範摘要 HTML 報告可以使用的篩選方法。 第一種範例使用 Database 參數取得資料庫名稱的清單, 讓摘要報告中只包含這些資料庫的相關資料。 後面兩個範例則使用 ReportFilter 選項。 最後一個範例會篩選出所有的預設資料庫。

CollectOverMetrics -SummariseCsvFiles (dir *.csv) -Database MailboxDatabase123,MailboxDatabase456
CollectOverMetrics -SummariseCsvFiles (dir *.csv) -ReportFilter { $_.DatabaseName -notlike "Mailbox Database*" }
CollectOverMetrics -SummariseCsvFiles (dir *.csv) -ReportFilter { ($_.ActiveOnStart -like "ServerXYZ*") -and ($_.ActiveOnEnd -notlike "ServerXYZ*") }

Get-MailboxDatabaseCopyStatus 指令程式

CollectReplicationMetrics.ps1 指令碼

另一個包含在 Exchange 2010 內的狀況度量指令碼是 CollectReplicationMetrics.ps1。 這個指令碼在執行時即時收集度量資訊,所以提供了一種主動形式的監視。 CollectReplicationMetrics.ps1 會從與資料庫複寫相關的效能計數器收集資料。 此指令碼會收集多個信箱伺服器的計數器資料、將每部伺服器的資料寫入 .csv 檔案,然後就可以報告所有資料的各種統計資料 (例如每個副本失敗或擱置的時間長度、平均的複製佇列長度或重新顯示佇列長度,或是副本不符合容錯移轉準則的時間長度)。

您可以個別指定伺服器,或是指定整個 DAG。 您可執行指令碼讓它先收集資料再產生報告,也可以讓它只收集資料,或是只報告已經收集的資料。 您可以指定資料的取樣頻繁,以及收集資料的總時間長度。

從每部伺服器收集的資料都會寫入到名為 CounterData.<ServerName>.<TimeStamp>.csv 的檔案中。 摘要報告會寫入名為 [HaReplPerfReport.<DAGName>.<TimeStamp>.csv] 的檔案,而如果執行指令碼時沒有指定 DagName 參數,則會寫入名為 [HaReplPerfReport.<TimeStamp>.csv] 的檔案。

指令碼會啟動 PowerShell 工作來收集每部伺服器的資料。 這些工作會在整段資料收集期間執行。 如果您指定的伺服器數目很多,這個程序可能會使用大量的記憶體。 在這個程序的最後一個階段,也就是將資料處理成摘要報告時,也可能會因為大量的資料而耗費相當多的時間。 您可以在某部電腦上執行收集階段,然後將資料複製到其他電腦來進行處理作業。

CollectReplicationMetrics.ps1 指令碼支援可讓您自訂指令碼行為和輸出的參數。 下表列出可用的參數。

CollectReplicationMetrics.ps1 指令碼參數

參數 描述

DagName

指定您想從其中收集度量資訊的 DAG 名稱。 若省略此參數,會使用本機伺服器為其成員的 DAG。

DatabaseNames

提供需產生報告的資料庫清單。 支援使用萬用字元,例如,-DatabaseNames:"DB1","DB2"-DatabaseNames:"DB*"

ReportPath

指定用來儲存事件處理結果的資料夾。 若省略此參數,則會使用 Scripts 資料夾。

Duration

指定收集程序應執行的時間量。 一般的值為一到三個小時。 只有在每次取樣的間隔時間較長,或是排定工作執行一連串較短的工作時,才能使用較長的時間。

Frequency

指定資料度量資訊的收集頻率。 一般的值為 30 秒、一分鐘或五分鐘。 在正常情況下,如果間隔時間比這些值還短,各個取樣之間並不會出現顯著的變化。

Servers

指定統計資料收集來源之伺服器的識別碼。 您可以指定任何值,包括萬用字元或 GUID。

SummariseFiles

指定要產生摘要報告的 .csv 檔案清單。 這些檔案是名為 CounterData.<CounterData>*,且由 CollectReplicationMetrics.ps1 指令碼產生的檔案。

Mode

指定指令碼執行的處理階段。 您可以使用下列值:

  • CollectAndReport   此為預設值。 這個值代表指令碼應該會收集伺服器的資料,然後再處理資料來產生摘要報告。

  • CollectOnly   這個值代表指令碼應該只會收集資料,而不會產生報告。

  • ProcessOnly   這個值代表指令碼應該會從一組 .csv 檔案匯入資料,並處理資料來產生摘要報告。 SummariseFiles 參數可用來為指令碼提供要處理的檔案清單。

MoveFilestoArchive

指定指令碼應該在處理完成後,將檔案移到壓縮資料夾。.

LoadExchangeSnapin

指定指令碼應該載入 Exchange 命令介面命令。 當指令碼需要從 Exchange 管理命令介面外部執行時 (例如在已排程的工作中),可以使用此參數。

CollectReplicationMetrics.ps1 範例

下列範例會從 DAG "DAG1" 中的所有伺服器收集一個小時的資料量,每隔一分鐘取樣一次,然後再產生摘要報告。 此外還會使用 ReportPath 參數,讓指令碼將所有的檔案放在目前的目錄中。

CollectReplicationMetrics.ps1 -DagName DAG1 -Duration "01:00:00" -Frequency "00:01:00" -ReportPath

下列範例會從符合 "CounterData*" 的所有檔案讀取資料,然後再產生摘要報告。

CollectReplicationMetrics.ps1 -SummariseFiles (dir CounterData*) -Mode ProcessOnly -ReportPath

Get-MailboxDatabaseCopyStatus 指令程式

CheckDatabaseRedundancy.ps1 指令碼

顧名思義,CheckDatabaseRedundancy.ps1 指令碼可用來監視複寫信箱資料庫的備援 (藉由驗證目前至少已設定兩個正常的副本),並在複寫資料庫只有單一的正常副本時警告您。 在這種情況下,判斷備援時會將主動和被動同時列入計算。

已安裝信箱伺服器角色時,CheckDatabaseRedundancy.ps1 指令碼將自動由 Exchange 設定,以便執行名為 Database One Copy Alert 的排定工作。 依預設,Database One Copy Alert 排定工作會排程為每 60 分鐘執行一次。 您可以利用 Windows 工作排程器修改此行為及排定工作之設定。 指令碼之設計為首先檢查 DAG 成員資格,因此如果信箱伺服器非 DAG 之成員,指令碼便會立即結束。

指令碼也能從指令碼資料夾中以互動方式執行。 以互動方式執行此指令碼時,您必須指定資料庫名稱或 DAG 成員名稱。 若要指定資料庫,請使用 MailboxDatabaseName 參數,而若要指定 DAG 成員,則請使用 MailboxServerName 參數。 在主控台上以互動方式執行時,指令碼只會執行一次備援檢查,並在螢幕上輸出 CurrentState (紅色或綠色)。

CheckDatabaseRedundancy.ps1 和其他指令碼與指令程式一樣,也可以透過新增 MonitoringContext 參數在監視模式下執行並產生事件。 Exchange 所建立的排定工作將會以監視模式執行指令碼。 此模式也可讓這個指令碼能夠透過監視解決方案來叫用,例如 Microsoft System Center Operations Manager (SCOM)。 在監視模式下,指令碼會在本機伺服器的應用程式事件日誌中產生紅色警示和綠色警示事件。 只有當指令碼執行的一小時中資料庫處於「紅色」狀態的時間已超過 20 分鐘 (總時間長度,可以不連續) 時,才會產生紅色警示事件 (事件識別碼 4113),而當資料庫已連續 10 分鐘處於「綠色」狀態時,則會產生綠色警示事件 (事件識別碼 4114)。 依預設,一旦產生紅色警示事件,它會以每隔 15 分鐘的頻率繼續回報。

此外,這個指令碼還有其他幾個實用的選項。 例如,您可以新增 ShowDetailedErrors 參數以取得所發生任何錯誤的更多詳細資料,也可以新增 Verbose 參數來取得其他疑難排解資訊。 此指令碼也包含 SendSummaryMailTos 參數,可用來在指令碼執行完成後,以電子郵件將摘要報告傳送到指定的電子郵件地址清單。 這可讓系統管理員快速查看每小時的報告,確定是否已發生任何備援問題。 如果使用電子郵件功能,您必須在使用 SendSummaryMailTos 參數時包含 SummaryMailFrom 參數。

Microsoft 建議您使用自動化的排程工作或監視系統 (如 SCOM) 定期執行這個指令碼,作為正常的監視作業的一部分。 為了避免資料庫備援受到長期損害,請每隔 60 分鐘執行一次這個指令碼。 此指令碼包含一個名為 TerminateAfterDurationSecs 的參數;當這個參數設為 -1 或 0 (執行指令碼時) 時,可以無止境地執行指令碼。

如果您沒有執行監視解決方案 (例如 SCOM),我們建議您允許自動建立的排程工作,以自動執行及排程執行指令碼。

當您排定長時間執行的工作時,Windows Server 2008 SP2 工作排程器的已知問題可能會導致工作排程器停止運作。 這些問題不存在於 Windows Server 2008 R2,因此可能的話,請自 Windows Server 2008 R2 執行指令碼。 如果您無法從 Windows Server 2008 R2 執行此指令碼,並且是從 Windows Server 2008 SP2 執行,建議您進行兩項修改。 第一,請不要依指令碼內建的 60 分鐘暫時性抑制來執行指令碼,改為使用下列參數每隔 5 分鐘執行一次指令碼:

CheckDatabaseRedundancy.ps1 -MonitoringContext -SleepDurationBetweenIterationsSecs:0 -TerminateAfterDurationSecs:1 -SuppressGreenEventForSecs:0 -ReportRedEventAfterDurationSecs:0 -ReportRedEventIntervalSecs:0 -ShowDetailedErrors

第二,如果可能,請使用 SCOM 來定義暫時性抑制行為 (例如,如果 20 分鐘內記錄了 3 個紅色警示事件,便產生警示,而如果記錄了綠色警示事件,則將 CurrentState 變更為綠色)。

如果已改變或移除 Database One Copy Alert 排程工作,您可以執行下列指令來進行刪除或重新排程:

schtasks /create /TN "Check Database Redundancy" /TR "Powershell.exe -NonInteractive -WindowStyle Hidden -command 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; 'C:\Program Files\Microsoft\Exchange Server\V14\Scripts\CheckDatabaseRedundancy.ps1 -MonitoringContext -ShowDetailedErrors -SummaryMailFrom:'SMTPFromAddress@contoso.com' -SendSummaryMailTos:@('SMTPToAddress@contoso.com') -ErrorAction:Continue" /RU SYSTEM /SC HOURLY

請將上示指令碼中的參數取代成您要使用的指令碼參數。 此指令碼中也描述了指令碼的其他參數。

使用 schtasks 命令列工具建立排程工作時,/TR 選項的上限為 261 個字元。 上面的範例超過這個上限。 如果您使用的參數和路徑讓 /TR 選項超過 261 個字元,則您必須使用 [系統管理工具] 功能表上的工作排程器 Applet,手動建立排程工作。 或者,您也可以將下列 XML 複製並貼到剪貼簿,接著進行適當編輯,再儲存成 XML 檔案,然後使用工作排程器 Applet 將它匯入。

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="https://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2010-05-11T15:55:47</Date>
    <Author>administrator</Author>
  </RegistrationInfo>
  <Triggers>
    <TimeTrigger>
      <Repetition>
        <Interval>PT1H</Interval>
        <StopAtDurationEnd>false</StopAtDurationEnd>
      </Repetition>
      <StartBoundary>2010-05-11T15:55:00</StartBoundary>
      <Enabled>true</Enabled>
    </TimeTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>SYSTEM</UserId>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <IdleSettings>
      <Duration>PT10M</Duration>
      <WaitTimeout>PT1H</WaitTimeout>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>Powershell.exe</Command>
      <Arguments>-NonInteractive -WindowStyle Hidden -command 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; C:\Operations\CheckDatabaseRedundancy.ps1 -MonitoringContext -ShowDetailedErrors -SummaryMailFrom:'SMTPFromAddress@contoso.com' -SendSummaryMailTos:@('SMTPToAddress@contoso.com') -ErrorAction:Continue</Arguments>
    </Exec>
  </Actions>
</Task>

Get-MailboxDatabaseCopyStatus 指令程式

 © 2010 Microsoft Corporation. 著作權所有,並保留一切權利。