我们的一个SQL Server实例在群集环境中会自行重启,但不会进行故障转移。当我检查错误日志,事件查看器和群集日志时,无法找到导致这些重新启动的原因的任何特定原因,但是在故障转移群集管理器->角色->严重事件中,我发现了此错误:
群集角色'SQL Server(MSSQLSERVER)'中'SQL Server'类型的群集资源'SQL Server'失败
基于资源和角色的失败策略,群集服务可能会尝试使资源在此节点上联机或将组移动到群集的另一个节点,然后重新启动它。使用故障转移群集管理器或Get-ClusterResource Windows PowerShell cmdlet检查资源和组状态。
我是否可以知道是否有任何特定原因导致SQL Server重新启动并出现上述错误,或者我们可以为SQL Server错误日志进行任何配置以捕获这些重新启动或故障转移或任何审核的错误?
两个Windows服务器均未重新启动
服务器是物理服务器
这是一个主动/主动群集环境
两台服务器都在Windows Server 2012 R2上运行
Windows上的Microsoft SQL Server 2014 Enterprise Edition(64位)
我还验证了事件查看器和cluster.log文件中的所有6个错误日志和事件
答案 0 :(得分:1)
我认为您不会在常规错误日志中找到太多内容。
因此,要检查专门的诊断日志:
ALTER SERVER CONFIGURATION SET DIAGNOSTICS LOG ON;
然后
SELECT
xml_data.value('(event/@name)[1]','varchar(max)') AS 'Name'
,xml_data.value('(event/@package)[1]','varchar(max)') AS 'Package'
,xml_data.value('(event/@timestamp)[1]','datetime') AS 'Time'
,xml_data.value('(event/data[@name=''state'']/value)[1]','int') AS 'State'
,xml_data.value('(event/data[@name=''state_desc'']/text)[1]','varchar(max)') AS 'State Description'
,xml_data.value('(event/data[@name=''failure_condition_level'']/value)[1]','int') AS 'Failure Conditions'
,xml_data.value('(event/data[@name=''node_name'']/value)[1]','varchar(max)') AS 'Node_Name'
,xml_data.value('(event/data[@name=''instancename'']/value)[1]','varchar(max)') AS 'Instance Name'
,xml_data.value('(event/data[@name=''creation time'']/value)[1]','datetime') AS 'Creation Time'
,xml_data.value('(event/data[@name=''component'']/value)[1]','varchar(max)') AS 'Component'
,xml_data.value('(event/data[@name=''data'']/value)[1]','varchar(max)') AS 'Data'
,xml_data.value('(event/data[@name=''info'']/value)[1]','varchar(max)') AS 'Info'
FROM
( SELECT object_name AS 'event'
,CONVERT(xml,event_data) AS 'xml_data'
FROM sys.fn_xe_file_target_read_file('C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Log\SQLNODE1_MSSQLSERVER_SQLDIAG_0_129936003752530000.xel',NULL,NULL,NULL)
)
AS XEventData
ORDER BY Time;
或者,访问和查看现有的群集日志:
Import-Module FailoverClusters
Get-ClusterLog -TimeSpan 15 -Destination .
使用老式方法,在具有提升权限的命令外壳上的一个节点上:
cluster log /g