Получение "set stat io on" приводит к t-sql для настройки - PullRequest
4 голосов
/ 02 октября 2011

Я хочу добавить возможности мониторинга в сложный процесс, включающий множество хранимых процедур.В некоторых случаях я хочу записать количество логических операций чтения, созданных одним оператором.

Другими словами, я хотел бы включить set statistics io on, получить доступ (и сохранить результаты в таблице журнала)что обычно отображается в SSMS на вкладке «сообщения».

Я видел, что это можно сделать в .Net с помощью SqlInfoMessageEventHandler.Я уверен, что это также может быть сделано в T-SQL, но я еще не нашел его.

Спасибо!


Logical_reads в sys.dm_exec_requests также не увеличивается...

Идеальным решением для меня был бы способ каким-то образом получить информацию о "установить статистику ввода-вывода":

select name, id
    from   sysobjects
    union all 
    select name,id
    from   sysobjects  ;


(120 row(s) affected)
Table 'sysschobjs'. Scan count 2, logical reads 6, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

1 Ответ

2 голосов
/ 02 октября 2011

Одним из способов является использование динамических представлений управления , доступных в 2008 г. и более поздних версиях. Например, чтобы определить количество операций чтения по вашему запросу, вы можете:

declare @start_reads bigint
select @start_reads = reads from sys.dm_exec_requests where session_id = @@spid

-- Your query here 

select reads - @start_reads from sys.dm_exec_requests where session_id = @@spid

Существует два типа счетчиков:

  • Представления _session_ имеют счетчики, которые увеличиваются после завершения текущей партии.
  • Счетчики _exec_ начинаются с 0 и увеличиваются при работе вашего пакета.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...