Вы здесь

Устраняем ошибку дефрагментации индексов Cannot be reorganized because page level locking is disabled

Если при дефрагментации индексов базы 1С вы получаете ошибку вида:

The index "_Reference66_2" on table "_Reference66" cannot be reorganized because page level locking is disabled

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

Решение

Для дефрагментации и перестроения индексов скачайте следующий модернизированный скрипт defrag_8_3_22.txt. Затем:

  1. Откройте QMB, перейдите в раздел «Задачи».
  2. Добавьте новую задачу, задайте имя, например «Дефрагментация и перестроение индексов (8.3.22)». Убедитесь, что тип задачи «Скрипт TSQL», снимите флаг «Задача может использоваться в автономных сценариях» и установите флаг «Исполнять для баз данных политики.
  3. Скопируйте текст скрипта и поместите его в задачу.
  4. Откройте сценарий, вызывавший ошибку и вместо встроенной задачи «Дефрагментация и перестроение индексов» выберите только что созданную задачу.

Причина

С версии платформы 1С:Пердприятие 8.3.22 система «1С:Предприятие» устанавливает гранулярность блокировок на уровне строк, если используется Microsoft SQL Server версии 2008 и старше. Ссылка на официальный источник

До дефрагментации индекса необходимо включить страничные блокировки.

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);

Категории: