资讯专栏INFORMATION COLUMN

SQLserver数据库部署自动抓取慢日志并发送邮件

IT那活儿 / 1929人阅读
SQLserver数据库部署自动抓取慢日志并发送邮件

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

安装邮件服务

1. 解压sendEmail-v156.zip得到两个文件:
sendEmail.exe
sendEmail.pl

2. 放置到C:WindowsSystem32

创建慢日志查询存储过程

1. 打开数据库->可编程性->存储过程->右键新建存储过程。
2. 选中存储过程右键,新建存储过程:
-- ================================================
-- Template generated from Template Explorer using:
-- Create Procedure (New Menu).SQL
--
-- Use the Specify Values for Template Parameters
-- command (Ctrl-Shift-M) to fill in the parameter
-- values below.
--
-- This block of comments will not be included in
-- the definition of the procedure.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- Description:
-- =============================================
CREATE PROCEDURE 
 -- Add the parameters for the stored procedure here
 <@Param1, sysname, @p1> int> = 0>,
 <@Param2, sysname, @p2> int> = 0>
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;

    -- Insert statements for procedure here
 SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2>
END
GO
3. 修改默认内容里面的相关参数如下:
-- ================================================
-- Template generated from Template Explorer using:
-- Create Procedure (New Menu).SQL
--
-- Use the Specify Values for Template Parameters
-- command (Ctrl-Shift-M) to fill in the parameter
-- values below.
--
-- This block of comments will not be included in
-- the definition of the procedure.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[pr_Slowsqllog_Exp]
AS
BEGIN
SELECT
(total_elapsed_time / execution_count)/1000 N平均时间ms
,total_elapsed_time/1000 N总花费时间ms
,total_worker_time/1000 N所用的CPU总时间ms
,total_physical_reads N物理读取总次数
,total_logical_reads/execution_count N每次逻辑读次数
,total_logical_reads N逻辑读取总次数
,total_logical_writes N逻辑写入总次数
,execution_count N执行次数
,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset END
- qs.statement_start_offset)/2) + 1) N执行语句
,creation_time N语句编译时间
,last_execution_time N上次执行时间
FROM
sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
WHERE
SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset END
- qs.statement_start_offset)/2) + 1) not like %fetch%
AND (total_elapsed_time / execution_count)/1000 > 100
ORDER BY
total_elapsed_time / execution_count DESC;
END
GO
4. 点击执行创建存储过程:

设置定时任务自动执行导出

1. 启动SQLserver代理

【若已启动跳过此步】
启动方式:
计算机右键–管理–服务和应用程序–服务,搜索sql server 代理–右键启动。

2. 新建作业

在SQL Server Management Studio中,SQL Server代理-作业-新建作业。

2.1 常规】为作业定义名称

2.2【步骤】新建

2.2.1 常规设置
  • 为步骤命名;建议数据库+作业名称;
  • 类型选择Transact-SQL 脚本(T-SQL);
  • 选择要连接的数据库;
  • 填写要执行的命令 exec 存储过程名称,例如:exec pr_Slowsqllog_Exp。
2.2.2 高级设置
  • 提前创建慢日志存放文件夹;
  • 选择已经创建的文件夹;
  • 自定义文件名,后缀为txt格式;
  • 点确定。

2.3【计划】新增计划

  • 为作业计划命名;建议数据库+作业名称;
  • 执行:每天;
  • 执行一次,时间设置;
  • 点确定。

编辑bat脚本send_slow.bat

注意:

  • DATADIR:为新建罪业中新建的日志文件路径;
  • SLOWLOG:日志名称文件新建作业生成的日志名称。
send_slow.bat
set DATADIR=D:slowsqllog
set SLOWLOG=crm_mscrm_slowsqlog.txt
set MAIL_SER=mail.xxx.com
set MAIL_FM=was@xxx.com
set MAIL_LIST=aaa@xxx.com
set MAIL_CC1=bbb@xxx.com
set MAIL_CC2=ccc@xxx.com
set MAIL_SUB=slowlog
set MAIL_BODY=This is a SQL server slowsqllog.

sendEmail -s %MAIL_SER% -f %MAIL_FM% -t %MAIL_LIST% -cc %MAIL_CC1% -cc %MAIL_CC2% -u %MAIL_SUB% -m %MAIL_BODY% -xu  was -xp 654321  -a  %DATADIR%\%SLOWLOG%


windows设置定时计划

注意:定时计划发送邮件的时间一定要比sql server 数据库作业的时间晚,建议晚半个小时。

本文作者:李柯林(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129353.html

相关文章

  • XXL-JOB v2.0.2,分布式任务调度平台

    摘要:底层通讯方案优化升级较新版本,由方案调整为方案,执行器内嵌提供服务,调度中心复用容器端口提供服务任务告警逻辑调整,改为通过扫描失败日志方式触发。 v2.0.2 Release Notes 1、底层通讯方案优化:升级较新版本xxl-rpc,由JETTY方案调整为NETTY_HTTP方案,执行器内嵌netty-http-server提供服务,调度中心复用容器端口提供服务; 2、任务告警逻...

    lily_wang 评论0 收藏0
  • 【容器云 UK8S】日志监控方案:监控中心操作指南之监控中心概述,开启监控中心,添加监控目标和添加接

    摘要:添加接收人监控中心支持添加邮箱及微信两种告警,需要注意的是,添加邮箱告警的话,需要预先配置发件服务器。由于监控中心配置了一条告警规则,只要企业微信的信息填写正确,一般分钟以内均可从企业微信中获取到告警信息。监控中心概述监控中心是UK8S提供的产品化监控方案,提供基于Prometheus的产品解决方案,涵盖Prometheus集群的全生命周期管理,以及告警规则配置、报警设置等功能,省去了自行搭...

    Tecode 评论0 收藏0
  • 上线清单 —— 20 个 Laravel 应用性能优化项

    摘要:此问题称为查询问题。您将只执行两个查询而不是这是巨大的性能提升。这项工作是通过从数据库中执行查询完成的查询可能涉及到表以及其他的一些表。比如查询,视图,时间等等另一个非常酷的工具是,对应用,有优雅的调试助手的美称。 showImg(https://segmentfault.com/img/remote/1460000018339917?w=1280&h=722); 让我们开始吧!假若你...

    MadPecker 评论0 收藏0
  • SegmentFault 技术周刊 Vol.37 - 分布式缓存利器:Redis

    摘要:持久化到中反向代理的负载均衡基于的集群搭建如何实现从中订阅消息转发到客户端的扩展是阻塞式,使用订阅发布模式时,会导致整个进程进入阻塞。缓存是用于解决高并发场景下系统的性能及稳定性问题的银弹。 showImg(https://segmentfault.com/img/bVYE6k?w=900&h=385); Redis 是由意大利程序员 Salvatore Sanfilippo(昵称:a...

    binaryTree 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<