Имя: Пароль:
IT
Админ
MSSQL: Реиндексация таблиц через план обслуживания
0 micronick
 
28.09.18
13:41
Подскажите, каким образом правильно настроить реиндексацию таблиц по расписанию в MSSQL?
Конкретно вопрос вот в чем: Реиндексация блокирует таблицы, а если в этот момент кто-то залезет в базу или запустится какое-то фоновое задание, что будет с этим регламентным заданием в MSSQL? Оно остановится и выдаст ошибку, что таблица занята, либо будет ждать, когда она освободится?
Корректно ли будет для успешного выполнения операции предварительно заблокировать подключение к базе и отключить выполнение регламентных заданий в фоне, либо и без этого реиндексация в любом случае пройдет?
1 DmitrO
 
28.09.18
13:43
Предлагаю делать реиндексацию по ночам, когда все кожаные мешки спят, а в сети властвуют роботы.
2 micronick
 
28.09.18
13:48
(1) Понятное дело, что делать надо ночью. Но не стопарнет ли реиндексацию чей-то случайный заход в базу или начавшееся фоновое задание?
3 Cool_Profi
 
28.09.18
13:48
Ставим ентерпрайз версию и в настройках индексации включаем опцию online
4 micronick
 
28.09.18
13:56
(3) Есть такая опция: https://yadi.sk/i/t0FPLRbmX3UYOw

Поясните, что она даст? Не заблокирует таблицу и даст возможность продолжать работать в ней, пока идет реиндексация?
И ниже опция, что делать с типом индексов, которые не поддерживают онлайн реиндексацию - переиндексировать оффлайн - это значит, что таблица заблокируется? Что опять же будет в случае, описанном в (0) - если она в этот момент будет занята чем-то?
5 ADirks
 
28.09.18
14:10
(4) да в пень эти опции
возьми набор от https://ola.hallengren.com
там намного гибче настройки
6 Cool_Profi
 
28.09.18
14:23
(4) Что будет - запрос к ней будет ждать. Достигнет таймаута - отвалится