Introduction to Profiler

SQL Server Profiler — or just Profiler — is a tool that can help monitor all the queries that are being run on your database. This allows you to see a lot of information including CPU time, reads, writes, duration, and even the text or stored proc being called along with the parameters.

That last part can be especially useful. When you see a stored procedure that is taking a particularly long time to run, you can always copy the TextData section (which will have the query along with its parameters) and paste it into SQL Server Management Studio. The nice part about this is you can then run the same stored procedure with the same parameters and get an execution plan to tell you what is slowing things down.

Using Profiler

First off, we need to open up a session of Profiler. There are two ways to do this. If you have SQL Server Management Studio open already, then you can go to the Tools drop-down on the menu bar and open SQL Server Profiler.

The other approach is to open Profiler directly from the Windows menu, as it can run as a standalone application without SSMS.

Either one of these approaches will open Profiler to the normal Connect to Server login page. You should already have a login for this as you’re supposed to be working on this database. Once you’re past the login page, you’ll get a Trace Properties page.

Trace Properties

The first tab (General) can usually be ignored if you just want to do a quick trace on something. But if you are a more frequent user, this tab lets you set up several options.

Templates are predefined traces that either came with Profiler as a built-in template or were set up in a previous session by someone else.

Save to File/Table allows you to do just that. You can save the trace to either a file or table for review later. Please note that you can also save off your trace manually if you’re so inclined.

Enable Trace Stop Time allows you set a date/time where Profiler will stop. This is a good option for long-running traces that you may not want to run through a heavy load period. Don’t forget, running Profiler does add some additional overhead to your database so leaving it running all the time is not the best idea.

Selecting Events

The last tab, Events Selection, allows us to select all of the actual events we want to see.
If you selected one of the templates from the previous tab (or if you just cycle through them), you’ll notice there are a lot of events to watch for. Of course, there is always the Show All Events checkbox, but this can be overwhelming if you’re just looking for your slower-running queries.

For most cases where I am simply looking for slow-running queries, I will go with all of the Stored Procedure events as well as the TSQL events. You can even throw in the Lock events for good measure.

Narrowing Our Search

Before we hit run, there are a couple of more things we need to do to narrow our search down.

If you run the Trace as it is, we will see a limited set of things but it will still be a lot. There are many queries and processes that run and most of them take only a few milliseconds. But as milliseconds and sub-millisecond running-queries are not what we are after, we need a way to filter those out. That’s where the Column Filters button comes in handy.

After clicking on the Column Filters button, we get the following dialog:

This is helpful in that it allows us to filter out rows that would otherwise clutter things up. As mentioned before, we are not looking for the queries that are running fast already. (Although it’s always interesting to see just how many times those are called, but that can be another performance issue altogether…)

As you can see, there are several items we can filter. For our purposes, we are interested in the duration. The duration field is length of time it takes the stored procedure to run in milliseconds.

So, if we want to screen out the stored procs that took less than a second to run, we would set the Greater Than or Equal value to 1,000 and check the Exclude rows that do not contain values checkbox.

After hitting OK, we return to our Events Selection screen. At this point, we can hit Run and get a results screen that looks like one below:

On a normal, active database, you would see something pop up here after just a few seconds as there is always plenty of traffic. The higher you set the duration value, though, the less you will see simply because most queries run fairly quickly.

Here is an image of the results of a trace with a filter set to 10 milliseconds. Note that you can see the duration, reads, writes, and more importantly, the TextData, which tell us the SP and parameters of the queries that run slower than our filter.

Quick Introduction to SQL Server Profiler的更多相关文章

  1. SQL Server Profiler

    一.SQL Profiler工具简介 SQL Profiler是一个图形界面和一组系统存储过程,其作用如下: 图形化监视SQL Server查询: 在后台收集查询信息: 分析性能: 诊断像死锁之类的问 ...

  2. SQL Server Profiler使用教程,通俗易懂才是王道

    做开发,平时难免和数据库打交道,特别是写存储过程,对于我们这些不常写SQL的人来说是一件极其痛苦的事,每次写完运行总是有错,如果用的是本地数据库的话还好,可以在本机调试SQL,那如果在数据库在服务器上 ...

  3. SQL Server Profiler教程

    SQL Server Profiler是SQL Server企业版自带的一个sql 语句跟踪和分析工具,功能十分强大.熟练地使用它,对我们分析数据库性能问题很有帮助,比如当数据访问使用EF等ORM框架 ...

  4. SQL Server Profiler工具

    一.SQL Profiler工具简介 SQL Profiler是一个图形界面和一组系统存储过程,其作用如下: 图形化监视SQL Server查询: 在后台收集查询信息: 分析性能: 诊断像死锁之类的问 ...

  5. SQL2005 : 如何在SQL Server Profiler (事件查看器)中 跟踪查看死锁恢复

    SQL Profiler 通过 SQL Profiler 工具程序,可监控应用程序如何访问数据库引擎.普通来说,当系统性能需要优化或是应用程序对数据库访问的结果不合预期,都可以使用该工具确认视图问题所 ...

  6. SQL Server Profiler使用方法

    一.SQL Server Profiler使用方法 1.单击开始--程序--Microsoft SQL Server 2005--性能工具--SQL Server Profiler,如下图:   2. ...

  7. 降龙十八掌之一:(亢龙有悔)SQL Server Profiler和数据库引擎优化顾问

    简介 说到Sql的[性能工具]真是强大,SQL Server Profiler的中文意思是SQL Server事件探查,这个到底是做什么用的呢?我们都知道探查的意思大多是和监视有关,其实这个SQL S ...

  8. SQL Server Profiler:使用方法和指标说明

    SQL Server Profiler的中文意思是SQL Server事件探查,一个Sql的监视工具,可以具体到每一行Sql语句,每一次操作,和每一次的连接.感觉这个工具的作用还是很大的,给大家分享一 ...

  9. 解决 SQL Server Profiler 跟踪[不断]出现检索数据

    问题简单回顾: 当我们使用SQL Server Profiler根据数据时,有时刚打开什么也没干呢,就显示很多数据了,当我们用橡皮擦清除,没过两秒就又有了,如图: 是不是很恼火!~不怕,解决方案如下: ...

随机推荐

  1. [03] 线程同步 synchronized

    1.线程同步概述 线程之间有可能共享一些资源,比如内存.文件.数据库等.多个线程同时读写同一份共享资源时,就可能引起冲突,所以引入了线程的"同步"机制. 所谓同步,就是说线程要有先 ...

  2. Jlink使用技巧之读取STM32内部的程序

    前言 上一篇Jlink系列文章介绍了如何使用J-Flash来下载Hex或Bin文件到单片机,具体可参考Jlink使用技巧之单独下载HEX文件到单片机,本篇文章介绍,如何使用JFlash来读取单片机的程 ...

  3. 【C#复习总结】细说泛型委托

    1 前言 本系列会将[委托] [匿名方法][Lambda表达式] [泛型委托] [表达式树] [事件]等基础知识总结一下.(本人小白一枚,有错误的地方希望大佬指正) 系类1:细说委托 系类2:细说匿名 ...

  4. MySQL 8 新特性之自增主键的持久化

    自增主键没有持久化是个比较早的bug,这点从其在官方bug网站的id号也可看出(https://bugs.mysql.com/bug.php?id=199).由Peter Zaitsev(现Perco ...

  5. MVC5+EF6 --自定义控制Action访问权限

    本章主要讲解在MVC中灵活控制Action的访问权限: 本章所使用的示例表也是上一张所使用的TbUser.TbRole.TbUserRole: 最终的效果是针对任意一个Action或Controlle ...

  6. DSL 系列(1) - 扩展点的论述与实现

    前言 DSL 全称为 domain-specific language(领域特定语言),本系列应当会很长,其中包含些许不成熟的想法,欢迎私信指正. 1. DSL 简述 我理解的 DSL 的主要职能是 ...

  7. H5 25-CSS三大特性之层叠性

    25-CSS三大特性之层叠性 我是段落 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  8. 多线程系列之三:Immutable 模式

    一,什么是Immutable模式?immutable就是不变的,不发生改变的.Immutable模式中存在着确保实例状态不发生变化改变的类.这些实例不需要互斥处理.String就是一个Immutabl ...

  9. Linux (Redhat / Fedora / CentOS) 更改 hostname 的方式

    Linux (Redhat / Fedora / CentOS) 更改 hostname 的方式 [蔡宗融個人網站]https://www.ichiayi.com/wiki/tech/linux_ho ...

  10. composer 自动加载一 通过file加载

    github地址 https://github.com/brady-wang/composer composer init 可以生成一个composer.json文件 { "name&quo ...