此監視器會從訂閱者檢查散發資料庫的可用性。
訂閱者無法到達其散發資料庫。
造成這種情況的原因可能是:
散發者與訂閱者之間發生連接問題。
複寫散發代理程式或合併代理程式帳戶的權限不足,無法存取散發資料庫。
無法設定 CredSSP
請確認下列條件:
確定已正確設定散發者與訂閱者之間的網路存取。
確定已將散發者與訂閱者之間的任何防火牆設為允許在 Microsoft SQL Server 所使用的連接埠上存取。
確定 Windows 遠端管理 (WS-Management) 服務正在訂閱者上執行。
確定已將防火牆例外狀況設為允許 Windows 遠端管理透過 HTTP-In 連線。
確定已正確設定複寫代理程式的帳戶以存取散發者和訂閱者。
確定已將散發代理程式和合併代理程式帳戶加入散發和訂閱者資料庫上的 db_owner 固定角色。
確定監視帳戶位在散發者和訂閱者的本機系統管理員群組中。
確定下列登錄機碼存在於散發者和訂閱者上: "LocalAccountTokenFilterPolicy"=dword:00000001 in [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system]
如果您的複寫拓撲中有防火牆,您可能會想要閱讀下列文章: http://support.microsoft.com/kb/164667/
若要加入 LocalAccountTokenFilterPolicy 機碼,請執行下列動作:
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
名稱 | 描述 | 預設值 |
已啟用 CredSsp | 指出在執行此工作流程之前已啟用 CredSsp。執行之後將會維持啟用 | 是 |
資料庫名稱 | 應檢查的資料庫名稱清單,以 ',' 符號分隔 |
|
已啟用 | 啟用或停用工作流程 | 否 |
產生警示 | 定義工作流程是否產生警示 | 是 |
間隔 (秒) | 執行工作流程的週期性時間間隔 (秒)。 | 300 |
通訊埠 | wsman 服務的通訊埠 | 5985 |
前置詞 | wsman 服務的名稱 | wsman |
訂閱者名稱 | 應該做為檢查來源的訂閱者名稱清單,以 '|' 符號分隔 |
|
同步處理時間 | 同步處理時間 |
|
傳輸 | 用於存取 wsman 服務之通訊協定的前置詞 | http |
Target | Microsoft.SQLServer.2008.Replication.Distributor | ||
Parent Monitor | System.Health.AvailabilityState | ||
Category | AvailabilityHealth | ||
Enabled | False | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2008.Replication.MonitorType.DistributorAvailabilityFromSubscriberMonitorType | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Replication.Monitoring.DistributorAvailabilityFromSubscriberMonitor.RunAs.Monitor |
<UnitMonitor ID="Microsoft.SQLServer.2008.Replication.Monitor.DistributionDBAvailabilityFromSubscriber" Accessibility="Public" Enabled="false" Target="MS2RD!Microsoft.SQLServer.2008.Replication.Distributor" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.Replication.MonitorType.DistributorAvailabilityFromSubscriberMonitorType" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.DistributorAvailabilityFromSubscriberMonitor.RunAs.Monitor">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.Replication.Monitor.DistributionDBAvailabilityFromSubscriber.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='Subscriber']$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='Message']$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
<OperationalState ID="Success" MonitorTypeStateID="Health" HealthState="Success"/>
</OperationalStates>
<Configuration>
<Distributor>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericDistributor']/ConnectionString$</Distributor>
<Subscriber/>
<Domain>$RunAs[Name="MSRL!Microsoft.SQLServer.Replication.Monitoring.DistributorAvailabilityFromSubscriberMonitor.RunAs.Monitor"]/Domain$</Domain>
<User>$RunAs[Name="MSRL!Microsoft.SQLServer.Replication.Monitoring.DistributorAvailabilityFromSubscriberMonitor.RunAs.Monitor"]/UserName$</User>
<Pass>$RunAs[Name="MSRL!Microsoft.SQLServer.Replication.Monitoring.DistributorAvailabilityFromSubscriberMonitor.RunAs.Monitor"]/Password$</Pass>
<Transport>http</Transport>
<Prefix>wsman</Prefix>
<Port>5985</Port>
<DatabaseNames/>
<CredSspEnabled>true</CredSspEnabled>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>