Using the Microsoft SQL Profiler

Using the Microsoft SQL Profiler


Microsoft SQL Profiler is an indispensable tool for database administrators and developers working with SQL Server. It helps in monitoring, diagnosing, and troubleshooting performance issues by allowing you to track SQL Server events. This blog post will guide you through using SQL Profiler effectively, focusing on different profiler types and how they can be used to solve performance issues.

What is SQL Profiler?

SQL Profiler is a user interface to SQL Server’s tracing functionality. It allows you to monitor various events in the database engine, such as queries executed, login attempts, and stored procedure calls. By capturing and analysing this data, you can identify inefficient queries, troubleshoot database application issues, and understand the behaviour of your database.

Setting Up SQL Profiler

To start using SQL Profiler, follow these steps:

  1. Launch SQL Profiler: Open SQL Server Management Studio (SSMS), navigate to ‘Tools’, and select ‘SQL Server Profiler’.
  2. Connect to a Server: Enter your server details and credentials to establish a connection.
  3. Trace Properties: Upon launching, a ‘Trace Properties’ window appears. Here, you can name your trace and choose a template that suits your monitoring needs.
  4. Select Events: Choose the events you want to monitor. For performance analysis, focus on events related to queries, such as ‘SQL:BatchStarting’, ‘SQL:BatchCompleted’, and ‘Showplan XML Statistics Profile’.
  5. Set Filters: To avoid capturing too much data, set filters on the events. For instance, filter by database name, application name, or duration to capture long-running queries.

Profiler Trace Types

Understanding different trace types in SQL Profiler is crucial for effective performance analysis:

  1. Standard Trace: This is the most commonly used trace, capturing a broad range of event types. It’s ideal for getting a general overview of database activities.
  2. TSQL Trace: Focuses on Transact-SQL statements. Use this to capture and analyze the SQL queries being executed, which is invaluable for identifying slow-running or inefficient queries.
  3. Stored Procedure Trace: Specifically targets the execution of stored procedures. It helps in understanding which procedures are called most frequently and how they perform.
  4. Tuning Trace: This trace is designed for use with the Database Engine Tuning Advisor. It helps in collecting data for performance tuning and index optimization.

Analyzing Trace Data

Once you’ve captured the trace data, the next step is analysis:

  1. Review Query Performance: Look for long-running queries. Examine their execution plans to identify bottlenecks, such as table scans or missing indexes.
  2. Identify Frequent Queries: Determine if frequently executed queries are optimized. Frequent executions of inefficient queries can significantly impact performance.
  3. Analyze Stored Procedures: For stored procedure traces, check the execution time and frequency. Look for opportunities to optimize them.

Solving Performance Issues

Based on your analysis, take appropriate actions:

  1. Optimize Queries: Modify inefficient queries. This might involve rewriting queries, creating indexes, or optimizing joins.
  2. Update Statistics: Ensure that the database statistics are up-to-date for better query optimization by the SQL Server.
  3. Review Indexing Strategy: Add or modify indexes based on the queries you observed in the trace.


SQL Profiler is a powerful tool in the hands of a skilled database professional. By understanding different profiler types and analysing trace data effectively, you can significantly improve the performance of your SQL Server databases.

Remember, regular monitoring and proactive optimization are key to maintaining optimal database performance.

You can download the latest SQL Server Profiler here: –


Hi, my name is Stephen Finchett. I have been a software engineer for over 30 years and worked on complex, business critical, multi-user systems for all of my career. For the last 15 years, I have been concentrating on web based solutions using the Microsoft Stack including ASP.Net, C#, TypeScript, SQL Server and running everything at scale within Kubernetes.