华为云SQLServer 慢日志查看

梦莱2年前技术文章683

一、背景

华为云目前只支持 SQLServer 登录数据库,不支持查看慢日志。对于开启慢日志的实例,也只能通过将慢日志下载到本地 再远程连接目标实例数据库查看。本篇将华为云 SQLServer 实例出现资源异常,排查问题的方案整理至下方。

如何查看该实例是否开启慢日志?

RDS ➡️ 进入实例 ➡️ 日志管理 ➡️ 慢日志 可以看到慢日志是否开启及慢日志的阈值

二、解决方案

2.1 实例资源正在打高

因华为云 DAS 界面也不支持查看 SQLServer 实时会话,因此可以选择在 RDS ➡️找到对应实例登录数据库,通过 SQL 查看当前实时会话里面的 SQL 情况

SELECT s.name, DES.program_name, r.session_id, r.status, qt.text, qt.dbid
, qt.objectid, r.cpu_time, r.total_elapsed_time, r.reads, r.writes
, r.logical_reads, r.scheduler_id
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(sql_handle) qt
JOIN master.dbo.sysdatabases s ON r.database_id = s.dbid
JOIN sys.dm_exec_sessions DES ON r.session_id = DES.session_id
ORDER BY r.scheduler_id, r.status, r.session_id;

2.2 实例资源已恢复

2.2.1 方案一 (可以连接至目标库)

实例资源已恢复且可以连接至目标库的情况下,可以直接通过 SQLServer 客户端远程连接到目标实例上查看慢日志情况。

1、首先在控制台找到资源打高时间段对应的文档名称


2、本地远程连接到目标实例,并执行如下命令即可查看慢日志文件当中具体内容

select * from ::fn_trace_gettable('D:\SQLTrace\audit\SQLTrace_17.trc', default)

⚠️注意:符号均为英文符号,D:\SQLTrace\audit\SQLTrace_17.trc 路径信息只需将 .trc 文件名称按需修改,前面路径不需要修改,这里路径是云上服务器的路径,不是本地路径

2.2.2 方案二 (可以连接至目标库或者有数据库的查询权限)

可以通过 SQL 查看一段时间内执行耗时最大的 SQL TOP ,一定程度上也可以得到资源打高期间主要的慢日志及执行情况。

SELECT TOP 1000
       ST.text AS '执行的SQL语句',
       QS.execution_count AS '执行次数',
       QS.total_elapsed_time AS '耗时',
       QS.total_logical_reads AS '逻辑读取次数',
       QS.total_logical_writes AS '逻辑写入次数',
       QS.total_physical_reads AS '物理读取次数',       
       QS.creation_time AS '执行时间' ,  
       QS.*
FROM   sys.dm_exec_query_stats QS
       CROSS APPLY
sys.dm_exec_sql_text(QS.sql_handle) ST
WHERE  QS.creation_time >='2023-07-20'
ORDER BY
     QS.total_elapsed_time DESC

2.2.3 方案三 ( 不可以连接至目标库)

如果不可以连接至目标库的话,可以通过将资源打高期间对应的控制台的慢日志下载到本地,通过本地的 SQLServer 查看。

1、在控制台找到资源打高时间段对应的文档并下载到本地

2、通过本地部署的 SQLServer 执行如下命令查看文档内容

select * from ::fn_trace_gettable('D:\SQLTrace\audit\SQLTrace_17.trc', default)

⚠️注意:这里的路径是需要写本地文档的真实路径;

期间遇到的报错信息整理至下方

三、报错信息

1、您没有运行 'FN_TRACE_GETTABLE' 的权限。

使用高权限账号即可,详细应该赋什么权限有待测试

2、没有 show plan 权限

报错:SHOWPLAN permission denied in database 'pdmdb'.

解决:GRANT SHOWPLAN TO 用户名称;(登录数据的账号名称)

eg: grant showplan to testml;

3、文件C:\Users\Administrator\Desktop\SQLTrace_17.trc不存在,或打开该文件时出错。错误 =5(拒绝访问。)

可以去 文件 ➡️ 右键 ➡️ 属性 ➡️ 安全 里面增加一个 Authenticated Users 用户

 

点击组或用户名下面的添加 ➡️ 选择高级

 

 选择立即查找 ➡️ 选择 Authenticated Users 用户 ➡️ 点击确定

 

可以看到 组或用户名那里已存在 Authenticated Users 用户,选择权限(除了特殊权限不能选,其他都选了),点击确定就好了

 


相关文章

RAID磁盘阵列详解

RAID磁盘阵列详解

1 RAID原理无论是DAS、NAS还是SAN,都是存储系统,一个存储系统可以包含多块磁盘。不同磁盘之间的组织排列,就是磁盘阵列技术,也就是RAID技术。RAID磁盘阵列技术的核心思想主要有两个,包括...

hive元数据迁移

hive元数据迁移

一、在新集群中创建hive数据库,作为新集群中的元数据库。注意点:创建hive数据库时注意用户和用户的权限及使用的编码格式一致。查看旧集群中角色权限和编码格式,在新的hive元数据库中设置相同的角色权...

mysql双主更改为主从架构分析

mysql双主更改为主从架构分析

客户需求客户业务运行的在mysql双主架构上,因为客户经常误操作触发双写,导致数据不一致,对业务的稳定运行造成加大的影响。客户现有数据库架构图解决方案基于客户业务和底层数据库架构实际情况,云掣科技提供...

Linux进程的几种状态之R、S、D、T、Z

Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。1.R(TASK_RUNNING),可执行状态&运行状态(在run_qu...

K8s cni0网卡异常

K8s cni0网卡异常

一、问题现象pod启动时,调度到其中某个节点上的pod都无法正常启动,查看启动报错:network: failed to set bridge addr: "cni0" alrea...

trino组件对接ldap(二)

trino组件对接ldap(二)

1、coordinater设置证书keytool -genkeypair -validity 36500 -ext SAN=IP:172.16.121.0,DNS:hadoop001  -alias ...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。