SQL Server 环形缓冲区(Ring Buffer) -- 环形缓冲在AlwaysOn的应用

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

可以从SQL Server环形缓冲区得到一些诊断AlwaysOn的信息,或从sys.dm_os_ring_buffers动态管理视图。环形缓冲在SQL Server启动的时候创建,在SQL Server系统内记录告警用于内部诊断。它们不被支持,但你仍能从中获取有用的信息。下面的查询能从AlwaysON环形缓冲获取所有的事件记录。

 

1
SELECT  FROM  sys.dm_os_ring_buffers  WHERE  ring_buffer_type  LIKE  '%HADR%'

 

为了让数据更好管理,通过日期和环形缓冲类型来过滤数据。下面的查询获取今天特定的环形缓冲中的记录。

 

1
2
3
4
5
6
7
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数据区分不同的环形缓冲类型。对于每一个环形缓冲类型,可以参考下文。为了让XML数据更具可读性,你需要修改T-SQL查询抽取需要的XML元素。例如,下面的查询从RING_BUFFER_HADRDBMGR_API环形缓冲类型获取事件,并格式化XML数据到单独的表列。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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环形缓冲类型

 

有4种类型的环形缓冲在sys.dm_os_ring_buffers里:

 

RING_BUFFER_HADRDBMGR_API – 记录已经发生或者正在发生的状态变化。当关注状态变化时,集中注意objectType的值。

 

RING_BUFFER_HADRDBMGR_STATE – 记录AlwaysOn活动的内部方法和函数调用。可以从中看到例如suspend、resume或role changes,包括所有的入口和出口。

 

RING_BUFFER_HADRDBMGR_COMMIT

 

RING_BUFFER_HADR_TRANSPORT_STATE




















本文转自UltraSQL51CTO博客,原文链接:http://blog.51cto.com/ultrasql/1583956 ,如需转载请自行联系原作者




相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
8天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
51 10
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改
|
18天前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
16 0
|
8天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
66 6
|
3天前
|
SQL 安全 网络安全
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
8 0
|
7天前
|
SQL 人工智能 自然语言处理
NL2SQL进阶系列(2):DAIL-SQL、DB-GPT开源应用实践详解Text2SQL
NL2SQL进阶系列(2):DAIL-SQL、DB-GPT开源应用实践详解Text2SQL
NL2SQL进阶系列(2):DAIL-SQL、DB-GPT开源应用实践详解Text2SQL
|
8天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
12天前
|
SQL 数据安全/隐私保护
SQL Server 2016安装教程
SQL Server 2016安装教程
16 1
|
12天前
|
SQL 安全 Java
SQL server 2017安装教程
SQL server 2017安装教程
14 1
|
25天前
|
SQL 存储 Python
Microsoft SQL Server 编写汉字转拼音函数
Microsoft SQL Server 编写汉字转拼音函数