1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

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

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

作为本际云服务器推荐网的小编小本本,今天要和大家分享一个SQLserver数据库自动抓取慢日志并发送邮件的方法,为大家提供一个方便快捷的数据库管理方式。

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

安装邮件服务

1.将sendEmail-v156.zip解压,得到sendEmail.exe和sendEmail.pl文件。

2.将这两个文件放在C:\Windows\System32下。

创建慢日志查询存储过程

1.打开SQLserver,依次点击“可编程性”、“存储过程”,右键新建存储过程。

2.在“新建存储过程”中添加以下代码:

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_offsetWHEN -1 THEN DATALENGTH(st.text)ELSE qs.statement_end_offsetEND-qs.statement_start_offset)/2)+1) N执行语句, creation_time N语句编译时间, last_execution_time N上次执行时间 FROMsys.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_offsetWHEN -1 THEN DATALENGTH(st.text)ELSE qs.statement_end_offsetEND-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

3.点击“执行”创建存储过程。

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

1.启动SQLserver代理。(若已启动则跳过此步骤)

启动方式:右键计算机→“管理”→“服务和应用程序”→“服务”,搜索sqlserver代理→右键“启动”。

2.新建作业

在SQLServerManagementStudio中,依次点击“SQLServer代理”→“作业”→“新建作业”:

2.1“常规”:为作业定义名称。

2.2“步骤”:新建步骤命名为数据库+作业名称;类型选择Transact-SQL脚本(T-SQL):

2.2.1“常规”:设置步骤名称、选择要连接的数据库、填写要执行的命令(例如:exec pr_Slowsqllog_Exp)。

2.2.2“高级”:提前创建慢日志存放文件夹;选择已经创建的文件夹;自定义文件名,后缀为txt格式。

2.3“计划”:新增计划命名为作业名称;执行:每天;执行一次,时间设置。

3.编辑bat脚本

设置send_slow.bat文件,注意修改DATADIR和SLOWLOG参数。代码如下:

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 SQLserver slow sql log.
sendEmail -s %MAIL_SER% -f %MAIL_FM% -t %MAIL_LIST% -cc %MAIL_CC1% -cc %MAIL_CC2% -u %MAIL_SUB% -m %MAIL_BODY% -xu was-xp654321 -a %DATADIR%\%SLOWLOG%

4.设置定时计划

在windows中的“控制面板”中,找到“计划任务”项,设置定时计划发送邮件的时间一定要比SQLserver数据库作业的时间晚,建议晚半个小时。

通过以上步骤,SQLserver数据库部署自动抓取慢日志并发送邮件的操作就完成了。希望这篇文章对大家有所帮助。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6424.html