Поддержи проект

Скачать

Ошибка реорганизация индексов базы данных MS SQL «Невозможно реорганизовать индекс» на базах 1С Предприятие.

После обновления платформы 8.3.20.1674, обратил внимание что не выполняется реиндексация баз данных относящихся к 1С, в логах значится ошибка — «Невозможно реорганизовать индекс «_Acc48_1» в таблице «_Acc48″, поскольку отключена блокировка на уровне страницы.»

 

Как оказалось что начиная с версии платформы 8.3.22 необходимо выполнять дефрагментацию индексов по следующему алгоритму:

  • До дефрагментации индекса необходимо включить страничные блокировки. Пример команды: ALTER INDEX index_name ON table_name SET (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON);
  • Выполнить дефрагментацию.
  • Обратно выключить страничные блокировки. Пример команды: ALTER INDEX index_name ON table_name SET (ALLOW_PAGE_LOCKS = OFF, ALLOW_ROW_LOCKS = ON);

 

Исходя из этого пришлось написать скрипт выполняющий умную реорганизацию индексов базы данных с принудительным включением блокировки индекса на уровне страницы и её отключение, если блокировка была изначально выключена.

 

Скрипт работает по следующему принципу:

  • В базе данных определяются таблицы для которых необходимо включить страничные блокировки и таблицы для которых страничные блокировки уже включены.
  • Выполняется включение страничных блокировок для определенных таблиц.
  • Выполняется реорганизация индексов базы данных.
  • Выполняется выключение страничных блокировок для тех таблиц, для которых оно было включено.

Скачать “1s_reorgonize_index_mssql.sql” 1s_reorgonize_index_mssql.txt – Загружено 22 раза – 2 KB

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
Загрузка...

Оставить ответ

один × 2 =

© IT-блог Жаконды All Rights Reserved.
Яндекс.Метрика