Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как узнать время компиляции  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
Если включить профайлер, то он может только отразить факт рекомпиляции без указания времени.
если выполнить конкретный запрос из студии, то можно включить показ статистики, либо посмотреть в самом плане выполнения.

Но как это сделать сразу для кучи объектов?
Ну не парсить же текст плана в кеше?

	substring(Text_Plan, PATINDEX('%CompileTime%', Pl.query_plan), 100) .... sys.dm_exec_query_plan
8 июл 15, 16:38    [17868376]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать время компиляции  [new]
gang
Member

Откуда:
Сообщений: 1394
Mike_za,

План это не просто текст - это XML. Соответственно и парсить его можно как подобает XMLю:
;with xmlnamespaces (default 'http://schemas.microsoft.com/sqlserver/2004/07/showplan')
select top 100 p.*, query_plan
,N.C.value('(./@CompileTime)','varchar(max)') 
from sys.dm_exec_cached_plans p
CROSS APPLY sys.dm_exec_query_plan(plan_handle) qp
cross apply query_plan.nodes('//QueryPlan') N(C)
9 июл 15, 13:38    [17871845]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать время компиляции  [new]
gang
Member

Откуда:
Сообщений: 1394
Mike_za,

Даже наверное
,N.C.value('(./@CompileTime)','int') 
9 июл 15, 13:44    [17871913]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать время компиляции  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
Спасибо!!!
как раз собирался разбираться с запросами к хмл
9 июл 15, 15:41    [17873095]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить