text: ﻿
  
  
  
  
  
  
  
  
  
  
  
  
  
  CREATE view [srv].[vRequestStatistics] as
  /*Статистика запросов*/
  select rs.[session_id] --Сессия
  	      ,rs.[blocking_session_id] --Сессия, которая явно блокирует сессию [session_id]
  		  ,rs.[request_id] --Идентификатор запроса. Уникален в контексте сеанса
  	      ,rs.[start_time] --Метка времени поступления запроса
  		  ,DateDiff(second, rs.[start_time], GetDate()) as [date_diffSec] --Сколько в сек прошло времени от момента поступления запроса
  	      ,rs.[status] --Состояние запроса
  	      ,rs.[command] --Тип выполняемой в данный момент команды
  		  , COALESCE(
  						CAST(NULLIF(rs.[total_elapsed_time] / 1000, 0) as BIGINT)
  					   ,CASE WHEN (rs.[status]  <> 'running') 
  								THEN  DATEDIFF(ss,0,getdate() - nullif(rs.[last_request_end_time], '1900-01-01T00:00:00.000'))
  						END
  					) as [total_time, sec] --Время всей работы запроса в сек
  		  , CAST(NULLIF((CAST(rs.[total_elapsed_time] as BIGINT) - CAST(rs.[wait_time] AS BIGINT)) / 1000, 0 ) as bigint) as [work_time, sec] --Время работы запроса в сек без учета времени ожиданий
  		  , CASE WHEN (rs.[status] <> 'running') 
  		  			THEN  DATEDIFF(ss,0,getdate() - nullif(rs.[last_request_end_time], '1900-01-01T00:00:00.000'))
  			END as [sleep_time, sec] --Время сна в сек
  		  , NULLIF( CAST((rs.[logical_reads] + rs.[writes]) * 8 / 1024 as numeric(38,2)), 0) as [IO, MB] --операций чтения и записи в МБ
  		  , CASE  rs.transaction_isolation_level
  			WHEN 0 THEN 'Unspecified'
  			WHEN 1 THEN 'ReadUncommited'
  			WHEN 2 THEN 'ReadCommited'
  			WHEN 3 THEN 'Repetable'
  			WHEN 4 THEN 'Serializable'
  			WHEN 5 THEN 'Snapshot'
  			END as [transaction_isolation_level_desc] --уровень изоляции транзакции (расшифровка)
  		  ,rs.[percent_complete] --Процент завершения работы для следующих команд
  		  ,DB_NAME(rs.[database_id]) as [DBName] --БД
  		  , SUBSTRING(
  						sq.[TSQL]
  					  , rs.[statement_start_offset]/2+1
  					  ,	(
  							CASE WHEN ((rs.[statement_start_offset]<0) OR (rs.[statement_end_offset]<0))
  									THEN DATALENGTH (sq.[TSQL])
  								 ELSE rs.[statement_end_offset]
  							END
  							- rs.[statement_start_offset]
  						)/2 +1
  					 ) as [CURRENT_REQUEST] --Текущий выполняемый запрос в пакете
  	      ,sq.[TSQL] --Запрос всего пакета
  		  ,pq.[QueryPlan] --План всего пакета
  	      ,rs.[wait_type] --Если запрос в настоящий момент блокирован, в столбце содержится тип ожидания (sys.dm_os_wait_stats)
  	      ,rs.[login_time] --Время подключения сеанса
  		  ,rs.[host_name] --Имя клиентской рабочей станции, указанное в сеансе. Для внутреннего сеанса это значение равно NULL
  		  ,rs.[program_name] --Имя клиентской программы, которая инициировала сеанс. Для внутреннего сеанса это значение равно NULL
  	      ,cast(rs.[wait_time]/1000 as decimal(18,3)) as [wait_timeSec] --Если запрос в настоящий момент блокирован, в столбце содержится продолжительность текущего ожидания (в секундах)
  	      ,rs.[wait_time] --Если запрос в настоящий момент блокирован, в столбце содержится продолжительность текущего ожидания (в миллисекундах)
  	      ,rs.[last_wait_type] --Если запрос был блокирован ранее, в столбце содержится тип последнего ожидания
  	      ,rs.[wait_resource] --Если запрос в настоящий момент блокирован, в столбце указан ресурс, освобождения которого ожидает запрос
  	      ,rs.[open_transaction_count] --Число транзакций, открытых для данного запроса
  	      ,rs.[open_resultset_count] --Число результирующих наборов, открытых для данного запроса
  	      ,rs.[transaction_id] --Идентификатор транзакции, в которой выполняется запрос
  	      ,rs.[context_info] --Значение CONTEXT_INFO сеанса
  		  ,cast(rs.[estimated_completion_time]/1000 as decimal(18,3)) as [estimated_completion_timeSec] --Только для внутреннего использования. Не допускает значение NULL
  	      ,rs.[estimated_completion_time] --Только для внутреннего использования. Не допускает значение NULL
  		  ,cast(rs.[cpu_time]/1000 as decimal(18,3)) as [cpu_timeSec] --Время ЦП (в секундах), затраченное на выполнение запроса
  	      ,rs.[cpu_time] --Время ЦП (в миллисекундах), затраченное на выполнение запроса
  		  ,cast(rs.[total_elapsed_time]/1000 as decimal(18,3)) as [total_elapsed_timeSec] --Общее время, истекшее с момента поступления запроса (в секундах)
  	      ,rs.[total_elapsed_time] --Общее время, истекшее с момента поступления запроса (в миллисекундах)
  	      ,rs.[scheduler_id] --Идентификатор планировщика, который планирует данный запрос
  	      ,rs.[task_address] --Адрес блока памяти, выделенного для задачи, связанной с этим запросом
  	      ,rs.[reads] --Число операций чтения, выполненных данным запросом
  	      ,rs.[writes] --Число операций записи, выполненных данным запросом
  	      ,rs.[logical_reads] --Число логических операций чтения, выполненных данным запросом
  	      ,rs.[text_size] --Установка параметра TEXTSIZE для данного запроса
  	      ,rs.[language] --Установка языка для данного запроса
  	      ,rs.[date_format] --Установка параметра DATEFORMAT для данного запроса
  	      ,rs.[date_first] --Установка параметра DATEFIRST для данного запроса
  	      ,rs.[quoted_identifier] --1 = Параметр QUOTED_IDENTIFIER для запроса включен (ON). В противном случае — 0
  	      ,rs.[arithabort] --1 = Параметр ARITHABORT для запроса включен (ON). В противном случае — 0
  	      ,rs.[ansi_null_dflt_on] --1 = Параметр ANSI_NULL_DFLT_ON для запроса включен (ON). В противном случае — 0
  	      ,rs.[ansi_defaults] --1 = Параметр ANSI_DEFAULTS для запроса включен (ON). В противном случае — 0
  	      ,rs.[ansi_warnings] --1 = Параметр ANSI_WARNINGS для запроса включен (ON). В противном случае — 0
  	      ,rs.[ansi_padding] --1 = Параметр ANSI_PADDING для запроса включен (ON)
  	      ,rs.[ansi_nulls] --1 = Параметр ANSI_NULLS для запроса включен (ON). В противном случае — 0
  	      ,rs.[concat_null_yields_null] --1 = Параметр CONCAT_NULL_YIELDS_NULL для запроса включен (ON). В противном случае — 0
  	      ,rs.[transaction_isolation_level] --Уровень изоляции, с которым создана транзакция для данного запроса
  		  ,cast(rs.[lock_timeout]/1000 as decimal(18,3)) as [lock_timeoutSec] --Время ожидания блокировки для данного запроса (в секундах)
  		  ,rs.[lock_timeout] --Время ожидания блокировки для данного запроса (в миллисекундах)
  	      ,rs.[deadlock_priority] --Значение параметра DEADLOCK_PRIORITY для данного запроса
  	      ,rs.[row_count] --Число строк, возвращенных клиенту по данному запросу
  	      ,rs.[prev_error] --Последняя ошибка, происшедшая при выполнении запроса
  	      ,rs.[nest_level] --Текущий уровень вложенности кода, выполняемого для данного запроса
  	      ,rs.[granted_query_memory] --Число страниц, выделенных для выполнения поступившего запроса (1 страница-это примерно 8 КБ)
  	      ,rs.[executing_managed_code] --Указывает, выполняет ли данный запрос в настоящее время код объекта среды CLR (например, процедуры, типа или триггера).
  									  --Этот флаг установлен в течение всего времени, когда объект среды CLR находится в стеке, даже когда из среды вызывается код Transact-SQL
  	      
  		  ,rs.[group_id]	--Идентификатор группы рабочей нагрузки, которой принадлежит этот запрос
  	      ,rs.[query_hash] --Двоичное хэш-значение рассчитывается для запроса и используется для идентификации запросов с аналогичной логикой.
  						  --Можно использовать хэш запроса для определения использования статистических ресурсов для запросов, которые отличаются только своими литеральными значениями
  	      
  		  ,rs.[query_plan_hash] --Двоичное хэш-значение рассчитывается для плана выполнения запроса и используется для идентификации аналогичных планов выполнения запросов.
  							   --Можно использовать хэш плана запроса для нахождения совокупной стоимости запросов со схожими планами выполнения
  		  
  		  ,rs.[most_recent_session_id] --Представляет собой идентификатор сеанса самого последнего запроса, связанного с данным соединением
  	      ,rs.[connect_time] --Отметка времени установления соединения
  	      ,rs.[net_transport] --Содержит описание физического транспортного протокола, используемого данным соединением
  	      ,rs.[protocol_type] --Указывает тип протокола передачи полезных данных
  	      ,rs.[protocol_version] --Версия протокола доступа к данным, связанного с данным соединением
  	      ,rs.[endpoint_id] --Идентификатор, описывающий тип соединения. Этот идентификатор endpoint_id может использоваться для запросов к представлению sys.endpoints
  	      ,rs.[encrypt_option] --Логическое значение, указывающее, разрешено ли шифрование для данного соединения
  	      ,rs.[auth_scheme] --Указывает схему проверки подлинности (SQL Server или Windows), используемую с данным соединением
  	      ,rs.[node_affinity] --Идентифицирует узел памяти, которому соответствует данное соединение
  	      ,rs.[num_reads] --Число пакетов, принятых посредством данного соединения
  	      ,rs.[num_writes] --Число пакетов, переданных посредством данного соединения
  	      ,rs.[last_read] --Отметка времени о последнем полученном пакете данных
  	      ,rs.[last_write] --Отметка времени о последнем отправленном пакете данных
  	      ,rs.[net_packet_size] --Размер сетевого пакета, используемый для передачи данных
  	      ,rs.[client_net_address] --Сетевой адрес удаленного клиента
  	      ,rs.[client_tcp_port] --Номер порта на клиентском компьютере, который используется при осуществлении соединения
  	      ,rs.[local_net_address] --IP-адрес сервера, с которым установлено данное соединение. Доступен только для соединений, которые в качестве транспорта данных используют протокол TCP
  	      ,rs.[local_tcp_port] --TCP-порт сервера, если соединение использует протокол TCP
  	      ,rs.[parent_connection_id] --Идентифицирует первичное соединение, используемое в сеансе MARS
  	      ,rs.[most_recent_sql_handle] --Дескриптор последнего запроса SQL, выполненного с помощью данного соединения. Постоянно проводится синхронизация между столбцом most_recent_sql_handle и столбцом most_recent_session_id
  		  ,rs.[host_process_id] --Идентификатор процесса клиентской программы, которая инициировала сеанс. Для внутреннего сеанса это значение равно NULL
  		  ,rs.[client_version] --Версия TDS-протокола интерфейса, который используется клиентом для подключения к серверу. Для внутреннего сеанса это значение равно NULL
  		  ,rs.[client_interface_name] --Имя библиотеки или драйвер, используемый клиентом для обмена данными с сервером. Для внутреннего сеанса это значение равно NULL
  		  ,rs.[security_id] --Идентификатор безопасности Microsoft Windows, связанный с именем входа
  		  ,rs.[login_name] --SQL Server Имя входа, под которой выполняется текущий сеанс.
  						  --Чтобы узнать первоначальное имя входа, с помощью которого был создан сеанс, см. параметр original_login_name.
  						  --Может быть SQL Server проверка подлинности имени входа или имени пользователя домена, прошедшего проверку подлинности Windows
  		  
  		  ,rs.[nt_domain] --Домен Windows для клиента, если во время сеанса применяется проверка подлинности Windows или доверительное соединение.
  						 --Для внутренних сеансов и пользователей, не принадлежащих к домену, это значение равно NULL
  		  
  		  ,rs.[nt_user_name] --Имя пользователя Windows для клиента, если во время сеанса используется проверка подлинности Windows или доверительное соединение.
  							--Для внутренних сеансов и пользователей, не принадлежащих к домену, это значение равно NULL
  		  
  		  ,rs.[memory_usage] --Количество 8-килобайтовых страниц памяти, используемых данным сеансом
  		  ,rs.[total_scheduled_time] --Общее время, назначенное данному сеансу (включая его вложенные запросы) для исполнения, в миллисекундах
  		  ,rs.[last_request_start_time] --Время, когда начался последний запрос данного сеанса. Это может быть запрос, выполняющийся в данный момент
  		  ,rs.[last_request_end_time] --Время завершения последнего запроса в рамках данного сеанса
  		  ,rs.[is_user_process] --0, если сеанс является системным. В противном случае значение равно 1
  		  ,rs.[original_security_id] --Microsoft Идентификатор безопасности Windows, связанный с параметром original_login_name
  		  ,rs.[original_login_name] --SQL Server Имя входа, которую использует клиент создал данный сеанс.
  								   --Это может быть имя входа SQL Server, прошедшее проверку подлинности, имя пользователя домена Windows, 
  								   --прошедшее проверку подлинности, или пользователь автономной базы данных.
  								   --Обратите внимание, что после первоначального соединения для сеанса может быть выполнено много неявных или явных переключений контекста.
  								   --Например если EXECUTE AS используется
  		  
  		  ,rs.[last_successful_logon] --Время последнего успешного входа в систему для имени original_login_name до запуска текущего сеанса
  		  ,rs.[last_unsuccessful_logon] --Время последнего неуспешного входа в систему для имени original_login_name до запуска текущего сеанса
  		  ,rs.[unsuccessful_logons] --Число неуспешных попыток входа в систему для имени original_login_name между временем last_successful_logon и временем login_time
  		  ,rs.[authenticating_database_id] --Идентификатор базы данных, выполняющей проверку подлинности участника.
  										  --Для имен входа это значение будет равно 0.
  										  --Для пользователей автономной базы данных это значение будет содержать идентификатор автономной базы данных
  		  
  		  ,rs.[sql_handle] --Хэш-карта текста SQL-запроса
  	      ,rs.[statement_start_offset] --Количество символов в выполняемом в настоящий момент пакете или хранимой процедуре, в которой запущена текущая инструкция.
  									  --Может применяться вместе с функциями динамического управления sql_handle, statement_end_offset и sys.dm_exec_sql_text
  									  --для извлечения исполняемой в настоящий момент инструкции по запросу
  	      
  		  ,rs.[statement_end_offset] --Количество символов в выполняемом в настоящий момент пакете или хранимой процедуре, в которой завершилась текущая инструкция.
  									--Может применяться вместе с функциями динамического управления sql_handle, statement_end_offset и sys.dm_exec_sql_text
  									--для извлечения исполняемой в настоящий момент инструкции по запросу
  	      
  		  ,rs.[plan_handle] --Хэш-карта плана выполнения SQL
  	      ,rs.[database_id] --Идентификатор базы данных, к которой выполняется запрос
  	      ,rs.[user_id] --Идентификатор пользователя, отправившего данный запрос
  	      ,rs.[connection_id] --Идентификатор соединения, по которому поступил запрос
  		  ,rs.[is_blocking_other_session] --1-сессия явно блокирует другие сессии, 0-сессия явно не блокирует другие сессии
  		  ,rs.[dop] --Степень параллелизма запроса
  		  ,rs.[request_time] --Дата и время обращения запроса за предоставлением памяти
  		  ,rs.[grant_time] --Дата и время, когда запросу была предоставлена память. Возвращает значение NULL, если память еще не была предоставлена
  		  ,rs.[requested_memory_kb] --Общий объем запрошенной памяти в килобайтах
  		  ,rs.[granted_memory_kb] --Общий объем фактически предоставленной памяти в килобайтах.
  								  --Может быть значение NULL, если память еще не была предоставлена.
  								  --Обычно это значение должно быть одинаковым с requested_memory_kb.
  								  --Для создания индекса сервер может разрешить дополнительное предоставление по требованию памяти,
  								  --объем которой выходит за рамки изначально предоставленной памяти
  		  
  		  ,rs.[required_memory_kb] --Минимальный объем памяти в килобайтах (КБ), необходимый для выполнения данного запроса.
  								   --Значение requested_memory_kb равно этому объему или больше его
  		  
  		  ,rs.[used_memory_kb] --Используемый в данный момент объем физической памяти (в килобайтах)
  		  ,rs.[max_used_memory_kb] --Максимальный объем используемой до данного момента физической памяти в килобайтах
  		  ,rs.[query_cost] --Ожидаемая стоимость запроса
  		  ,rs.[timeout_sec] --Время ожидания данного запроса в секундах до отказа от обращения за предоставлением памяти
  		  ,rs.[resource_semaphore_id] --Неуникальный идентификатор семафора ресурса, которого ожидает данный запрос
  		  ,rs.[queue_id] --Идентификатор ожидающей очереди, в которой данный запрос ожидает предоставления памяти.
  						 --Значение NULL, если память уже предоставлена
  		  
  		  ,rs.[wait_order] --Последовательный порядок ожидающих запросов в указанной очереди queue_id.
  						   --Это значение может изменяться для заданного запроса, если другие запросы отказываются от предоставления памяти или получают ее.
  						   --Значение NULL, если память уже предоставлена
  		  
  		  ,rs.[is_next_candidate] --Является следующим кандидатом на предоставление памяти (1 = да, 0 = нет, NULL = память уже предоставлена)
  		  ,rs.[wait_time_ms] --Время ожидания в миллисекундах. Значение NULL, если память уже предоставлена
  		  ,rs.[pool_id] --Идентификатор пула ресурсов, к которому принадлежит данная группа рабочей нагрузки
  		  ,rs.[is_small] --Значение 1 означает, что для данной операции предоставления памяти используется малый семафор ресурса.
  						 --Значение 0 означает использование обычного семафора
  		  
  		  ,rs.[ideal_memory_kb] --Объем, в килобайтах (КБ), предоставленной памяти, необходимый для размещения всех данных в физической памяти.
  								--Основывается на оценке количества элементов
  		  
  		  ,rs.[reserved_worker_count] --Число рабочих процессов, зарезервированной с помощью параллельных запросов, а также число основных рабочих процессов, используемых всеми запросами
  		  ,rs.[used_worker_count] --Число рабочих процессов, используемых параллельных запросов
  		  ,rs.[max_used_worker_count] --???
  		  ,rs.[reserved_node_bitmap] --???
  		  ,rs.[bucketid] --Идентификатор сегмента хэша, в который кэшируется запись.
  						 --Значение указывает диапазон от 0 до значения размера хэш-таблицы для типа кэша.
  						 --Для кэшей SQL Plans и Object Plans размер хэш-таблицы может достигать 10007 на 32-разрядных версиях систем и 40009 — на 64-разрядных.
  						 --Для кэша Bound Trees размер хэш-таблицы может достигать 1009 на 32-разрядных версиях систем и 4001 на 64-разрядных.
  						 --Для кэша расширенных хранимых процедур размер хэш-таблицы может достигать 127 на 32-разрядных и 64-разрядных версиях систем
  		  
  		  ,rs.[refcounts] --Число объектов кэша, ссылающихся на данный объект кэша.
  						  --Значение refcounts для записи должно быть не меньше 1, чтобы размещаться в кэше
  		  
  		  ,rs.[usecounts] --Количество повторений поиска объекта кэша.
  						  --Остается без увеличения, если параметризованные запросы обнаруживают план в кэше.
  						  --Может быть увеличен несколько раз при использовании инструкции showplan
  		  
  		  ,rs.[size_in_bytes] --Число байтов, занимаемых объектом кэша
  		  ,rs.[memory_object_address] --Адрес памяти кэшированной записи.
  									  --Это значение можно использовать с представлением sys.dm_os_memory_objects,
  									  --чтобы проанализировать распределение памяти кэшированного плана, 
  									  --и с представлением sys.dm_os_memory_cache_entries для определения затрат на кэширование записи
  		  
  		  ,rs.[cacheobjtype] --Тип объекта в кэше. Значение может быть одним из следующих
  		  ,rs.[objtype] --Тип объекта. Значение может быть одним из следующих
  		  ,rs.[parent_plan_handle] --Родительский план
  		  
  		  --данные из sys.dm_exec_query_stats брались за сутки, в которых была пара (запрос, план)
  		  ,rs.[creation_time] --Время компиляции плана
  		  ,rs.[execution_count] --Количество выполнений плана с момента последней компиляции
  		  ,rs.[total_worker_time] --Общее время ЦП, затраченное на выполнение плана с момента компиляции, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[min_last_worker_time] --Минимальное время ЦП, затраченное на последнее выполнение плана, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[max_last_worker_time] --Максимальное время ЦП, затраченное на последнее выполнение плана, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[min_worker_time] --Минимальное время ЦП, когда-либо затраченное на выполнение плана, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[max_worker_time] --Максимальное время ЦП, когда-либо затраченное на выполнение плана, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[total_physical_reads] --Общее количество операций физического считывания при выполнении плана с момента его компиляции.
  									 --Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[min_last_physical_reads] --Минимальное количество операций физического считывания за время последнего выполнения плана.
  										--Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[max_last_physical_reads] --Максимальное количество операций физического считывания за время последнего выполнения плана.
  										--Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[min_physical_reads] --Минимальное количество операций физического считывания за одно выполнение плана.
  								   --Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[max_physical_reads] --Максимальное количество операций физического считывания за одно выполнение плана.
  								   --Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[total_logical_writes] --Общее количество операций логической записи при выполнении плана с момента его компиляции.
  									 --Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[min_last_logical_writes] --Минимальное количество страниц в буферном пуле, загрязненных во время последнего выполнения плана.
  										--Если страница уже является «грязной» (т. е. измененной), операции записи не учитываются.
  										--Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[max_last_logical_writes] --Максимальное количество страниц в буферном пуле, загрязненных во время последнего выполнения плана.
  										--Если страница уже является «грязной» (т. е. измененной), операции записи не учитываются.
  										--Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[min_logical_writes] --Минимальное количество операций логической записи за одно выполнение плана.
  								   --Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[max_logical_writes] --Максимальное количество операций логической записи за одно выполнение плана.
  								   --Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[total_logical_reads] --Общее количество операций логического считывания при выполнении плана с момента его компиляции.
  									--Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[min_last_logical_reads] --Минимальное количество операций логического считывания за время последнего выполнения плана.
  									   --Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[max_last_logical_reads] --Максимальное количество операций логического считывания за время последнего выполнения плана.
  									   --Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[min_logical_reads]	   --Минимальное количество операций логического считывания за одно выполнение плана.
  									   --Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[max_logical_reads]	--Максимальное количество операций логического считывания за одно выполнение плана.
  									--Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[total_clr_time]	--Время, в микросекундах (но с точностью до миллисекунды),
  								--внутри Microsoft .NET Framework общеязыковая среда выполнения (CLR) объекты при выполнении плана с момента его компиляции.
  								--Объекты среды CLR могут быть хранимыми процедурами, функциями, триггерами, типами и статистическими выражениями
  		  
  		  ,rs.[min_last_clr_time] --Минимальное время, в микросекундах (но с точностью до миллисекунды),
  								  --затраченное внутри .NET Framework объекты среды CLR во время последнего выполнения плана.
  								  --Объекты среды CLR могут быть хранимыми процедурами, функциями, триггерами, типами и статистическими выражениями
  		  
  		  ,rs.[max_last_clr_time] --Максимальное время, в микросекундах (но с точностью до миллисекунды),
  								  --затраченное внутри .NET Framework объекты среды CLR во время последнего выполнения плана.
  								  --Объекты среды CLR могут быть хранимыми процедурами, функциями, триггерами, типами и статистическими выражениями
  		  
  		  ,rs.[min_clr_time] --Минимальное время, когда-либо затраченное на выполнение плана внутри объектов .NET Framework среды CLR,
  							 --в микросекундах (но с точностью до миллисекунды).
  							 --Объекты среды CLR могут быть хранимыми процедурами, функциями, триггерами, типами и статистическими выражениями
  		  
  		  ,rs.[max_clr_time] --Максимальное время, когда-либо затраченное на выполнение плана внутри среды CLR .NET Framework,
  							 --в микросекундах (но с точностью до миллисекунды).
  							 --Объекты среды CLR могут быть хранимыми процедурами, функциями, триггерами, типами и статистическими выражениями
  		  
  		  --,rs.[total_elapsed_time] --Общее время, затраченное на выполнение плана, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[min_last_elapsed_time] --Минимальное время, затраченное на последнее выполнение плана, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[max_last_elapsed_time] --Максимальное время, затраченное на последнее выполнение плана, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[min_elapsed_time] --Минимальное время, когда-либо затраченное на выполнение плана, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[max_elapsed_time] --Максимальное время, когда-либо затраченное на выполнение плана, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[total_rows] --Общее число строк, возвращаемых запросом. Не может иметь значение null.
  						   --Значение всегда равно 0, если скомпилированная в собственном коде хранимая процедура запрашивает оптимизированную для памяти таблицу
  		  
  		  ,rs.[min_last_rows] --Минимальное число строк, возвращенных последним выполнением запроса. Не может иметь значение null.
  							  --Значение всегда равно 0, если скомпилированная в собственном коде хранимая процедура запрашивает оптимизированную для памяти таблицу
  		  
  		  ,rs.[max_last_rows] --Максимальное число строк, возвращенных последним выполнением запроса. Не может иметь значение null.
  							  --Значение всегда равно 0, если скомпилированная в собственном коде хранимая процедура запрашивает оптимизированную для памяти таблицу
  		  
  		  ,rs.[min_rows] --Минимальное количество строк, когда-либо возвращенных по запросу во время выполнения один
  						 --Значение всегда равно 0, если скомпилированная в собственном коде хранимая процедура запрашивает оптимизированную для памяти таблицу
  		  
  		  ,rs.[max_rows] --Максимальное число строк, когда-либо возвращенных по запросу во время выполнения один
  						 --Значение всегда равно 0, если скомпилированная в собственном коде хранимая процедура запрашивает оптимизированную для памяти таблицу
  		  
  		  ,rs.[total_dop] --Общую сумму по степени параллелизма плана используется с момента его компиляции.
  						  --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_last_dop] --Минимальная степень параллелизма, если время последнего выполнения плана.
  							 --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_last_dop] --Максимальная степень параллелизма, если время последнего выполнения плана.
  							 --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_dop] --Минимальная степень параллелизма этот план когда-либо используется во время одного выполнения.
  						--Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_dop] --Максимальная степень параллелизма этот план когда-либо используется во время одного выполнения.
  						--Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[total_grant_kb] --Общий объем зарезервированной памяти в КБ предоставить этот план, полученных с момента его компиляции.
  							   --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_last_grant_kb] --Минимальный объем зарезервированной памяти предоставляет в КБ, когда время последнего выполнения плана.
  								  --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_last_grant_kb] --Максимальный объем зарезервированной памяти предоставляет в КБ, когда время последнего выполнения плана.
  								  --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_grant_kb] --Минимальный объем зарезервированной памяти в КБ предоставить никогда не получено в ходе одного выполнения плана.
  							 --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_grant_kb] --Максимальный объем зарезервированной памяти в КБ предоставить никогда не получено в ходе одного выполнения плана.
  							 --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[total_used_grant_kb] --Общий объем зарезервированной памяти в КБ предоставить этот план, используемый с момента его компиляции.
  									--Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_last_used_grant_kb] --Минимальная сумма предоставления используемой памяти в КБ, если время последнего выполнения плана.
  									   --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_last_used_grant_kb] --Максимальная сумма предоставления используемой памяти в КБ, если время последнего выполнения плана.
  									   --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_used_grant_kb] --Минимальный объем используемой памяти в КБ предоставить никогда не используется при выполнении одного плана.
  								  --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_used_grant_kb] --Максимальный объем используемой памяти в КБ предоставить никогда не используется при выполнении одного плана.
  								  --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[total_ideal_grant_kb] --Общий объем идеальный память в КБ, оценка плана с момента его компиляции.
  									 --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_last_ideal_grant_kb] --Минимальный объем памяти, идеальным предоставляет в КБ, когда время последнего выполнения плана.
  										--Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_last_ideal_grant_kb] --Максимальный объем памяти, идеальным предоставляет в КБ, когда время последнего выполнения плана.
  										--Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_ideal_grant_kb] --Минимальный объем памяти идеальный предоставления в этот план когда-либо оценка во время выполнения один КБ.
  								   --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_ideal_grant_kb] --Максимальный объем памяти идеальный предоставления в этот план когда-либо оценка во время выполнения один КБ.
  								   --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[total_reserved_threads] --Общая сумма по зарезервированным параллельного потоков этот план когда-либо использовавшегося с момента его компиляции.
  									   --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_last_reserved_threads] --Минимальное число зарезервированных параллельных потоков, когда время последнего выполнения плана.
  										  --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_last_reserved_threads] --Максимальное число зарезервированных параллельных потоков, когда время последнего выполнения плана.
  										  --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_reserved_threads] --Минимальное число зарезервированных параллельного потоков, когда-либо использовать при выполнении одного плана.
  									 --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_reserved_threads] --Максимальное число зарезервированных параллельного потоков никогда не используется при выполнении одного плана.
  									 --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[total_used_threads] --Общая сумма используется параллельных потоков этот план когда-либо использовавшегося с момента его компиляции.
  								   --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_last_used_threads] --Минимальное число используемых параллельных потоков, когда время последнего выполнения плана.
  									  --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_last_used_threads] --Максимальное число используемых параллельных потоков, когда время последнего выполнения плана.
  									  --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_used_threads] --Минимальное число используемых параллельных потоков, при выполнении одного плана использовали.
  								 --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_used_threads] --Максимальное число используемых параллельных потоков, при выполнении одного плана использовали.
  								 --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  
  		  ,rs.[InsertUTCDate] --дата и время создания записи в UTC
  		  ,rs.[EndRegUTCDate] --дата и время удаления записи из активных запросов в UTC
    FROM [srv].[RequestStatistics] as rs with(readuncommitted)
    inner join [srv].[PlanQuery] as pq on rs.[plan_handle]=pq.[PlanHandle] and rs.[sql_handle]=pq.[SqlHandle]
    inner join [srv].[SQLQuery] as sq on sq.[SqlHandle]=pq.[SqlHandle]
    union all
    select rs.[session_id] --Сессия
  	      ,rs.[blocking_session_id] --Сессия, которая явно блокирует сессию [session_id]
  		  ,rs.[request_id] --Идентификатор запроса. Уникален в контексте сеанса
  	      ,rs.[start_time] --Метка времени поступления запроса
  		  ,DateDiff(second, rs.[start_time], GetDate()) as [date_diffSec] --Сколько в сек прошло времени от момента поступления запроса
  	      ,rs.[status] --Состояние запроса
  	      ,rs.[command] --Тип выполняемой в данный момент команды
  		  , COALESCE(
  						CAST(NULLIF(rs.[total_elapsed_time] / 1000, 0) as BIGINT)
  					   ,CASE WHEN (rs.[status]  <> 'running') 
  								THEN  DATEDIFF(ss,0,getdate() - nullif(rs.[last_request_end_time], '1900-01-01T00:00:00.000'))
  						END
  					) as [total_time, sec] --Время всей работы запроса в сек
  		  , CAST(NULLIF((CAST(rs.[total_elapsed_time] as BIGINT) - CAST(rs.[wait_time] AS BIGINT)) / 1000, 0 ) as bigint) as [work_time, sec] --Время работы запроса в сек без учета времени ожиданий
  		  , CASE WHEN (rs.[status] <> 'running') 
  		  			THEN  DATEDIFF(ss,0,getdate() - nullif(rs.[last_request_end_time], '1900-01-01T00:00:00.000'))
  			END as [sleep_time, sec] --Время сна в сек
  		  , NULLIF( CAST((rs.[logical_reads] + rs.[writes]) * 8 / 1024 as numeric(38,2)), 0) as [IO, MB] --операций чтения и записи в МБ
  		  , CASE  rs.transaction_isolation_level
  			WHEN 0 THEN 'Unspecified'
  			WHEN 1 THEN 'ReadUncommited'
  			WHEN 2 THEN 'ReadCommited'
  			WHEN 3 THEN 'Repetable'
  			WHEN 4 THEN 'Serializable'
  			WHEN 5 THEN 'Snapshot'
  			END as [transaction_isolation_level_desc] --уровень изоляции транзакции (расшифровка)
  		  ,rs.[percent_complete] --Процент завершения работы для следующих команд
  		  ,DB_NAME(rs.[database_id]) as [DBName] --БД
  		  , SUBSTRING(
  						sq.[TSQL]
  					  , rs.[statement_start_offset]/2+1
  					  ,	(
  							CASE WHEN ((rs.[statement_start_offset]<0) OR (rs.[statement_end_offset]<0))
  									THEN DATALENGTH (sq.[TSQL])
  								 ELSE rs.[statement_end_offset]
  							END
  							- rs.[statement_start_offset]
  						)/2 +1
  					 ) as [CURRENT_REQUEST] --Текущий выполняемый запрос в пакете
  	      ,sq.[TSQL] --Запрос всего пакета
  		  ,pq.[QueryPlan] --План всего пакета
  	      ,rs.[wait_type] --Если запрос в настоящий момент блокирован, в столбце содержится тип ожидания (sys.dm_os_wait_stats)
  	      ,rs.[login_time] --Время подключения сеанса
  		  ,rs.[host_name] --Имя клиентской рабочей станции, указанное в сеансе. Для внутреннего сеанса это значение равно NULL
  		  ,rs.[program_name] --Имя клиентской программы, которая инициировала сеанс. Для внутреннего сеанса это значение равно NULL
  	      ,cast(rs.[wait_time]/1000 as decimal(18,3)) as [wait_timeSec] --Если запрос в настоящий момент блокирован, в столбце содержится продолжительность текущего ожидания (в секундах)
  	      ,rs.[wait_time] --Если запрос в настоящий момент блокирован, в столбце содержится продолжительность текущего ожидания (в миллисекундах)
  	      ,rs.[last_wait_type] --Если запрос был блокирован ранее, в столбце содержится тип последнего ожидания
  	      ,rs.[wait_resource] --Если запрос в настоящий момент блокирован, в столбце указан ресурс, освобождения которого ожидает запрос
  	      ,rs.[open_transaction_count] --Число транзакций, открытых для данного запроса
  	      ,rs.[open_resultset_count] --Число результирующих наборов, открытых для данного запроса
  	      ,rs.[transaction_id] --Идентификатор транзакции, в которой выполняется запрос
  	      ,rs.[context_info] --Значение CONTEXT_INFO сеанса
  		  ,cast(rs.[estimated_completion_time]/1000 as decimal(18,3)) as [estimated_completion_timeSec] --Только для внутреннего использования. Не допускает значение NULL
  	      ,rs.[estimated_completion_time] --Только для внутреннего использования. Не допускает значение NULL
  		  ,cast(rs.[cpu_time]/1000 as decimal(18,3)) as [cpu_timeSec] --Время ЦП (в секундах), затраченное на выполнение запроса
  	      ,rs.[cpu_time] --Время ЦП (в миллисекундах), затраченное на выполнение запроса
  		  ,cast(rs.[total_elapsed_time]/1000 as decimal(18,3)) as [total_elapsed_timeSec] --Общее время, истекшее с момента поступления запроса (в секундах)
  	      ,rs.[total_elapsed_time] --Общее время, истекшее с момента поступления запроса (в миллисекундах)
  	      ,rs.[scheduler_id] --Идентификатор планировщика, который планирует данный запрос
  	      ,rs.[task_address] --Адрес блока памяти, выделенного для задачи, связанной с этим запросом
  	      ,rs.[reads] --Число операций чтения, выполненных данным запросом
  	      ,rs.[writes] --Число операций записи, выполненных данным запросом
  	      ,rs.[logical_reads] --Число логических операций чтения, выполненных данным запросом
  	      ,rs.[text_size] --Установка параметра TEXTSIZE для данного запроса
  	      ,rs.[language] --Установка языка для данного запроса
  	      ,rs.[date_format] --Установка параметра DATEFORMAT для данного запроса
  	      ,rs.[date_first] --Установка параметра DATEFIRST для данного запроса
  	      ,rs.[quoted_identifier] --1 = Параметр QUOTED_IDENTIFIER для запроса включен (ON). В противном случае — 0
  	      ,rs.[arithabort] --1 = Параметр ARITHABORT для запроса включен (ON). В противном случае — 0
  	      ,rs.[ansi_null_dflt_on] --1 = Параметр ANSI_NULL_DFLT_ON для запроса включен (ON). В противном случае — 0
  	      ,rs.[ansi_defaults] --1 = Параметр ANSI_DEFAULTS для запроса включен (ON). В противном случае — 0
  	      ,rs.[ansi_warnings] --1 = Параметр ANSI_WARNINGS для запроса включен (ON). В противном случае — 0
  	      ,rs.[ansi_padding] --1 = Параметр ANSI_PADDING для запроса включен (ON)
  	      ,rs.[ansi_nulls] --1 = Параметр ANSI_NULLS для запроса включен (ON). В противном случае — 0
  	      ,rs.[concat_null_yields_null] --1 = Параметр CONCAT_NULL_YIELDS_NULL для запроса включен (ON). В противном случае — 0
  	      ,rs.[transaction_isolation_level] --Уровень изоляции, с которым создана транзакция для данного запроса
  		  ,cast(rs.[lock_timeout]/1000 as decimal(18,3)) as [lock_timeoutSec] --Время ожидания блокировки для данного запроса (в секундах)
  		  ,rs.[lock_timeout] --Время ожидания блокировки для данного запроса (в миллисекундах)
  	      ,rs.[deadlock_priority] --Значение параметра DEADLOCK_PRIORITY для данного запроса
  	      ,rs.[row_count] --Число строк, возвращенных клиенту по данному запросу
  	      ,rs.[prev_error] --Последняя ошибка, происшедшая при выполнении запроса
  	      ,rs.[nest_level] --Текущий уровень вложенности кода, выполняемого для данного запроса
  	      ,rs.[granted_query_memory] --Число страниц, выделенных для выполнения поступившего запроса (1 страница-это примерно 8 КБ)
  	      ,rs.[executing_managed_code] --Указывает, выполняет ли данный запрос в настоящее время код объекта среды CLR (например, процедуры, типа или триггера).
  									  --Этот флаг установлен в течение всего времени, когда объект среды CLR находится в стеке, даже когда из среды вызывается код Transact-SQL
  	      
  		  ,rs.[group_id]	--Идентификатор группы рабочей нагрузки, которой принадлежит этот запрос
  	      ,rs.[query_hash] --Двоичное хэш-значение рассчитывается для запроса и используется для идентификации запросов с аналогичной логикой.
  						  --Можно использовать хэш запроса для определения использования статистических ресурсов для запросов, которые отличаются только своими литеральными значениями
  	      
  		  ,rs.[query_plan_hash] --Двоичное хэш-значение рассчитывается для плана выполнения запроса и используется для идентификации аналогичных планов выполнения запросов.
  							   --Можно использовать хэш плана запроса для нахождения совокупной стоимости запросов со схожими планами выполнения
  		  
  		  ,rs.[most_recent_session_id] --Представляет собой идентификатор сеанса самого последнего запроса, связанного с данным соединением
  	      ,rs.[connect_time] --Отметка времени установления соединения
  	      ,rs.[net_transport] --Содержит описание физического транспортного протокола, используемого данным соединением
  	      ,rs.[protocol_type] --Указывает тип протокола передачи полезных данных
  	      ,rs.[protocol_version] --Версия протокола доступа к данным, связанного с данным соединением
  	      ,rs.[endpoint_id] --Идентификатор, описывающий тип соединения. Этот идентификатор endpoint_id может использоваться для запросов к представлению sys.endpoints
  	      ,rs.[encrypt_option] --Логическое значение, указывающее, разрешено ли шифрование для данного соединения
  	      ,rs.[auth_scheme] --Указывает схему проверки подлинности (SQL Server или Windows), используемую с данным соединением
  	      ,rs.[node_affinity] --Идентифицирует узел памяти, которому соответствует данное соединение
  	      ,rs.[num_reads] --Число пакетов, принятых посредством данного соединения
  	      ,rs.[num_writes] --Число пакетов, переданных посредством данного соединения
  	      ,rs.[last_read] --Отметка времени о последнем полученном пакете данных
  	      ,rs.[last_write] --Отметка времени о последнем отправленном пакете данных
  	      ,rs.[net_packet_size] --Размер сетевого пакета, используемый для передачи данных
  	      ,rs.[client_net_address] --Сетевой адрес удаленного клиента
  	      ,rs.[client_tcp_port] --Номер порта на клиентском компьютере, который используется при осуществлении соединения
  	      ,rs.[local_net_address] --IP-адрес сервера, с которым установлено данное соединение. Доступен только для соединений, которые в качестве транспорта данных используют протокол TCP
  	      ,rs.[local_tcp_port] --TCP-порт сервера, если соединение использует протокол TCP
  	      ,rs.[parent_connection_id] --Идентифицирует первичное соединение, используемое в сеансе MARS
  	      ,rs.[most_recent_sql_handle] --Дескриптор последнего запроса SQL, выполненного с помощью данного соединения. Постоянно проводится синхронизация между столбцом most_recent_sql_handle и столбцом most_recent_session_id
  		  ,rs.[host_process_id] --Идентификатор процесса клиентской программы, которая инициировала сеанс. Для внутреннего сеанса это значение равно NULL
  		  ,rs.[client_version] --Версия TDS-протокола интерфейса, который используется клиентом для подключения к серверу. Для внутреннего сеанса это значение равно NULL
  		  ,rs.[client_interface_name] --Имя библиотеки или драйвер, используемый клиентом для обмена данными с сервером. Для внутреннего сеанса это значение равно NULL
  		  ,rs.[security_id] --Идентификатор безопасности Microsoft Windows, связанный с именем входа
  		  ,rs.[login_name] --SQL Server Имя входа, под которой выполняется текущий сеанс.
  						  --Чтобы узнать первоначальное имя входа, с помощью которого был создан сеанс, см. параметр original_login_name.
  						  --Может быть SQL Server проверка подлинности имени входа или имени пользователя домена, прошедшего проверку подлинности Windows
  		  
  		  ,rs.[nt_domain] --Домен Windows для клиента, если во время сеанса применяется проверка подлинности Windows или доверительное соединение.
  						 --Для внутренних сеансов и пользователей, не принадлежащих к домену, это значение равно NULL
  		  
  		  ,rs.[nt_user_name] --Имя пользователя Windows для клиента, если во время сеанса используется проверка подлинности Windows или доверительное соединение.
  							--Для внутренних сеансов и пользователей, не принадлежащих к домену, это значение равно NULL
  		  
  		  ,rs.[memory_usage] --Количество 8-килобайтовых страниц памяти, используемых данным сеансом
  		  ,rs.[total_scheduled_time] --Общее время, назначенное данному сеансу (включая его вложенные запросы) для исполнения, в миллисекундах
  		  ,rs.[last_request_start_time] --Время, когда начался последний запрос данного сеанса. Это может быть запрос, выполняющийся в данный момент
  		  ,rs.[last_request_end_time] --Время завершения последнего запроса в рамках данного сеанса
  		  ,rs.[is_user_process] --0, если сеанс является системным. В противном случае значение равно 1
  		  ,rs.[original_security_id] --Microsoft Идентификатор безопасности Windows, связанный с параметром original_login_name
  		  ,rs.[original_login_name] --SQL Server Имя входа, которую использует клиент создал данный сеанс.
  								   --Это может быть имя входа SQL Server, прошедшее проверку подлинности, имя пользователя домена Windows, 
  								   --прошедшее проверку подлинности, или пользователь автономной базы данных.
  								   --Обратите внимание, что после первоначального соединения для сеанса может быть выполнено много неявных или явных переключений контекста.
  								   --Например если EXECUTE AS используется
  		  
  		  ,rs.[last_successful_logon] --Время последнего успешного входа в систему для имени original_login_name до запуска текущего сеанса
  		  ,rs.[last_unsuccessful_logon] --Время последнего неуспешного входа в систему для имени original_login_name до запуска текущего сеанса
  		  ,rs.[unsuccessful_logons] --Число неуспешных попыток входа в систему для имени original_login_name между временем last_successful_logon и временем login_time
  		  ,rs.[authenticating_database_id] --Идентификатор базы данных, выполняющей проверку подлинности участника.
  										  --Для имен входа это значение будет равно 0.
  										  --Для пользователей автономной базы данных это значение будет содержать идентификатор автономной базы данных
  		  
  		  ,rs.[sql_handle] --Хэш-карта текста SQL-запроса
  	      ,rs.[statement_start_offset] --Количество символов в выполняемом в настоящий момент пакете или хранимой процедуре, в которой запущена текущая инструкция.
  									  --Может применяться вместе с функциями динамического управления sql_handle, statement_end_offset и sys.dm_exec_sql_text
  									  --для извлечения исполняемой в настоящий момент инструкции по запросу
  	      
  		  ,rs.[statement_end_offset] --Количество символов в выполняемом в настоящий момент пакете или хранимой процедуре, в которой завершилась текущая инструкция.
  									--Может применяться вместе с функциями динамического управления sql_handle, statement_end_offset и sys.dm_exec_sql_text
  									--для извлечения исполняемой в настоящий момент инструкции по запросу
  	      
  		  ,rs.[plan_handle] --Хэш-карта плана выполнения SQL
  	      ,rs.[database_id] --Идентификатор базы данных, к которой выполняется запрос
  	      ,rs.[user_id] --Идентификатор пользователя, отправившего данный запрос
  	      ,rs.[connection_id] --Идентификатор соединения, по которому поступил запрос
  		  ,rs.[is_blocking_other_session] --1-сессия явно блокирует другие сессии, 0-сессия явно не блокирует другие сессии
  		  ,rs.[dop] --Степень параллелизма запроса
  		  ,rs.[request_time] --Дата и время обращения запроса за предоставлением памяти
  		  ,rs.[grant_time] --Дата и время, когда запросу была предоставлена память. Возвращает значение NULL, если память еще не была предоставлена
  		  ,rs.[requested_memory_kb] --Общий объем запрошенной памяти в килобайтах
  		  ,rs.[granted_memory_kb] --Общий объем фактически предоставленной памяти в килобайтах.
  								  --Может быть значение NULL, если память еще не была предоставлена.
  								  --Обычно это значение должно быть одинаковым с requested_memory_kb.
  								  --Для создания индекса сервер может разрешить дополнительное предоставление по требованию памяти,
  								  --объем которой выходит за рамки изначально предоставленной памяти
  		  
  		  ,rs.[required_memory_kb] --Минимальный объем памяти в килобайтах (КБ), необходимый для выполнения данного запроса.
  								   --Значение requested_memory_kb равно этому объему или больше его
  		  
  		  ,rs.[used_memory_kb] --Используемый в данный момент объем физической памяти (в килобайтах)
  		  ,rs.[max_used_memory_kb] --Максимальный объем используемой до данного момента физической памяти в килобайтах
  		  ,rs.[query_cost] --Ожидаемая стоимость запроса
  		  ,rs.[timeout_sec] --Время ожидания данного запроса в секундах до отказа от обращения за предоставлением памяти
  		  ,rs.[resource_semaphore_id] --Неуникальный идентификатор семафора ресурса, которого ожидает данный запрос
  		  ,rs.[queue_id] --Идентификатор ожидающей очереди, в которой данный запрос ожидает предоставления памяти.
  						 --Значение NULL, если память уже предоставлена
  		  
  		  ,rs.[wait_order] --Последовательный порядок ожидающих запросов в указанной очереди queue_id.
  						   --Это значение может изменяться для заданного запроса, если другие запросы отказываются от предоставления памяти или получают ее.
  						   --Значение NULL, если память уже предоставлена
  		  
  		  ,rs.[is_next_candidate] --Является следующим кандидатом на предоставление памяти (1 = да, 0 = нет, NULL = память уже предоставлена)
  		  ,rs.[wait_time_ms] --Время ожидания в миллисекундах. Значение NULL, если память уже предоставлена
  		  ,rs.[pool_id] --Идентификатор пула ресурсов, к которому принадлежит данная группа рабочей нагрузки
  		  ,rs.[is_small] --Значение 1 означает, что для данной операции предоставления памяти используется малый семафор ресурса.
  						 --Значение 0 означает использование обычного семафора
  		  
  		  ,rs.[ideal_memory_kb] --Объем, в килобайтах (КБ), предоставленной памяти, необходимый для размещения всех данных в физической памяти.
  								--Основывается на оценке количества элементов
  		  
  		  ,rs.[reserved_worker_count] --Число рабочих процессов, зарезервированной с помощью параллельных запросов, а также число основных рабочих процессов, используемых всеми запросами
  		  ,rs.[used_worker_count] --Число рабочих процессов, используемых параллельных запросов
  		  ,rs.[max_used_worker_count] --???
  		  ,rs.[reserved_node_bitmap] --???
  		  ,rs.[bucketid] --Идентификатор сегмента хэша, в который кэшируется запись.
  						 --Значение указывает диапазон от 0 до значения размера хэш-таблицы для типа кэша.
  						 --Для кэшей SQL Plans и Object Plans размер хэш-таблицы может достигать 10007 на 32-разрядных версиях систем и 40009 — на 64-разрядных.
  						 --Для кэша Bound Trees размер хэш-таблицы может достигать 1009 на 32-разрядных версиях систем и 4001 на 64-разрядных.
  						 --Для кэша расширенных хранимых процедур размер хэш-таблицы может достигать 127 на 32-разрядных и 64-разрядных версиях систем
  		  
  		  ,rs.[refcounts] --Число объектов кэша, ссылающихся на данный объект кэша.
  						  --Значение refcounts для записи должно быть не меньше 1, чтобы размещаться в кэше
  		  
  		  ,rs.[usecounts] --Количество повторений поиска объекта кэша.
  						  --Остается без увеличения, если параметризованные запросы обнаруживают план в кэше.
  						  --Может быть увеличен несколько раз при использовании инструкции showplan
  		  
  		  ,rs.[size_in_bytes] --Число байтов, занимаемых объектом кэша
  		  ,rs.[memory_object_address] --Адрес памяти кэшированной записи.
  									  --Это значение можно использовать с представлением sys.dm_os_memory_objects,
  									  --чтобы проанализировать распределение памяти кэшированного плана, 
  									  --и с представлением sys.dm_os_memory_cache_entries для определения затрат на кэширование записи
  		  
  		  ,rs.[cacheobjtype] --Тип объекта в кэше. Значение может быть одним из следующих
  		  ,rs.[objtype] --Тип объекта. Значение может быть одним из следующих
  		  ,rs.[parent_plan_handle] --Родительский план
  		  
  		  --данные из sys.dm_exec_query_stats брались за сутки, в которых была пара (запрос, план)
  		  ,rs.[creation_time] --Время компиляции плана
  		  ,rs.[execution_count] --Количество выполнений плана с момента последней компиляции
  		  ,rs.[total_worker_time] --Общее время ЦП, затраченное на выполнение плана с момента компиляции, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[min_last_worker_time] --Минимальное время ЦП, затраченное на последнее выполнение плана, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[max_last_worker_time] --Максимальное время ЦП, затраченное на последнее выполнение плана, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[min_worker_time] --Минимальное время ЦП, когда-либо затраченное на выполнение плана, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[max_worker_time] --Максимальное время ЦП, когда-либо затраченное на выполнение плана, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[total_physical_reads] --Общее количество операций физического считывания при выполнении плана с момента его компиляции.
  									 --Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[min_last_physical_reads] --Минимальное количество операций физического считывания за время последнего выполнения плана.
  										--Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[max_last_physical_reads] --Максимальное количество операций физического считывания за время последнего выполнения плана.
  										--Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[min_physical_reads] --Минимальное количество операций физического считывания за одно выполнение плана.
  								   --Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[max_physical_reads] --Максимальное количество операций физического считывания за одно выполнение плана.
  								   --Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[total_logical_writes] --Общее количество операций логической записи при выполнении плана с момента его компиляции.
  									 --Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[min_last_logical_writes] --Минимальное количество страниц в буферном пуле, загрязненных во время последнего выполнения плана.
  										--Если страница уже является «грязной» (т. е. измененной), операции записи не учитываются.
  										--Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[max_last_logical_writes] --Максимальное количество страниц в буферном пуле, загрязненных во время последнего выполнения плана.
  										--Если страница уже является «грязной» (т. е. измененной), операции записи не учитываются.
  										--Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[min_logical_writes] --Минимальное количество операций логической записи за одно выполнение плана.
  								   --Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[max_logical_writes] --Максимальное количество операций логической записи за одно выполнение плана.
  								   --Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[total_logical_reads] --Общее количество операций логического считывания при выполнении плана с момента его компиляции.
  									--Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[min_last_logical_reads] --Минимальное количество операций логического считывания за время последнего выполнения плана.
  									   --Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[max_last_logical_reads] --Максимальное количество операций логического считывания за время последнего выполнения плана.
  									   --Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[min_logical_reads]	   --Минимальное количество операций логического считывания за одно выполнение плана.
  									   --Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[max_logical_reads]	--Максимальное количество операций логического считывания за одно выполнение плана.
  									--Значение всегда равно 0 при запросе оптимизированной для памяти таблицы
  		  
  		  ,rs.[total_clr_time]	--Время, в микросекундах (но с точностью до миллисекунды),
  								--внутри Microsoft .NET Framework общеязыковая среда выполнения (CLR) объекты при выполнении плана с момента его компиляции.
  								--Объекты среды CLR могут быть хранимыми процедурами, функциями, триггерами, типами и статистическими выражениями
  		  
  		  ,rs.[min_last_clr_time] --Минимальное время, в микросекундах (но с точностью до миллисекунды),
  								  --затраченное внутри .NET Framework объекты среды CLR во время последнего выполнения плана.
  								  --Объекты среды CLR могут быть хранимыми процедурами, функциями, триггерами, типами и статистическими выражениями
  		  
  		  ,rs.[max_last_clr_time] --Максимальное время, в микросекундах (но с точностью до миллисекунды),
  								  --затраченное внутри .NET Framework объекты среды CLR во время последнего выполнения плана.
  								  --Объекты среды CLR могут быть хранимыми процедурами, функциями, триггерами, типами и статистическими выражениями
  		  
  		  ,rs.[min_clr_time] --Минимальное время, когда-либо затраченное на выполнение плана внутри объектов .NET Framework среды CLR,
  							 --в микросекундах (но с точностью до миллисекунды).
  							 --Объекты среды CLR могут быть хранимыми процедурами, функциями, триггерами, типами и статистическими выражениями
  		  
  		  ,rs.[max_clr_time] --Максимальное время, когда-либо затраченное на выполнение плана внутри среды CLR .NET Framework,
  							 --в микросекундах (но с точностью до миллисекунды).
  							 --Объекты среды CLR могут быть хранимыми процедурами, функциями, триггерами, типами и статистическими выражениями
  		  
  		  --,rs.[total_elapsed_time] --Общее время, затраченное на выполнение плана, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[min_last_elapsed_time] --Минимальное время, затраченное на последнее выполнение плана, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[max_last_elapsed_time] --Максимальное время, затраченное на последнее выполнение плана, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[min_elapsed_time] --Минимальное время, когда-либо затраченное на выполнение плана, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[max_elapsed_time] --Максимальное время, когда-либо затраченное на выполнение плана, в микросекундах (но с точностью до миллисекунды)
  		  ,rs.[total_rows] --Общее число строк, возвращаемых запросом. Не может иметь значение null.
  						   --Значение всегда равно 0, если скомпилированная в собственном коде хранимая процедура запрашивает оптимизированную для памяти таблицу
  		  
  		  ,rs.[min_last_rows] --Минимальное число строк, возвращенных последним выполнением запроса. Не может иметь значение null.
  							  --Значение всегда равно 0, если скомпилированная в собственном коде хранимая процедура запрашивает оптимизированную для памяти таблицу
  		  
  		  ,rs.[max_last_rows] --Максимальное число строк, возвращенных последним выполнением запроса. Не может иметь значение null.
  							  --Значение всегда равно 0, если скомпилированная в собственном коде хранимая процедура запрашивает оптимизированную для памяти таблицу
  		  
  		  ,rs.[min_rows] --Минимальное количество строк, когда-либо возвращенных по запросу во время выполнения один
  						 --Значение всегда равно 0, если скомпилированная в собственном коде хранимая процедура запрашивает оптимизированную для памяти таблицу
  		  
  		  ,rs.[max_rows] --Максимальное число строк, когда-либо возвращенных по запросу во время выполнения один
  						 --Значение всегда равно 0, если скомпилированная в собственном коде хранимая процедура запрашивает оптимизированную для памяти таблицу
  		  
  		  ,rs.[total_dop] --Общую сумму по степени параллелизма плана используется с момента его компиляции.
  						  --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_last_dop] --Минимальная степень параллелизма, если время последнего выполнения плана.
  							 --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_last_dop] --Максимальная степень параллелизма, если время последнего выполнения плана.
  							 --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_dop] --Минимальная степень параллелизма этот план когда-либо используется во время одного выполнения.
  						--Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_dop] --Максимальная степень параллелизма этот план когда-либо используется во время одного выполнения.
  						--Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[total_grant_kb] --Общий объем зарезервированной памяти в КБ предоставить этот план, полученных с момента его компиляции.
  							   --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_last_grant_kb] --Минимальный объем зарезервированной памяти предоставляет в КБ, когда время последнего выполнения плана.
  								  --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_last_grant_kb] --Максимальный объем зарезервированной памяти предоставляет в КБ, когда время последнего выполнения плана.
  								  --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_grant_kb] --Минимальный объем зарезервированной памяти в КБ предоставить никогда не получено в ходе одного выполнения плана.
  							 --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_grant_kb] --Максимальный объем зарезервированной памяти в КБ предоставить никогда не получено в ходе одного выполнения плана.
  							 --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[total_used_grant_kb] --Общий объем зарезервированной памяти в КБ предоставить этот план, используемый с момента его компиляции.
  									--Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_last_used_grant_kb] --Минимальная сумма предоставления используемой памяти в КБ, если время последнего выполнения плана.
  									   --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_last_used_grant_kb] --Максимальная сумма предоставления используемой памяти в КБ, если время последнего выполнения плана.
  									   --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_used_grant_kb] --Минимальный объем используемой памяти в КБ предоставить никогда не используется при выполнении одного плана.
  								  --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_used_grant_kb] --Максимальный объем используемой памяти в КБ предоставить никогда не используется при выполнении одного плана.
  								  --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[total_ideal_grant_kb] --Общий объем идеальный память в КБ, оценка плана с момента его компиляции.
  									 --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_last_ideal_grant_kb] --Минимальный объем памяти, идеальным предоставляет в КБ, когда время последнего выполнения плана.
  										--Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_last_ideal_grant_kb] --Максимальный объем памяти, идеальным предоставляет в КБ, когда время последнего выполнения плана.
  										--Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_ideal_grant_kb] --Минимальный объем памяти идеальный предоставления в этот план когда-либо оценка во время выполнения один КБ.
  								   --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_ideal_grant_kb] --Максимальный объем памяти идеальный предоставления в этот план когда-либо оценка во время выполнения один КБ.
  								   --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[total_reserved_threads] --Общая сумма по зарезервированным параллельного потоков этот план когда-либо использовавшегося с момента его компиляции.
  									   --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_last_reserved_threads] --Минимальное число зарезервированных параллельных потоков, когда время последнего выполнения плана.
  										  --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_last_reserved_threads] --Максимальное число зарезервированных параллельных потоков, когда время последнего выполнения плана.
  										  --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_reserved_threads] --Минимальное число зарезервированных параллельного потоков, когда-либо использовать при выполнении одного плана.
  									 --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_reserved_threads] --Максимальное число зарезервированных параллельного потоков никогда не используется при выполнении одного плана.
  									 --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[total_used_threads] --Общая сумма используется параллельных потоков этот план когда-либо использовавшегося с момента его компиляции.
  								   --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_last_used_threads] --Минимальное число используемых параллельных потоков, когда время последнего выполнения плана.
  									  --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_last_used_threads] --Максимальное число используемых параллельных потоков, когда время последнего выполнения плана.
  									  --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[min_used_threads] --Минимальное число используемых параллельных потоков, при выполнении одного плана использовали.
  								 --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  		  
  		  ,rs.[max_used_threads] --Максимальное число используемых параллельных потоков, при выполнении одного плана использовали.
  								 --Он всегда будет равно 0 для запроса к таблице, оптимизированной для памяти
  
  		  ,rs.[InsertUTCDate] --дата и время создания записи в UTC
  		  ,rs.[EndRegUTCDate] --дата и время удаления записи из активных запросов в UTC
    FROM [srv].[RequestStatisticsArchive] as rs with(readuncommitted)
    inner join [srv].[PlanQuery] as pq on rs.[plan_handle]=pq.[PlanHandle] and rs.[sql_handle]=pq.[SqlHandle]
    inner join [srv].[SQLQuery] as sq on sq.[SqlHandle]=pq.[SqlHandle]
  
  
  
  GO
  EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Информация об активных запросах на каждый момент времени', @level0type = N'SCHEMA', @level0name = N'srv', @level1type = N'VIEW', @level1name = N'vRequestStatistics';
  
  