SQL SERVER定时任务执行跟踪--供远程查看 [原创]
一、背景
每次查需要优化的SQL都需要上外网,通过Profiler,报表或者DMV执行特定sql来查找,来回跑很麻烦,能不能在本地直接监控外网的好性能的SQL呢?方法是有的,我们可以通过把Profiler跟踪转换为T-SQL脚本,在外网做定时任务,就可以定时执行跟踪,然后通过执行特定的脚本将跟踪保存的文件中的数据导出到数据库的指定表中,这样,就可以web后台远程查看这个指定表中的耗性能的SQL了。详细见下面的操作步骤。
二、操作步骤
1.从SQL SERVER PROFILER按照自己指定的条件创建跟踪
2.选择文件-导出-编写跟踪对应的脚本-选择对应的版本号,得到跟踪对应的T-SQL脚本
3.修改最大文件大小,set @maxfilesize = 20
设置跟踪的时间,set @DateTime = DateAdd(mi, 20, getdate())
设置文件滚动更新,参数为2
以年月日作为文件名
set @FileName = DateName(year,getdate()) + DateName(month, getdate()) + DateName(day, getdate()) --以日期做文件名
set @Prefix = N'D:\ClockingProfiler\' + @FileName
得到的参数放入下面的SQL中,创建跟踪:
exec @rc = sp_trace_create @TraceID output, 2, @Prefix, @maxfilesize, @Datetime
修改后得到下面的SQL:
-- Create a Queue
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
declare @DateTime datetime
declare @FileName nvarchar(20)
declare @Prefix nvarchar(256) set @DateTime = DateAdd(mi, 20, getdate()) --跟踪分钟
set @maxfilesize = 20 -- Please replace the text InsertFileNameHere, with an appropriate
-- filename prefixed by a path, e.g., c:\MyFolder\MyTrace. The .trc extension
-- will be appended to the filename automatically. If you are writing from
-- remote server to local drive, please use UNC path and make sure server has
-- write access to your network share set @FileName = DateName(year,getdate()) + DateName(month, getdate()) + DateName(day, getdate()) --以日期做文件名
set @Prefix = N'D:\ClockingProfiler\' + @FileName select @Prefix --参数表示允许文件滚动更新
exec @rc = sp_trace_create @TraceID output, 2, @Prefix, @maxfilesize, @Datetime
if (@rc != 0) goto error -- Client side File and Table cannot be scripted -- Set the events
declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 10, 15, @on
exec sp_trace_setevent @TraceID, 10, 16, @on
exec sp_trace_setevent @TraceID, 10, 1, @on
exec sp_trace_setevent @TraceID, 10, 9, @on
exec sp_trace_setevent @TraceID, 10, 17, @on
exec sp_trace_setevent @TraceID, 10, 2, @on
exec sp_trace_setevent @TraceID, 10, 10, @on
exec sp_trace_setevent @TraceID, 10, 18, @on
exec sp_trace_setevent @TraceID, 10, 11, @on
exec sp_trace_setevent @TraceID, 10, 12, @on
exec sp_trace_setevent @TraceID, 10, 13, @on
exec sp_trace_setevent @TraceID, 10, 6, @on
exec sp_trace_setevent @TraceID, 10, 14, @on
exec sp_trace_setevent @TraceID, 12, 15, @on
exec sp_trace_setevent @TraceID, 12, 16, @on
exec sp_trace_setevent @TraceID, 12, 1, @on
exec sp_trace_setevent @TraceID, 12, 9, @on
exec sp_trace_setevent @TraceID, 12, 17, @on
exec sp_trace_setevent @TraceID, 12, 6, @on
exec sp_trace_setevent @TraceID, 12, 10, @on
exec sp_trace_setevent @TraceID, 12, 14, @on
exec sp_trace_setevent @TraceID, 12, 18, @on
exec sp_trace_setevent @TraceID, 12, 11, @on
exec sp_trace_setevent @TraceID, 12, 12, @on
exec sp_trace_setevent @TraceID, 12, 13, @on -- Set the Filters
declare @intfilter int
declare @bigintfilter bigint exec sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Server Profiler - 1073afc5-8f3b-4f95-a683-006cd83f9bc2' --设置cpu大于等于ms
set @intfilter = 100
exec sp_trace_setfilter @TraceID, 18, 0, 4, @intfilter -- Set the trace status to start
exec sp_trace_setstatus @TraceID, 1 -- display trace id for future references
select TraceID=@TraceID
goto finish error:
select ErrorCode=@rc finish:
Go
4.导出得到的跟踪文件到指定的表中,若表不存在,先创建再导入;否则,直接导入。
declare @FileName nvarchar(20)
declare @Prefix nvarchar(256)
set @FileName = DateName(year,getdate()) + DateName(month, getdate()) + DateName(day, getdate()) --以日期做文件名
set @Prefix = N'D:\ClockingProfiler\' + @FileName + '.trc' --从跟踪的文件中导入跟踪数据到表中
IF OBJECT_ID(N'DigitalLibDB.dbo.DigitalLibDB_trc', N'U') IS NULL
BEGIN
SELECT * INTO DigitalLibDB_trc
From fn_trace_gettable(@Prefix, default);
END
ELSE
BEGIN
INSERT INTO DigitalLibDB_trc
SELECT * FROM fn_trace_gettable(@Prefix, default);
END
5.创建定时作业,第一步执行步骤3中的SQL, 执行完成后跳转到第二步,第二步执行步骤4中的SQL,如下图。
三、小结
至此,就可以通过web后台远程查看外网数据库表的耗性能耗io的sql,方便优化。当然,前提是你公司先得有这个web后台。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~如果您有什么问题,欢迎在下面评论,我们一起讨论,谢谢~ ~
~如果您觉得还不错,不妨点下右下方的推荐,有您的鼓励我会继续努力的~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SQL SERVER定时任务执行跟踪--供远程查看 [原创]的更多相关文章
- SQL Server中关于跟踪(Trace)那点事
前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简 ...
- 【转】SQL Server中关于跟踪(Trace)那点事
前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简 ...
- SQL Server中关于跟踪(Trace)那点事(转载)
前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简 ...
- 【转贴】SQL Server中关于跟踪(Trace)那点事
SQL Server中关于跟踪(Trace)那点事 https://www.cnblogs.com/zhijianliutang/p/4113911.html 作者很牛B.. 前言 一提到跟踪俩字,很 ...
- 了解Sql Server的执行计划
前一篇总结了Sql Server Profiler,它主要用来监控数据库,并跟踪生成的sql语句.但是只拿到生成的sql语句没有什么用,我们可以利用这些sql语句,然后结合执行计划来分析sql语句的性 ...
- 解决SQL Server管理器无法连接远程数据库Error: 1326错误
解决SQL Server管理器无法连接远程数据库Error: 1326错误 我们在在使用SQL Server时都会遇到使用SQL Server Management Studio无法连接远程数据库实例 ...
- 解决SQL Server管理器无法连接远程数据库的问题(转)
add by zhj: 本文最后那个数据库别名没搞明白,在我的测试中没有建别名,是可以的.远程登陆时,服务器名称: 服务器IP,端口号 (如223.42.155.248,52134 如果是默认端口号1 ...
- SQL Server 2008 R2 跟踪标志
原文:SQL Server 2008 R2 跟踪标志 跟踪标志用于临时设置特定服务器的特征或关闭特定行为.例如,如果启动 SQL Server 的一个实例时设置了跟踪标志 3205,将禁用磁带机的硬件 ...
- 未找到或无法访问服务器 请验证实例名称是否正确并且SQL Server 已配置为允许远程连接
无法连接到sql server 2008服务器 报下错误 其他信息 在与SQL Server建立连接时出现与网络相关的或特定于实例的错误 未找到或无法访问服务器请验证实例名称是否正确并且SQL ...
随机推荐
- boost: tcp client sample
#include <boost/asio.hpp> #include <iostream> using namespace std; using namespace boost ...
- C# Java 3DES加密解密 扩展及修正\0 问题
注: C#已亲测及做扩展, Java 部分未做验证 /// <summary> /// 3DES加密解密 /// ------------------------------------- ...
- SQL更新表的字段
Oracle: alter table CAPIAGENTLOG modify(clientcode nvarchar2()) SQL Server: alter table CAPIAGENTLOG ...
- systemctl
旧指令 新指令 使某服务自动启动 chkconfig --level 3 httpd on systemctl enable httpd.service 使某服务不自动启动 chkconfig - ...
- SQL 常用方法
EXCEPT :返回两个结果集的差(即从左查询中返回右查询没有找到的所有非重复值). INTERSECT :返回 两个结果集的交集(即两个查询都返回的所有非重复值). UNION :返回两个结果集的并 ...
- ASP.NET 项目 App_Code下无法找到类
APP_CODE 默认情况下,VS2010中新建的WebApplication中是没有App_Code文件夹的,若需要使用,可以自己手动添加文件夹,然后将文件夹名称设置为App_Code,然后在该文件 ...
- CentOS学习笔记--JDK安装
JDK安装 大部分的服务都离不开JAVA环境,CentOS里都是OpenJDK,显然我们还是使用JAVA的JDK好.(注:minimal版没有安装OpenJDK,其它版本需要删除这个.) JDK下载 ...
- 快速解决Canvas.toDataURL 图片跨域的问题
出现Canvas.toDataURL 图片跨域问题怎么解决呢?下面小编就为大家带来一篇Canvas.toDataURL 图片跨域问题的快速解决方法.一起跟随小编过来看看吧 如题,在将页面的图片地址进行 ...
- sed命令实战
删除所有的空行,并在每行后面增加一个空行 sed '/^$/d;G' /etc/fstab 将每一行前导的“空白字符”(空格,制表符)删除 sed 's/^[\t ]*//' file 将文本中的 a ...
- zabbix介绍
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix组件主要分两个: zabbix-server和zabbix-agent.支持的监控协议有ICM ...