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

Откуда:
Сообщений: 399
Есть хранимка, которая запускается в джобе. В ней выполняется проверка фрагментированности индексов и при необходимости запускается INDEX REORGANIZE / REBUILD. Результаты пишутся в лог-таблицу.

Проблема:
запись результатов переиндексации в лог-таблицу происходит раньше, чем перестройка некоторых индексов. Cкрипт "ALTER INDEX..." формируется динамически, и запускается с помощью exec (). А следующая за ним команда, как я предполагаю, не ждет его окончания. Вследствие этого цифры (avg_fragmentation_in_percent) у этих индексов до и после дефрагментации не отличаются.

Вопрос: я хочу проверять, завершились ли все команды перестроения индексов и только после этого делать апдейт лог-таблицы.
Как можно программно определить время окончания перестроения индексов?

Спасибо большое!
2 янв 19, 13:52    [21777567]     Ответить | Цитировать Сообщить модератору
 Re: как определить момент окончания выполениния INDEX REORGANIZE / REBUILD?  [new]
Yasha123
Member

Откуда:
Сообщений: 1327
senn
Cкрипт "ALTER INDEX..." формируется динамически, и запускается с помощью exec (). А следующая за ним команда, как я предполагаю, не ждет его окончания

ждет
2 янв 19, 21:51    [21777700]     Ответить | Цитировать Сообщить модератору
 Re: как определить момент окончания выполениния INDEX REORGANIZE / REBUILD?  [new]
Dzianis
Member

Откуда:
Сообщений: 71
senn
запись результатов переиндексации в лог-таблицу происходит раньше, чем перестройка некоторых индексов.


простите это как?
Команда перестройки еще не завершилась, но уже в таблицу лог вписан результат ее выполнения?
Или у вас просто джоб по расписанию запускается раз в 30 минут, считывает информацию о фрагментации, игнорируя, что предыдущий старт все еще работает?



senn
Вопрос: я хочу проверять, завершились ли все команды перестроения индексов и только после этого делать апдейт лог-таблицы.
Как можно программно определить время окончания перестроения индексов?


програмно можно вытащить выполняемые запросы 'Alter index' и проанализировать их. Но смысла не видно. если у вас работает один скрипт, то он ждет. Ошибка или в коде или в попытке сделать многопоточное выполнение.
3 янв 19, 13:49    [21777876]     Ответить | Цитировать Сообщить модератору
 Re: как определить момент окончания выполениния INDEX REORGANIZE / REBUILD?  [new]
senn
Member

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

перепроверил. Да, действительно, мой косяк.

Проблема была в колоночном индексе, который не перестраивался, что было вполне естественно, т.к. ипользовался другой метод и оценка дефрагментации.
3 янв 19, 14:05    [21777882]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить