SQL Server Profiler可以检测在数据上执行的语句,特别是有的项目不直接使用sql语句,直接使用ORM框架的系统处理数据库的项目,在调试sql语句时,给了很大的帮助。
之前写了使用SQL Server Profiler追踪死锁的文章《SQL Server Profiler追踪数据库死锁》,这里再简单写SQL Server Profiler使用过程中常用到的功能。
这里使用SQL Server 2008 R2版本
1. 在安装SQL Server 数据库时,请保证安装了SQL Server Profiler,默认情况全部安装都会自动安装上。
2. 打开SQL Server Management Studio,在菜单中,找到“工具”菜单,找到SQL Server Profiler菜单项,如下图所示。
3. 选择“事件选择”,勾选常用的几项即可,如下图所示。
4. 选择“显示所有列”,之后在列表中,勾选“DatabaseName”项。
5. 设置筛选器,这里设置只是过滤数据库名称,因为一个数据库实例中如果有多个数据库,那么不筛选数据库名称,那么所有数据库上的执行语句都能监控得到。
还可以设置Duration,筛选不同执行时间的sql语句,例如可以过滤执行时间较长的sql语句,选择可以优化sql语句。
如果同一个数据库,多个人访问,只想检测自己操作的语句怎么办?可以给数据库创建一个自己登陆的数据库账户(检测完后可以删除此用户),之后,在LoginName筛选器中,筛选自己登陆的数据库账户即可。
设置之后点击【运行】则开始监控了,监控画面如下。
事件以不同的特性(被称为数据列)来表现。数据列表现一个事件的不通特性,如事件的类、用于该事件的SQL语句、事件的资源开销以及事件来源。
数据列 | 说明 |
EventClass(事件类) | 事件类型,如SQL:StatementCompleted |
TextData | 事件所用的SQL语句,如SELECT * FROM Person |
CPU | 事件的CPU开销(以ms表示),如对一个SELECT语句,CPU=100表示该语句执行100ms |
Reads | 为一个事件所执行的逻辑读操作数量。例如对一个SELECT语句,Reads=800表示该语句需要800次逻辑读操作 |
Writes | 为一个事件所执行的逻辑写操作数量 |
Duration | 事件的执行时间(ms) |
SPID | 用于该事件的SQL Server进程标识符 |
StartTime | 事件开始的时间 |
以上是常用的数据列,另外还有一些不太常用的数据列:
- BinaryData(二进制数据)
- IntegerData(整数数据)
- EventSubClass(事件子类)
- DatabaseID(数据库标识符)
- ObjectID(对象标识符)
- IndexID(索引标识符)
- TransactionID(事务标识符)
- Error(错误)
- EndTime(结束时间)
更加详细的内容参见:https://www.cnblogs.com/kissdodog/p/3398523.html