88 lines
3.9 KiB
SQL
88 lines
3.9 KiB
SQL
-- Schema: dbo
|
|
-- Stored Procedure: sp_WhoIsActive
|
|
|
|
CREATE PROC dbo.sp_WhoIsActive
|
|
(
|
|
--~
|
|
--Filters--Both inclusive and exclusive
|
|
--Set either filter to '' to disable
|
|
--Valid filter types are: session, program, database, login, and host
|
|
--Session is a session ID, and either 0 or '' can be used to indicate "all" sessions
|
|
--All other filter types support % or _ as wildcards
|
|
@filter sysname = '',
|
|
@filter_type VARCHAR(10) = 'session',
|
|
@not_filter sysname = '',
|
|
@not_filter_type VARCHAR(10) = 'session',
|
|
|
|
--Retrieve data about the calling session?
|
|
@show_own_spid BIT = 0,
|
|
|
|
--Retrieve data about system sessions?
|
|
@show_system_spids BIT = 0,
|
|
|
|
--Controls how sleeping SPIDs are handled, based on the idea of levels of interest
|
|
--0 does not pull any sleeping SPIDs
|
|
--1 pulls only those sleeping SPIDs that also have an open transaction
|
|
--2 pulls all sleeping SPIDs
|
|
@show_sleeping_spids TINYINT = 1,
|
|
|
|
--If 1, gets the full stored procedure or running batch, when available
|
|
--If 0, gets only the actual statement that is currently running in the batch or procedure
|
|
@get_full_inner_text BIT = 0,
|
|
|
|
--Get associated query plans for running tasks, if available
|
|
--If @get_plans = 1, gets the plan based on the request's statement offset
|
|
--If @get_plans = 2, gets the entire plan based on the request's plan_handle
|
|
@get_plans TINYINT = 0,
|
|
|
|
--Get the associated outer ad hoc query or stored procedure call, if available
|
|
@get_outer_command BIT = 0,
|
|
|
|
--Enables pulling transaction log write info and transaction duration
|
|
@get_transaction_info BIT = 0,
|
|
|
|
--Get information on active tasks, based on three interest levels
|
|
--Level 0 does not pull any task-related information
|
|
--Level 1 is a lightweight mode that pulls the top non-CXPACKET wait, giving preference to blockers
|
|
--Level 2 pulls all available task-based metrics, including:
|
|
--number of active tasks, current wait stats, physical I/O, context switches, and blocker information
|
|
@get_task_info TINYINT = 1,
|
|
|
|
--Gets associated locks for each request, aggregated in an XML format
|
|
@get_locks BIT = 0,
|
|
|
|
--Get average time for past runs of an active query
|
|
--(based on the combination of plan handle, sql handle, and offset)
|
|
@get_avg_time BIT = 0,
|
|
|
|
--Get additional non-performance-related information about the session or request
|
|
--text_size, language, date_format, date_first, quoted_identifier, arithabort, ansi_null_dflt_on,
|
|
--ansi_defaults, ansi_warnings, ansi_padding, ansi_nulls, concat_null_yields_null,
|
|
--transaction_isolation_level, lock_timeout, deadlock_priority, row_count, command_type
|
|
--
|
|
--If a SQL Agent job is running, an subnode called agent_info will be populated with some or all of
|
|
--the following: job_id, job_name, step_id, step_name, msdb_query_error (in the event of an error)
|
|
--
|
|
--If @get_task_info is set to 2 and a lock wait is detected, a subnode called block_info will be
|
|
--populated with some or all of the following: lock_type, database_name, object_id, file_id, hobt_id,
|
|
--applock_hash, metadata_resource, metadata_class_id, object_name, schema_name
|
|
@get_additional_info BIT = 0,
|
|
|
|
--Walk the blocking chain and count the number of
|
|
--total SPIDs blocked all the way down by a given session
|
|
--Also enables task_info Level 1, if @get_task_info is set to 0
|
|
@find_block_leaders BIT = 0,
|
|
|
|
--Pull deltas on various metrics
|
|
--Interval in seconds to wait before doing the second data pull
|
|
@delta_interval TINYINT = 0,
|
|
|
|
--List of desired output columns, in desired order
|
|
--Note that the final output will be the intersection of all enabled features and all
|
|
--columns in the list. Therefore, only columns associated with enabled features will
|
|
--actually appear in the output. Likewise, removing columns from this list may effectively
|
|
--disable features, even if they are turned on
|
|
--
|
|
--Each element in this list must be one of the valid output column names. Names must be
|
|
--delimited by square brackets. White space, formatting, and additio
|