Tracing Performance
Use these seven system stored procedures to monitor your SQL Server system and trace your applications' performance.
February 20, 2002
You can monitor your SQL Server system's performance in many ways. Here are six helpful system stored procedures and a function that you can use to monitor your SQL Server system and trace your applications' performance.
7. sp_trace_create
Calling SQL Server's built-in tracing stored procedures from your T-SQL scripts is a good way to set up and run recurring traces. Sp_trace_create returns the trace ID that's in the output parameter that the other sp_trace* stored procedures use (@tid). To set up a trace that writes to the file C:mytrace.trc, use the following command:
EXEC sp_trace_create @traceid = @tid OUTPUT , @options = 0 , @tracefile = N'c:mytrace'
6. sp_trace_setevent
After you create a trace, you can use sp_trace_setevent to specify the events you want to trace. (See SQL Server Books Online—BOL—for a complete list of the event IDs that you can add to the trace.) The following example shows how to add an event to trace all the SQL Server logins (@eventid = 14):
EXEC sp_trace_setevent @traceid = @tid, @eventid = 14, @columnid = 6, @on = @on
5. sp_trace_setfilter
Filters in a trace refine the data you capture. BOL documents the accepted values for the @columnid, @logical_operator, and @comparison_operator parameters. To filter for login IDs that are like mikeo, enter
EXEC sp_trace_setfilter @traceid = @tid, @columnid = 6, @logical_operator = 1, @comparison_operator = 6, @value = N'mikeo'
4. sp_trace_setstatus
Sp_trace_setstatus starts and stops a trace. A value of 1 for @status starts the trace; 0 stops the trace; and 2 closes the trace. To start a trace for the example above, enter
EXEC sp_trace_setstatus @traceid = @tid, @status = 1
3. fn_trace_getinfo
Although this item is a function, not a system stored procedure, you can use the following syntax to see which traces are running:
SELECT * FROM ::fn_trace_getinfo(default)
2. sp_lock
To track down application-blocking problems, sp_lock lists the current process ID, the database object requesting the lock, and the requested lock type. Sp_lock returns database ID numbers, but you can use the OBJECT_NAME() function to translate the ID numbers to their database names. To list all current SQL Server locks, enter
EXEC sp_lock
1. sp_who and sp_who2
Sp_who and sp_who2 provide information about running processes. Sp_who shows the system's current process IDs, status, and the associated login, host, and database name. In addition to that information, sp_who2 lists the CPU, disk, and memory utilization and shows the process names. Use the syntax
EXEC sp_who2
About the Author
You May Also Like