当 SSAS 实例的 Windows 服务处于未运行状态的持续时间大于配置的阈值时,监视器将发出警报。
当 SSAS 实例的 Windows 服务处于未运行状态的持续时间大于配置的阈值时,监视器将发出警报。
当此监视器报告“SQL Server Analysis Service Windows 服务未运行”警报时,表示 SSAS 实例已配置为自动启动,但在超过配置阈值的持续时间内保持“已停止”状态。默认配置值为 900 秒(15 分钟)。
服务停止时,监视器在配置持续时间之前不会触发警报。这允许管理员在不触发警报的情况下重启服务。但随后即使服务在配置的持续时间内未切换到运行状态,也将触发警报。
即使已配置为自动启动,SSAS Windows 服务也可能会因很多原因无法启动,这些原因包括进程无法启动、阻止成功启动的操作系统问题或服务帐户身份验证失败。
解决此警报要求管理员了解并考虑多个因素,包括正常的预期实例启动时间、服务意外无法启动的原因、服务器身份验证要求以及环境中的状况。
实例的启动时间可能会有所不同,具体取决于数据库大小和其他因素。管理员可以相应地配置此设置,以相应调整给定 SSAS 实例的正常预期启动时间。
修复 SSAS 服务未启动(或尝试时无法启动)的状况的操作包括:
尝试启动 SSAS 服务。
查看 Windows 系统和应用程序事件日志以了解指示根本原因的信息。
查看实例的 OLAP\Log 文件夹,该文件夹可能包含根本原因的证据,包括:
故障转储(.mdmp 文件),可能包含来自失败时进程中的线程的堆栈跟踪,或者如果进行了相应配置,可能包含进程内存空间的完整内容,可以允许 Microsoft 技术支持人员确定根本原因。特别需注意任意转储上的时间戳,以了解这些时间戳与失败相对应是否是了解文件夹中的特定故障转储与特定已知问题相对应的好方法。
FlightRecorder 跟踪,即服务器的最小跟踪,有时包含指示根本原因的信息。
Msmdsrv.log 可能包含指示根本原因的详细信息。
使用其他跟踪或实用工具(如性能监视器、SQL Server Profiler 或网络监视器)来发现潜在问题,这些问题有可能会指示根本问题。
使用 SQL Server 安装修复受损的实例。
在尝试启动 SSAS 服务时,使用 Process Monitor(进程监视器)工具来跟踪 SSAS 服务进程(msmdsrv.exe)对文件和注册表的访问。此工具可用于揭示进程在尝试访问其在初始化期间需要的数据时权限是否失败,而该权限失败将导致失败。
检查“服务”控制面板中的服务配置,以确定 SSAS 配置文件的位置是否正确。服务启动的命令行显示在属性页的“常规”选项卡上,可通过在服务上右键单击进行访问。
要调查服务的意外启动故障,请与 Microsoft 技术支持人员联系。
如果服务器无需考虑 SSAS 服务状态,则完全禁用监视器。
名称 | 说明 | 默认值 |
仅当服务启动类型为“自动”时发出警报 | 该值仅可设置为 "True" 或 "False"。如果设置为 "False",则无论启动类型设置为何值,都会触发警报。默认值为 "True"。 | 是 |
已启用 | 启用或禁用工作流 | 是 |
生成警报 | 定义工作流是否生成警报 | 是 |
间隔(秒) | 运行工作流的重复间隔时间(秒)。 | 60 |
样本数 | 如果后续检查失败数大于或等于最小检查数,运行状况将发生更改。 | 15 |
同步时间 | 使用 24 小时格式指定的同步时间。可以忽略。 |
|
超时(秒) | 指定允许工作流在被关闭并标记为失败之前运行的时间。 | 300 |
Target | Microsoft.SQLServer.2016.AnalysisServices.Instance | ||
Parent Monitor | System.Health.AvailabilityState | ||
Category | AvailabilityHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2016.AnalysisServices.MonitorType.Instance.ServiceState | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.Instance.ServiceState" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2016.AnalysisServices.MonitorType.Instance.ServiceState" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.Instance.ServiceState.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="SQLAS!Microsoft.SQLServer.2016.AnalysisServices.ServerRole"]/InstanceName$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Running" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="NotRunning" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<ServiceName>$Target/Property[Type="SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance"]/ServiceName$</ServiceName>
<ClusteredInstance>$Target/Property[Type="SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance"]/Clustered$</ClusteredInstance>
<CheckStartupType>true</CheckStartupType>
<SampleCount>15</SampleCount>
<IntervalSeconds>60</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>