Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
Microsoft SQL Server 2012 (SP2-GDR) (KB3194719) - 11.0.5388.0 (X64) Sep 23 2016 16:56:29 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) Наблюдаю загадочное явление 1. Есть процедура. 2. Внезапно, эта процедура стала виснуть на запуске. Т.е. ваще ничего не делает и фсе. Часа три я ждал. Типичное время исполнения - 10 сек. 3. Причем впечатление - ВАЩЕ не запускается. Т.е. виснет на этапе компиляции. 4. Начал разбираться. Закомментил содержимое. 5. Запустилась. 6. Методом деления отрезка пополам вычислил стейтмент Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 7. Комментируешь - работает. Убираешь комментарий - висит. 8. Этот стейтмент в тестовом запуске ВАЩЕ НЕ ИСПОЛНЯЕТСЯ. 9. Т.е. проблемы именно в компиляции. 10. Методом научного тыка выяснил Код: sql 1. 2. 3. 4. 5. 11. Еще раз напоминаю: ДАННЫЙ СТЕЙТМЕНТ В ТЕСТОВОМ ЗАПУСКЕ НЕ ИСПОЛНЯЕТСЯ. Что за чудо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 08:23 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
!Caution It is important to specify only the columns from the target table that are used for matching purposes. That is, specify columns from the target table that are compared to the corresponding column of the source table. Do not attempt to improve query performance by filtering out rows in the target table in the ON clause, such as by specifying AND NOT target_table.column_x = value. Doing so may return unexpected and incorrect results. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 09:12 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
Massa52!Caution It is important to specify only the columns from the target table that are used for matching purposes. That is, specify columns from the target table that are compared to the corresponding column of the source table. Do not attempt to improve query performance by filtering out rows in the target table in the ON clause, such as by specifying AND NOT target_table.column_x = value. Doing so may return unexpected and incorrect results. А теперь изложи своими словами. Ибо какое отношение имеет "ON clause" ко вполне документированному доп. фильтру в "when matched"? Если ты читал документацию "when matched" ваще можно несколько раз с разными фильтрами использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 09:17 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
Что во время висюка для этой сессии в sys.dm_os_waiting_tasks? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 09:19 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
invmЧто во время висюка для этой сессии в sys.dm_os_waiting_tasks? Не смотрел, но щас посмотрю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 09:21 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 09:24 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
А версия сервера какая? В ранних реализациях merge был очень глюкавым - помнится, я на 2008R2 как-то напоролся на абсолютно непонятную, и ничего не говорящую своим сообщением ошибку при попытке мерджа таблицы, в которой было вычисляемое поле (разумеется, в мердже не было никаких попыток это поле изменить). Возможно, и вышеприведенное из той же области. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 09:29 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
Дополнительные вести с полей! Если выполнять select * from sys.dm_os_waiting_tasks where session_id = 164 то строчка то появляется, то исчезает... Т.е. оно не стоит - оно что-то делает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 09:29 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
Сон Веры ПавловныА версия сервера какая? В ранних реализациях merge был очень глюкавым - помнится, я на 2008R2 как-то напоролся на абсолютно непонятную, и ничего не говорящую своим сообщением ошибку при попытке мерджа таблицы, в которой было вычисляемое поле (разумеется, в мердже не было никаких попыток это поле изменить). Возможно, и вышеприведенное из той же области. aleks222Microsoft SQL Server 2012 (SP2-GDR) (KB3194719) - 11.0.5388.0 (X64) Sep 23 2016 16:56:29 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 09:30 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
preemptive_os_fileops - ожидание при операциях с файловой системой. Надо разбираться с чтениями из filestrem. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 10:05 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
invmpreemptive_os_fileops - ожидание при операциях с файловой системой. Надо разбираться с чтениями из filestrem. О мудрейший! До чтения дело не доходит. Я ж русским по белому написал: ваще не запускается. Т.е. виснет на этапе компиляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 11:23 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
Для вящей понятности: ставим в самом начале процедуры, ДО всех операторов return - а она висит при запуске. Если внести упомянутые выше изменения - срабатывает мгновенно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 11:26 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
когда компилится - могут отрабатываются все варианты, даже если в текущем наборе параметров данная ветка не используется. т.е. таки при компиляции он "заходит" в эту ветку. И да вроде в профайлере можно посмотреть, если проца действительно зависает на компиляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 11:42 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
aleks222, Попробуй количество звездочек на квадратный километр уменьшить. И в целом селф-референсов как-то овердохрена. При том что начинаешь и заканчиваешь "константами". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 11:44 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
aleks222, sp_recompile тоже висит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 11:44 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
так, чисто ради эксперимента что будет, если так попробовать? Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 11:48 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
aleks222[До чтения дело не доходит. Я ж русским по белому написал: ваще не запускается. Т.е. виснет на этапе компиляции.Значит в процессе компиляции доходит до еще какой-то операции с файловой системой. Чудес не бывает и ожидание на пустом месте не возникает. Можно взять Process Monitor и попытаться выяснить место затыка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 11:50 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
dies iraeтак, чисто ради эксперимента что будет, если так попробовать? Код: sql 1. Эффект тот же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 17:13 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
invm1. Значит в процессе компиляции доходит до еще какой-то операции с файловой системой. Чудес не бывает и ожидание на пустом месте не возникает. 2. Можно взять Process Monitor и попытаться выяснить место затыка. 1. Ну да, конечно... Странно тока, причем тут компиляция неравенства? Прям сразу файловая система понадобилась... 2. Можно. Но недосуг. Мне и без неравенства сойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 17:16 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
aleks222merge f using x on f.path_locator = x.path_locator when not matched then insert( path_locator, name, file_stream, creation_time ) values( path_locator, name, file_stream, creation_time ) Нельзя делать insert values. Не понимает такое компилятор по-нормальному. Таки нужно извращаться. Таки делать select from, а кому сейчас легко ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 21:13 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
Andy_OLAP, С какого перепугу? Где по ссылке что-то про "insert-values does not not work"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 23:17 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
Есть процедураAndy_OLAP, С какого перепугу? Где по ссылке что-то про "insert-values does not not work"? Я таки ссылку вполне кошерную привел. Если Вы думаете, что query compilation - это задача, которой в Редмонде занимаются американские профессора, то я Вас сильно разочарую. Если будет возможность - найдите Халяко, напоите его хорошенько и спросите его личные впечатления про команду индусов (Арвинд, Рахеш, Шива, Санжай), если Вы думаете, что Морган заставит их использовать нормальные решения при анализе текста T-SQL запроса - это избыточный оптимизм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2018, 01:15 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
Есть процедура, В ссылке про path_locator. Не нужно думать, что можно безнаказанно писать любой T-SQL код. Чем проще - тем лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2018, 01:19 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
aleks222 Наблюдаю загадочное явление 10. Методом научного тыка выяснил [src] -- висим (т.е. не запускаемя вовсе) when matched and ( f.file_stream <> x.file_stream ) then update set file_stream = x.file_stream, creation_time = x.creation_time -- работаем (т.е. запускаемся) when matched then update set file_stream = x.file_stream, creation_time = x.creation_time Ну потому что компилятор пытается пойти по пути Full Outer Join. И у него это не получается. Почти месяц уже решаете задачу с FileTable, коллега. Поставьте хотя бы CU2 для SP2, освежите версию до 11.0.5548.0. Увидите, как жизнь станет проще, без сарказма и шуток, искренне советую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2018, 01:38 |
|
||
|
все чудесатее и чудесатее или проблемы с компиляцией процедуры
|
|||
|---|---|---|---|
|
#18+
Andy_OLAPaleks222Наблюдаю загадочное явление 10. Методом научного тыка выяснил [src] -- висим (т.е. не запускаемя вовсе) when matched and ( f.file_stream <> x.file_stream ) then update set file_stream = x.file_stream, creation_time = x.creation_time -- работаем (т.е. запускаемся) when matched then update set file_stream = x.file_stream, creation_time = x.creation_time Ну потому что компилятор пытается пойти по пути Full Outer Join. И у него это не получается. Почти месяц уже решаете задачу с FileTable, коллега. Поставьте хотя бы CU2 для SP2, освежите версию до 11.0.5548.0. Увидите, как жизнь станет проще, без сарказма и шуток, искренне советую. Уберите этого сруля. Хотя... может он и чебурашка? ЗЫ. Дарагуля, не учи меня жить. Лучше научись читать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2018, 08:01 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39605948&tid=1690216]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
134ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 490ms |

| 0 / 0 |
