问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SQL Server Profiler怎么跟踪指定数据库标识ID

发布网友 发布时间:2022-04-26 10:53

我来回答

3个回答

懂视网 时间:2022-04-09 11:03

 原文链接:http://www.cnblogs.com/caishuhua226/p/3838060.html   http://www.cnblogs.com/lyhabc/articles/2946938.html

http://www.cnblogs.com/lipeng0824/p/4417581.html(还需要学习)

1)菜单路径:开始--程序--Microsoft SQL Server 2008--性能工具--SQL Server Profiler

技术分享

  或者在SSMS里打开,工具--SQL Server Profiler

2)窗口左边的“常规”选项卡是一个基本设置,一般默认的就OK了。右边的“事件选择”选项卡,用来设置要跟踪的事件有哪些,列表的事件可以一一选择,基本上Sql上有的事件都有,包括你用SQL Server Management Studio操作数据库的过程都可以跟踪的到,只要单击显示所有事件就可以进行全部事件的选择了。

技术分享

3)在“事件选择”选项卡中可以对统计的字段进行筛选,单击任意一个列标题可以查看列的说明

4)SQL Trace文件的收集方法

首先,SQL Trace里有哪些事件呢?在Profiler里新建一个Trace,在事件选择里选择“显示所有事件”,就能看到一个清单。里面的事件分类,在SQL2005这个版本已有21个之多,而每个分类下又有不同数目的事件。可以说,DBA想要看到的事件,基本上都能覆盖。可是事件太多,如果所有的事件都收集,产生的SQL Trace会非常庞大,SQLSERVER就受不了。

这里总结一下,在做不同的问题分析时,经常要用到的事件

Database事件组

当DBA要监视数据文件和日志文件的自动增长与自动收缩的时候,可以选择收集Database事件组下面的这些事件,不过如果只是关心文件大小是什么时候变化的,可以定期运行TSQL脚本,或者使用性能监视器。如果要分析是什么操作触发了文件大小变化,可以使用SQL Trace。

Errors and Warnings事件组

这些事件会搜集SQL里发生的所有错误和警告信息。如果SQL运行不正常,很可能这些事件会有反映。所以建议每次收集时,都把这个事件组的事件全都选上这个事件组也能从一个角度反映性能问题。例如,attention事件记录了每一个客户端取消的请求。运行超时command timeout就是其中一个类型。如果你发现一个语句运行了15秒或30秒,然后紧跟着一个attention事件,就说明这里发生了一个客户端的command timeout。而hash warning,missing column statistics,missing join predicate,sort warning很可能伴随着一个运行速度不理想的语句

Locks事件组

dead lock graph,lock:deadlock,lock:deadlock chain这三个事件是跟踪死锁的。因为死锁在SQL里发生的频率不会太高,所以在做死锁问题的时候,可以把他们三个都选上。但是要注意,要先选上“显示所有列”,再选事件,因为有些重要的字段默认的模板里没有选上。

Lock:Timeout和Lock:Timeout(timeout>0)在发生阻塞的时候,会有Lock Timeout事件发生。可是,阻塞是SQL里为了实现事务隔离所需发生的事件,所以阻塞在SQL里发生得非常普遍。收集这两个事件对问题分析的帮助不会太大。还不如用性能监视器里SQLSERVER:Locks-Lock Timeouts/sec这个计数器看一个总的趋势。所以在实际使用中,很少选他们Lock:Acquired 、Lock:Cancel、Lock:Escalation、Lock:Released:这些事件能够跟踪一句语句在运行过程中对锁资源的申请和释放过程。但是在繁忙的生产环境里,SQL会申请大量的锁资源。所以这些事件会产生大量记录。通常情况下,只会在测试环境里,测试单条语句时,才敢把他们加上。在生产环境上,要尽可能避免使用他们

“Performance”事件组

“Performance”事件组里的事件主要分两类:Auto Stats能够记录SQL里发生的自动创建或更新统计信息的事件。其他有showplan字样的,是关于各种形式的执行计划以及运行信息。他们的相同点和不同点要有目的地选择,不要重复收集。需要注意的是,执行计划一般都比较大,而每一条语句执行,都会有他的执行计划,所以如果要收集执行计划,结果日志肯定会很大。所以一定要在必要的时候,才加入执行计划事件

“Security Audit”事件组

这一组事件的目的,是监视SQL里各项和安全有关的事件,例如有人加入了一个DB User、一个Login,有人做了数据库备份、DBCC动作,有人修改了用户密码等。如果要对SQL做安全监控,这些事件都是要考虑的。如果是要一般地监视运行,可能要选择的只有Audit Login和Audit logout通过这两个事件,我们能够看到一个连接的生命周期。如果有用户抱怨连接失败,也可以跟踪Audit Login Failed。如果连接请求是被SQL拒绝的,可以看到拒绝的时间和理由。

 

“Server”事件组

他的下面只有三个事件,Mount Tape、 Server Memory Change 、Trace File Close。这三个事件在SQL里发生的频率都不会很高,所以加进来也不会有很大影响尤其是Server Memory Change,如果发生,对SQL性能的影响不会很大。所以这个事件是可以经常收集的。当然,如果你同时收集了性能监视器日志,那个日志里也会有包含。

 “Sessions”事件组

他只有一个事件:ExistingConnection,反映在日志开始收集的时候,SQL里已经有的连接。这个事件总是要被选上的。

 “Stored Procedures”事件组

这是一个很重要的事件组,事件的选择也很有讲究。常用的事件分成两类:

和编译、重编译有关的:

SP:CacheHit

SP:CacheInsert

SP:CacheMiss

SP:CacheRemove

SP:Recompile

这些事件的量也会很大。所以只有当怀疑问题和执行计划重用、或者编译、重编译相关的时候,才需要选择。其他问题不要选择收集这些事件。

关于存储过程运行的:

RPC:Completed,RPC:Starting:应用程序调用了一个存储过程。这两个事件记录了存储过程的开始和结束。一般的SQL应用程序,例如,使用ADO连接运行一个存储过程,在SQL里看到的都是RPC事件。在RPC:Completed事件里,不但有结束时间,也包含开始时间。所以如果连接正常,一个RPC:Completed事件就应该包含RPC:Starting里的信息。理论上讲,只收集RPC:Completed就可以了。但是如果连接非正常地退出,或者遇到了SQL异常,可能存储过程的运行只能看到RPC:Starting事件,看不到RPC:Completed事件,但是这种几率是比较小的。

 

SP:Completed,SP:Starting:如果连接是以SQL Batch的方式调用存储过程,例如在SSMS里运行sp_who,看到的会是一组SP:Completed,SP:Starting事件。像RPC一样,SP:Completed事件也能包含SP:Starting的绝大部分信息。

 

SP:StmtCompleted,SP:StmtStarting:前两组事件都是以整个存储过程为单位的一个复杂的存储过程,可能最后执行的指令数会达到几千行,甚至几万行,十几万行(如果里面有循环逻辑)。当知道了一个存储过程慢,就要知道是哪一部分,或者是哪一句话最慢。这时候就需要SP:StmtCompleted,SP:StmtStarting事件来帮忙。和SP:Completed、RPC:Completed不同的是,如果一个存储过程在运行过程中被cancel了(例如,遇到了运行超时),SP:Completed、RPC:Completed都能被抓到,但是正在运行的语句不会有SP:StmtCompleted,后面没有运行的语句都不会有SP:StmtCompleted,SP:StmtStarting事件。所以通过

SP:StmtCompleted,SP:StmtStarting事件可以很好地看出存储过程在被终止时执行到了哪一步。但是SP:StmtCompleted,SP:StmtStarting事件会产生大量的日志记录,所以在问题定位阶段,一般不大会加入他们。而且,为了减少事件的数目,常常只收Completed事件,不收Starting事件。当问题有了方向之后,再加入更多的事件,有目的地收集和分析。

 

“TSQL”事件组

这个事件组也很重要。他的事件也分两类:

和编译、重编译相关的:

Exec PreparedSQL
Prepare SQL
SQL:StmtRecompile
Unprepare SQL
其中,SQL:StmtRecompile比较常用

 

关于批处理执行的:

SQL:BatchCompleted SQL:BatchStarting RPC:Completed

RPC:Starting类似

SQL:StmtCompleted SQL:StmtStarting

SP:StmtCompleted SP:StmtStarting类似

相似地,在问题定位阶段,一般不会加入SQL:StmtCompleted SQL:StmtStarting。而且,为了减少事件的数目,常常只收Completed事件,不收Starting事件。当问题有了方向之后,再加入更多的事件,有目的地收集和分析

 

“Transactions”事件组

常用的事件有:

DTCTransaction:分布式事务的生命周期。正常来讲MSDTC事务在SQL里比较少,而且

容易出问题。所以可以默认就收集他。

 

SQLTransaction:SQL事务的生命周期。SQL事务是SQL非常普通的操作。如果搜集,会产生大量记录。所以只会在遇到阻塞和死锁问题,又搞不清楚这个事务

怎麽被打开时,才会借助这个事务分析问题


TransactionLog:记录SQL向事务日志文件里写入日志的动作。这个动作在SQL里非常普遍,建议不要收集

------总结

来总结一下,对于一般性问题,作者建议收集的事件有哪些
1、一个普通的Trace
Database:Data File Auto Grow、Data File Auto Shrink、Log File Auto Grow、Log File Auto Shrink
Errors and Warnings:除了Errorlog以外的所有事件
Locks:Deadlock Graph、Lock:Escalation(在论坛里见过)

1 ALTER TABLE dbo.Tmp_testComputeColumn SET (LOCK_ESCALATION = TABLE)
2 GO

 

Performance:Auto Stats
Progress Report:Online Index Operation
Security Audit:、Audit Logi、Audit Login Failed、Audit Logout、Audit Server Starts and Stops、Audit Backup/Restore Event、Audit DBCC Event
Server:所有事件
Sessions:ExistingConnection
Stored Procedures:RPC:Completed, RPC:Starting
TSQL:SQL:BatchCompleted、SQL:BatchStarting、PrepareSQL、UnprepareSQL、SQL:StmtRecompile
Transactions:DTCTransaction

如果还要缩小日志生成量,可以去掉RPC:Starting和 SQL:BatchStarting

 

2、一个很详细的关于性能问题的Trace

Performance:Showplan Statistics Profile

Stored Procedures:RPC:Output Parameter、SP:CacheMiss、SP:CacheRemove、SP:Recompile、SP:Completed、SP:Starting、SP:StmtCompleted、SP:StmtStarting

TSQL:SQL:StmtStarting、SQL:StmtCompleted
Transactions:SQLTransaction

如果要缩小日志生成量,可以去掉SP:Starting 、SP:StmtStarting、 SQL:StmtStarting。当然,每个人分析问题的方法都可能不一样,对这些事件的喜好也不一样。

上面只是两种建议的组合。在使用时可以根据实际问题作调整。另外,按照默认的模板,有些事件比较重要的数据字段可能没有被包含。

例如Performance下的“Showplan Statistics Profile”事件,如果不选Binary字段,可能整个执行计划就看不到了,Trace就白收了。所以如果要收Trace,建议把所有字段都选上

 

[网站性能3]SqlServer中Profiler的使用

标签:

热心网友 时间:2022-04-09 08:11

1、首先需要查询出需要使用SQL Server Profiler跟踪的数据库标识ID

2、打开SQL Server Profiler工具,输入数据库的SA与密码,点击连接。

3、在跟踪属性中,点击事件选择;在事件选择窗口,选择列筛选器。

4、然后找到DataBaseID,选择等于,输入刚刚查询到的值,然后追踪运行即可。

热心网友 时间:2022-04-09 09:29

然后需要在安装了数据库的服务器上打开SQL Server management studio,点击工具。

选择SQL Server Profiler。

输入数据库的SA与密码,点击连接。

在跟踪属性中,点击事件选择

在这个选项卡中,有一个列筛选器,点击它。

在筛选器中找到DatabaseID,条件等于你查询出来的数据库标识ID号。点击确定。

现在就可以点击运行SQL Server Profiler跟踪了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
水利水电工程单元工程施工质量验收评定标准——土石方工程(SL 631... 关于水利水电工程项目划分的规程有哪些?划分的越细越好,感谢大家的帮 ... 水利水电工程的单位工程包括哪些工程? 尖子生学案:生物高中选修3目录 U盘传了数据怎么删除电脑记录如何清除电脑上U盘使用记录 把u盘插电脑怎么删掉记忆如何删掉电脑上插过U盘的记录 win7清除u盘记录 如何清理win7电脑u盘痕迹如何清除电脑上U盘使用记录 麦当劳和华莱士的外卖电话是什么? 一文详解ISO/IEC20000信息技术服务管理体系认证好处、材料、流程 vivo手机微信小视频发不出去怎么办? 有什么工具可以跟踪完整的sql语句 SQL Server Profiler 2008 怎么追踪特定种类语句如 insert,update,delete,能指定某个数据追踪吗 sql语法的跟踪 数据库跟踪audit loeout什么意思 mssql2012或navicat10 数据库跟踪 oracle怎样跟踪一条sql语句的执行过程? MySQL 如何追踪sql语句的执行 如何跟踪SQL SERVER 正在执行的语句 oracle 10g 中怎么跟踪SQL语句呀 产品对数据库的操作,sql语句在哪里能够... Oracle数据库跟踪 mysql 怎样进行数据库跟踪 如何使用SQL Server 跟踪数据库变化 oracle数据库,如何跟踪语句? Oracle 数据库如何跟踪SQL语句 "我的梦想是周游世界"用日语可以这么说吗? 暖暖环游世界的芙蕾雅之梦怎么获得 环游世界是一个理想吗 暖暖环游世界青叶的梦套装怎么得 如何才能完成我的梦——环游世界 sql数据库追踪问题 如何打开oracle的sql后台跟踪功能 vivox6plus微信发不了小视频怎么办 vivox5max为什么微信发不了视频啊 vivo xplay5微信发不出去视频和图片是怎么回事 vivo手机微信发不了语音和视频还有图片。好友发的 视频和照片也看不了 vivo x5max微信发不了小视频 vivoipoopor5G为什么微信视频发送失败? vivox5sl微信发不了图片和视频什么原因 哪些网站可以下载免费的高中物理教学视频? 谁能推荐几个好点的高中物理教学视频网址 高中物理教学视频下载 有没有学习高中物理的软件,尽量免费 求免费的高中物理学习视频 目前中学生学习网站都有哪些好高中物理视频学习网站,有谁推荐一下呗。 高中物理的学习视频在哪里可以找到啊?我急需找寻的? 谁能给我几个视频讲解的物理啊 要高中必修一的 珍哥物理的高中培训的视频在哪里可以看的倒 天津离地铁站口近的房价是多少钱一平 天津市地铁一号线沿线哪里的房子最便宜