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

Откуда:
Сообщений: 233
Здравствуйте. Подскажите, пожалуйста, почему при трассировке хранимой процедуры строки события SP:StmtStarting для некоторых инструкций задваиваются? Значения во всех выбранных для трассировки столбцах совпадают абсолютно.
Наблюдаю это для инструкций ALTER TABLE и INSERT INTO .. SELECT ...
Пример
SP:StmtStarting ALTER TABLE [dbo].[Budget_D_LocalCostEstimateParts] DROP CONSTRAINT [FK_Budget_D_LocalCostEstimateParts_Budget_D_LocalCostEstimates]
21 авг 12, 11:44    [13041924]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2008R2 Profiler две одинаковых строчки  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Более показательным был бы скриншот.
21 авг 12, 11:53    [13041998]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2008R2 Profiler две одинаковых строчки  [new]
J
Guest
Видимо, вы выбрали не все столбцы?
21 авг 12, 11:54    [13042007]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2008R2 Profiler две одинаковых строчки  [new]
MyNiGoo
Member

Откуда:
Сообщений: 233
на скрине еще видна первая строчка, там проверяется на существование это ограничение. Все столбцы справа пустые.
Для трассировки выбран шаблон TSQL_SPs и добавлено событие SQL:StmtCompleted со всеми столбцами.
Хотелось бы понять, почему задваивается и как оставить только уникальные события.

К сообщению приложен файл. Размер - 12Kb
21 авг 12, 12:23    [13042261]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2008R2 Profiler две одинаковых строчки  [new]
MyNiGoo
Member

Откуда:
Сообщений: 233
я покопался еще и таки да, нашел отличающиеся значения
Это столбцы
EventSequence: 162865 и 162866 соответственно
State: пустая строчка и '1 - Recompiled'

По поводу EventSequence мсдн пишет "порядковый номер данного события в запросе." А вот про State ничего нет(

Что это? Я слышал звон, что это как-то связано с перекомпиляцией sp.
21 авг 12, 13:03    [13042601]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2008R2 Profiler две одинаковых строчки  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
MyNiGoo,

TextData не видна до конца.
Может, Вы дропаете разные констрейнты?
21 авг 12, 13:53    [13043016]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2008R2 Profiler две одинаковых строчки  [new]
MyNiGoo
Member

Откуда:
Сообщений: 233
iap, констрейнт один и тот же. Полный текст см в первом посте.
Больше того, я сам писал эту хранимку и сейчас открыл её, чтобы убедиться в единственности такой инструкции в коде. Дропается она единожды, но сервер почему-то показывает два события SP:StmtStarting для неё: один раз со State = '' и тут же второй раз со State = '1 - Recompiled'. Чем может быть вызвано такое желание сервера?
21 авг 12, 14:13    [13043174]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2008R2 Profiler две одинаковых строчки  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
MyNiGoo,

наверно, зависит от того, как Вы создавали процедуру (WITH RECOMPILE),
есть ли в ней DSQL, используются ли временные объекты и т.д.
21 авг 12, 14:17    [13043225]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2008R2 Profiler две одинаковых строчки  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
автор
Чем может быть вызвано такое желание сервера?


В том что он решил перекомпилить статемент с DDL?

Сообщение было отредактировано: 21 авг 12, 14:28
21 авг 12, 14:28    [13043351]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2008R2 Profiler две одинаковых строчки  [new]
MyNiGoo
Member

Откуда:
Сообщений: 233
точно. Нашел вот похожую ситуацию, выполнил DBCC freeproccache. Строки также дублируются, но время выполнения хп сократилось в 4 раза. Повторное выполнение хп с хинтом recompile уменьшило время еще на треть. Итого с 12+ минут до 1:45

Если при наличии DDL или временных таблиц хп всегда рекомпилируется, то почему DBCC freeproccache и указание recompile вызвало такое сокращение времени выполнения?

зы pkarklin, насколько остается актуальной статья Troubleshooting stored procedure recompilation?
21 авг 12, 14:46    [13043539]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2008R2 Profiler две одинаковых строчки  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
MyNiGoo
pkarklin, насколько остается актуальной статья Troubleshooting stored procedure recompilation?


Для 7 и 2000 версии - актуальна, для более старших (в которых появилась statement-level recompilation) - нет.
21 авг 12, 15:19    [13043831]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2008R2 Profiler две одинаковых строчки  [new]
MyNiGoo
Member

Откуда:
Сообщений: 233
а может быть такое, что перекомпилировалась только часть инструкций, а когда я указал exec with recompile, то перекомпилировались все инструкции в хп?
21 авг 12, 17:07    [13044849]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2008R2 Profiler две одинаковых строчки  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
MyNiGoo
а может быть такое, что перекомпилировалась только часть инструкций, а когда я указал exec with recompile, то перекомпилировались все инструкции в хп?


Именно так и произошло.
21 авг 12, 18:49    [13045421]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2008R2 Profiler две одинаковых строчки  [new]
MyNiGoo
Member

Откуда:
Сообщений: 233
какой я сообразительный, однако) Спасибо всем за подсказки.
22 авг 12, 10:03    [13047282]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить