[AlwaysOn Availability Groups]AlwaysOn Ring Buffers
AlwaysOn Ring Buffers
一些AlwaysOn的诊断信息可以从SQL Server ring buffers。或者从sys.dm_os_ring_buffers。ring buffer在SQL Server启动的时候被创建,SQL Server系统为内部诊断记录警告。
通过以下查询获取所有事件记录
SELECT * FROM sys.dm_os_ring_buffers WHERE ring_buffer_type LIKE '%HADR%'
为了让数据更加可控,可以通过日期,ring buffer类型来过滤数据。以下是获取指定ring buffer的查询
DECLARE @runtime datetime
SET @runtime = GETDATE()
SELECT CONVERT (varchar(30), @runtime, 121) as data_collection_runtime,
DATEADD (ms, -1 * (inf.ms_ticks - ring.[timestamp]), GETDATE()) AS ring_buffer_record_time,
ring.[timestamp] AS record_timestamp, inf.ms_ticks AS cur_timestamp, ring.*
FROM sys.dm_os_ring_buffers ring
CROSS JOIN sys.dm_os_sys_info inf where ring_buffer_type='<RING_BUFFER_TYPE>'
Record列包含了XML格式的诊断信息。XML数据和ring buffer类型不同。 为了让XML更加可读,你需要客户化TSQL提取想要的XML元素。比如如下语句,获取所有RING_BUFFER_HADRDBMGR_API ring buffer,并且XML数据放入独立的表的列。
WITH hadr(ts, type, record) AS
(
SELECT timestamp AS ts, ring_buffer_type AS type, CAST(record AS XML) AS record
FROM sys.dm_os_ring_buffers WHERE ring_buffer_type = 'RING_BUFFER_HADRDBMGR_API'
)
SELECT
ts,
type,
record.value('(./Record/@id)[1]','bigint') AS [Record ID],
record.value('(./Record/@time)[1]','bigint') AS [Time],
record.value('(./Record/HadrDbMgrAPI/dbId)[1]', 'bigint') AS [DBID],
record.value('(/Record/HadrDbMgrAPI/API)[1]', 'varchar(50)') AS [API],
record.value('(/Record/HadrDbMgrAPI/Action)[1]', 'varchar(50)') AS [Action],
record.value('(/Record/HadrDbMgrAPI/role)[1]', 'int') AS [Role],
record.value('(/Record/Stack)[1]', 'varchar(100)') AS [Call Stack]
FROM hadr
ORDER BY record.value('(./Record/@time)[1]','bigint') DESC
GO
1. AlwaysOn Ring Buffer类型
sys.dm_os_ring_buffers有4种类的ring buffer。
|
AlwaysOn Ring Buffer Type |
Description |
|
RING_BUFFER_HADRDBMGR_API |
Records state transitions that have taken place or are taking place. When looking at the state transitions pay close attention to the objectType values. XML <Recordid="11" type="RING_BUFFER_HADRDBMGR_STATE" time="860243"> <HadrDbMgrState> <objectType>HadrUsers</objectType> <currentState>HDbMState_Starting</currentState> <proposedState>HDbMState_Started</proposedState> <targetState>HDbMState_Started</targetState> <legalTransition>Y</legalTransition> <role>1</role> </HadrDbMgrState> </Record> |
|
RING_BUFFER_HADRDBMGR_STATE |
Records internal method or function calls made by AlwaysOn activity. It can show information such as suspend, resume, or role changes, including both the entry and exit points. XML <Recordid="45" type="RING_BUFFER_HADRDBMGR_STATE" time="1723487912"> <HadrDbMgrState> <dbId>5</dbId> <objectType>HadrDbMgr</objectType> <currentState>HDbMState_Starting</currentState> <proposedState>HDbMState_Started</proposedState> <targetState>HDbMState_Started</targetState> <legalTransition>Y</legalTransition> <role>2</role> </HadrDbMgrState> </Record> |
|
RING_BUFFER_HADRDBMGR_COMMIT |
XML <Recordid="0" type="RING_BUFFER_HADRDBMGR_COMMIT" time="1723475368"> <HadrDbMgrCommitPolicy> <dbId>5</dbId> <replicaId>883a18f5-97d5-450f-8f8f-9983a4fa5299</replicaId> <dbHardenPolicy>KillAll</dbHardenPolicy> <dbSyncConfig>0x0</dbSyncConfig> <syncPartnerCount>0</syncPartnerCount> <minSyncPartnerConfig>0</minSyncPartnerConfig> <partnerHardenPolicy>KillAll</partnerHardenPolicy> <partnerSyncConfig>0x0</partnerSyncConfig> <logBlock>0x0000000000000000</logBlock> <leaseExpired>Y</leaseExpired> <partnerChange>N</partnerChange> <role>2</role> </HadrDbMgrCommitPolicy> </Record> |
|
RING_BUFFER_HADR_TRANSPORT_STATE |
XML <Recordid="3" type="RING_BUFFER_HADR_TRANSPORT_STATE" time="1723485399"> <HadrTransportState> <agId>08264B79-D10B-412F-B38D-CA07B08E9BD8</agId> <localArId>883A18F5-97D5-450F-8F8F-9983A4FA5299</localArId> <targetArId>628D6349-72DD-4D18-A6E1-1272645660BA</targetArId> <currentState>HadrSession_Configuring</currentState> <targetState>HadrSession_Connected</targetState> <legalTransition>Y</legalTransition> </HadrTransportState> </Record> |
2. 从Ring Buffer 解析XML数据
你可以从ring buffer解析数据。你先要使用cast转化到XML。
WITH hadr(ts, type, record) AS
(SELECT timestamp AS ts, ring_buffer_type AS type, CAST(record AS XML) AS record
FROM sys.dm_os_ring_buffers
WHERE ring_buffer_type = 'RING_BUFFER_HADRDBMGR_API')
SELECT ts,
type,
record.value('(./Record/@id)[1]','bigint') AS [Record id],
record.value('(./Record/@time)[1]','bigint') AS [Time],
record.value('(./Record/HadrDbMgrAPI/dbId)[1]', 'bigint') AS [dbid],
record.value('(/Record/HadrDbMgrAPI/API)[1]', 'varchar(50)') AS [API],
record.value('(/Record/HadrDbMgrAPI/Action)[1]', 'varchar(50)') AS [Action],
record.value('(/Record/HadrDbMgrAPI/role)[1]', 'int') AS [Role],
record.value('(/Record/Stack)[1]', 'varchar(100)') AS [Call Stack]
FROM hadr
ORDER BY record.value('(./Record/@time)[1]','bigint') DESC
GO
[AlwaysOn Availability Groups]AlwaysOn Ring Buffers的更多相关文章
- [AlwaysOn Availability Groups]AlwaysOn健康诊断日志
AlwaysOn健康诊断日志 为了监控primary可用副本的健康状况,SQL Server资源DLL使用SQL Server2012的过程sp_server_diagnostics. SQL Ser ...
- [AlwaysOn Availability Groups]AlwaysOn等待类型
AlwaysOn等待类型 当排查AlwaysOn延迟,等待统计信息可以在DMV中查看累计的AlwaysOn等待类型. 查看AlwaysOn等待类型 SELECT * FROM sys.dm_os_wa ...
- [AlwaysOn Availability Groups]AG排查和监控指南
AG排查和监控指南 1. 排查场景 如下表包含了常用排查的场景.根据被分为几个场景类型,比如Configuration,client connectivity,failover和performance ...
- [AlwaysOn Availability Groups]排查:AG配置
排查AG配置 本文主要用来帮助排查在AG配置时出现的问题,包括,AG功能被禁用,账号配置不正确,数据库镜像endpoint不存在,endpoint不能访问. Section Description A ...
- [AlwaysOn Availability Groups]DMV和系统目录视图
DMV和系统目录视图 这里主要介绍AlwaysON的动态管理视图,可以用来监控和排查你的AG. 在AlwaysOn Dashboard,你可以简单的配置的GUI显示很多可用副本的DMV和可用数据库通过 ...
- [SQL in Azure] Tutorial: AlwaysOn Availability Groups in Azure (GUI)
http://msdn.microsoft.com/en-us/library/azure/dn249504.aspx Tutorial: AlwaysOn Availability Groups i ...
- [AlwaysOn Availability Groups] 健康模型 Part 2 ——扩展
健康模型扩展 第一部分已经介绍了AlwayOn健康模型的概述.现在是创建一个自己的PBM策略,然后设置为制定的归类.创建这些策略,创建之后修改一下配置,dashboard就会自动评估这些策略. 场景, ...
- [AlwaysOn Availability Groups]健康模型 Part 1——概述
健康模型概述 在成功部署AG之后,跟踪和维护健康状况是很重要的. 1.AG健康模型概述 AG的健康模型是基于策略管理(Policy Based Management PBM)的.如果不熟悉这个特性,可 ...
- [AlwaysOn Availability Groups]监控AG性能
监控AG性能 AG的性能的性能方面,在关键任务数据库上进行语句级维护性能是很重要的.理解AG如何传输日志到secondary副本对评估RTO和RPO,表明AG是否性能不好. 1. 数据同步步骤 为了评 ...
随机推荐
- 自己开发实现OAuth做webapi认证
看到园子里面有人写的OAuth,就想把自己实现的OAuth也分享一下,关于OAuth协议这里就不再赘述. 一.作为认证服务器,首先需要提供一个可以通过appid/appsecret来获取token这样 ...
- 利用log4j+mongodb实现分布式系统中日志统一管理
背景 在分布式系统当中,我们有各种各样的WebService,这些服务可能分别部署在不同的服务器上,并且有各自的日志输出.为了方便对这些日志进行统一管理和分析.我们可以将日志统一输出到指定的数 ...
- [异常解决] ubuntukylin16.04 LTS中关于flash安装和使用不了的问题解决
http://www.linuxdiyf.com/linux/25211.html 归纳解决flash插件大法: 启动器中找到 软件更新,启动,点击 其它软件,把Canonical合作伙伴前方框 选上 ...
- android内部培训视频_第五节(1)_OA实战之登录界面
第五节(1):OA实战之登录界面 一.登录界面布局 1.背景图片 2.文本框 3.checkbox 4.按钮 暂未实现点击切换图片效果 <RelativeLayout xmlns:androi ...
- Atitit 图像处理和计算机视觉的分类 三部分 图像处理 图像分析 计算机视觉
Atitit 图像处理和计算机视觉的分类 三部分 图像处理 图像分析 计算机视觉 1.1. 按照当前流行的分类方法,可以分为以下三部分:三部分 图像处理 图像分析 计算机视觉1 1.2. 图像处理需要 ...
- 小知识:C#可选参数的一个陷阱
一.背景: 互联网行业,为了降低程序维护.升级的部署风险,往往会将程序拆分成很多项目,编译成多个dll部署,这样发布的时候,只需要部署修改过的dll即可. 二.问题: 有一个函数,在很多个地方被使 ...
- VS2010中项目发布遇到的应用程序池问题(无法识别的属性“targetFramework”)
1.错误情况 2.原因:VS2010中你的应用程序的目标框架与IIS中的应用程序池不同.VS2010中的是.Net Framework4.0,而本机IIS是.Net Framework2.0 3.解决 ...
- 开源Word读写组件DocX 的深入研究和问题总结
一. 前言 前两天看到了asxinyu大神的[原创]开源Word读写组件DocX介绍与入门,正好我也有类似的自动生成word文档得需求,于是便仔细的研究了这个DocX. 我也把它融入到我的项目当中并进 ...
- u-boot源码汇编段简要分析
Hi,大家好!我是CrazyCatJack,你们可以叫我CCJ或者疯猫.今天我给大家带来的是u-boot的源代码汇编段分析,以后还会给大家讲解后续的C代码,请持续关注哦^_^ 先简单说一下u-boot ...
- [WinForm] DataGridView 绑定 DT && ComboBox 列绑定 Dict
一 需求介绍 一般像枚举类型的数据,我们在数据库里存储着诸如(1.2.3.4-)或者("001"."002"."003"-)此类,但是界面 ...