SQLServer 中dm_os_ring_buffers(ring_buffer_connectivity)读取XML

select distinct ring_buffer_type from sys.dm_os_ring_buffers
/*
RING_BUFFER_OOM 
RING_BUFFER_RESOURCE_MONITOR - 监控资源的使用情况,可以提供分析物理内存压力的信息。
RING_BUFFER_SCHEDULER_MONITOR  - 监控逻辑调度器的状态,以及健康的记录类型。
RING_BUFFER_MEMORY_BROKER  - 监控用于平衡缓存之间的内存分配的内部内存代理的行为。
RING_BUFFER_SECURITY_ERROR  - 安全相关的错误信息。例如:登录失败可能会有更详细的关于操作系统错误代码。
RING_BUFFER_SCHEDULER - 实际的调度器活动,像上下文切换。你可以从入口重新构建执行顺序。
RING_BUFFER_EXCEPTION - 服务器发出的任何异常。SQL内部抛出错误,因此你也可以看到SQL错误。
RING_BUFFER_CONNECTIVITY -关键连接信息,对于跟踪连接失败非常有用。
	RecordType:
	1. Error – 连接错误
	2. LoginTimers – 连接超时
	3. ConnectionClose – 杀掉进程
*/

--	RING_BUFFER_CONNECTIVITY
;WITH RingBufferConnectivity as
(   SELECT
        records.record.value('(/Record/@id)[1]', 'int') AS [RecordID],
        records.record.value('(/Record/ConnectivityTraceRecord/RecordType)[1]', 'varchar(max)') AS [RecordType],
        records.record.value('(/Record/ConnectivityTraceRecord/Spid)[1]', 'int') AS [Spid],
        records.record.value('(/Record/ConnectivityTraceRecord/SniConnectionId)[1]', 'varchar(max)') AS [SniConnectionId],
        records.record.value('(/Record/ConnectivityTraceRecord/SniConsumerError)[1]', 'int') AS [SniConsumerError],
        records.record.value('(/Record/ConnectivityTraceRecord/SniProvider)[1]', 'int') AS [SniProvider],
        records.record.value('(/Record/ConnectivityTraceRecord/State)[1]', 'int') AS [State],
        records.record.value('(/Record/ConnectivityTraceRecord/RemoteHost)[1]', 'varchar(max)') AS [RemoteHost],
        records.record.value('(/Record/ConnectivityTraceRecord/RemotePort)[1]', 'varchar(max)') AS [RemotePort],
        records.record.value('(/Record/ConnectivityTraceRecord/LocalHost)[1]', 'varchar(max)') AS [LocalHost],
        records.record.value('(/Record/ConnectivityTraceRecord/LocalPort)[1]', 'varchar(max)') AS [LocalPort],
        records.record.value('(/Record/ConnectivityTraceRecord/RecordTime)[1]', 'datetime') AS [RecordTime],
        records.record.value('(/Record/ConnectivityTraceRecord/TdsBuffersInformation/TdsInputBufferError)[1]', 'int') AS [TdsInputBufferError],
        records.record.value('(/Record/ConnectivityTraceRecord/TdsBuffersInformation/TdsOutputBufferError)[1]', 'int') AS [TdsOutputBufferError],
        records.record.value('(/Record/ConnectivityTraceRecord/TdsBuffersInformation/TdsInputBufferBytes)[1]', 'int') AS [TdsInputBufferBytes],
        records.record.value('(/Record/ConnectivityTraceRecord/LoginTimers/TotalLoginTimeInMilliseconds)[1]', 'int') AS [TotalLoginTime],
        records.record.value('(/Record/ConnectivityTraceRecord/LoginTimers/LoginTaskEnqueuedInMilliseconds)[1]', 'int') AS [LoginTaskEnqueued],
        records.record.value('(/Record/ConnectivityTraceRecord/LoginTimers/NetworkWritesInMilliseconds)[1]', 'int') AS [NetworkWrites],
        records.record.value('(/Record/ConnectivityTraceRecord/LoginTimers/NetworkReadsInMilliseconds)[1]', 'int') AS [NetworkReads], 
        records.record.value('(/Record/ConnectivityTraceRecord/LoginTimers/SslProcessingInMilliseconds)[1]', 'int') AS [SslProcessing],
        records.record.value('(/Record/ConnectivityTraceRecord/LoginTimers/SspiProcessingInMilliseconds)[1]', 'int') AS [SspiProcessing]
    FROM
    (   SELECT CAST(record as xml) AS record_data
        FROM sys.dm_os_ring_buffers
        WHERE ring_buffer_type= 'RING_BUFFER_CONNECTIVITY'
    ) TabA
    CROSS APPLY record_data.nodes('//Record') AS records (record)
)
SELECT RBC.*, m.text
FROM RingBufferConnectivity RBC
LEFT JOIN sys.messages M ON RBC.[SniConsumerError] = M.message_id AND M.language_id = 2052
--WHERE RBC.RecordType='Error'
WHERE RBC.[RecordTime] >=  CONVERT(DATETIME,'2014-12-25 10:24:00')
AND RBC.[RecordTime] <= CONVERT(DATETIME,'2014-12-25 10:30:00')
ORDER BY RBC.RecordTime DESC


更多参考官方博客:利用Ring Buffer在SQL Server 2008中进行连接故障排除



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值