发布服务器的 SQL Server 代理状态

Microsoft.SQLServer.2012.Replication.Monitor.PublisherAvailabilityMonitor (UnitMonitor)

此监视器将检查 SQL Server 代理是否正在发布服务器上运行。

Knowledge Base article:

摘要

此监视器将连接到复制发布服务器,并验证 SQL Server 代理服务是否正在运行。SQL Server 代理服务将在 SQL Server 安装期间自动安装。复制将使用此 Windows 服务来启动和停止负责移动数据的复制 SQL Server 代理作业。

原因

SQL Server 代理服务可能已手动停止或因代理失败而停止。在 Windows 应用程序事件日志中检查任何代理服务意外停止的可能原因。

如果代理的“启动模式”属性已设置“手动”而不是“自动”,SQL Server 代理服务在服务器重启时将不会自动重启。

解决方法

在 Windows 服务、SQL Server 配置管理器下或通过 SQL Server Management Studio 启动 SQL Server 代理服务。如果代理的“启动模式”设置为“手动”,请考虑将其更改为“自动”。

启动、停止或暂停 SQL Server 代理服务 http://technet.microsoft.com/library/ms190695.aspx

附加

在发布服务器上,除日志读取器代理、快照代理和推送分发代理之外,SQL Server 代理服务还负责运行杂项代理,如“代理历史记录清除: 分发”、“分发清除: 分发”以及“已过期订阅清除”代理。

外部

使用以下链接查看 SQL Server 代理错误日志: http://msdn.microsoft.com/library/ms175488.aspx

本主题描述了如何将 Microsoft SQL Server 代理配置为当其在 SQL Server 2012 中意外停止时自动重启。 https://msdn.microsoft.com/library/ms178130.aspx

可替代参数

名称

说明

默认值

警报优先级

定义警报优先级。

正常

警报严重性

定义警报严重性。

错误

已启用

启用或禁用工作流。

生成警报

定义工作流是否生成警报。

Element properties:

TargetMicrosoft.SQLServer.2012.Replication.Publisher
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2012.Replication.MonitorType.CheckReplicationServiceState
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL2012 复制: 发布服务器: SQL Server 代理 Windows 服务已停止。
服务器 {0} 上的 SQL Server 实例 {1} 的 SQL Server 代理 Windows 服务已停止。
RunAsMicrosoft.SQLServer.Replication.Monitoring.RunAs.Monitor

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2012.Replication.Monitor.PublisherAvailabilityMonitor" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2012.Replication.Publisher" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.Replication.MonitorType.CheckReplicationServiceState" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.Replication.Monitor.PublisherAvailabilityMonitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter1>
<AlertParameter2>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher"]/ConnectionString$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Running" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="RunningManual" HealthState="Warning"/>
<OperationalState ID="Error" MonitorTypeStateID="NotRunning" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<ServiceName>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher"]/AgentServiceName$</ServiceName>
</Configuration>
</UnitMonitor>