Ошибка реорганизация индексов базы данных 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);

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

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

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

Читать далее

Мониторинг 1С:Предприятие 8.3 с помощью Zabbix

Поступила просьба от 1С разработчиков организовать мониторинг  сервера 1С:Предприятие 8.3 с помощью Zabbix 5.0. В частности необходимо мониторить как общие показатели системы (CPU, RAM, HDD, Службы) так и параметры относящиеся непосредственно к серверу 1С — кол-во текущих сеансов, кол-во сеансов по типам подключения, блокировки СУБД.

С мониторингом общих показателей системы прекрасно справляется zabbix-agent и штатный шаблон, а вот со вторым уже нужно прибегать к функциям cервера администрирования кластера серверов 1С, который состоит из двух утилит: непосредственно самого сервера — программы ras.exe и  утилиты командной строки rac.exe, которая обращаясь к запущенному прежде серверу ras позволяет выполнять различные операции с кластером серверов 1С:Предприятия.

Перечитав кучу различных мануалов как мониторить кластер 1С я пришел к выводу что надо писать свое..

Как итог было написано две утилиты. Первая утилита запускает ras.exe как службу Windows, а вторая это утилита которая работает с rac.exe, выполняет запросы, обрабатывает и выдает результат, который в последующем может обрабатывать zabbix-agent и передавать на сервер Zabbix.

 

Итак скачиваем первую утилиту helper_ras_1c.exe и помещаем ее в какой-нибудь отдельный каталог (прим. C:\1c_ras).

Скачать “1C:Enterprise Monitoring (helper_1c_ras)” helper_1c_ras-1.exe – Загружено 1094 раза – 2 MB

Теперь в каталоге размещения утилиты helper_ras_1c.exe создаем текстовый файл — cfg.conf со следующим содержанием:

[Parameters]
rasPath=C:\Program Files\1cv8\8.3.17.2306\bin
rasPort=1545
agentName=localhost
ctrlPort=1540
ИНФОРМАЦИЯ: обращаю внимание что в параметре rasPath нужно указывать путь с учетом какая версия 1С у вас установлена. Остальные параметры оставляем без изменения!

Теперь нужно установить службу.. (да да, можно было бы и написать еще утилиту которая будет устанавливать по одному клику, но мы же не ищем легкий путей).

Читать далее