Автореиндексация базы

Пример скрипта на VBS для автореиндексации базы при входе

Пример скрипта на VBS для входа пользователя в базу, в случае, если она требует реиндексации.

Вопрос возник, когда пользователю, который входит в 1С с командной строки, стало выпадать сообщение о том, что необходимо переиндексировать базу. Зайти монопольно он не мог, потому сидел и доставал меня 🙂

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

2 Comments

  1. karaw

    А как это работает? Не могли бы поподробнее

    Reply
  2. Tempus

    Ну скрипт я тут просто «с мясом» выложил 🙂

    Принцип работы такой — 1С определяет необходимость реиндексации по параметрам в таблице 1SUSERS — елси там стоит значение USRSCNT отличное от нуля — значит необходима реиндексация (т.е. пользователь вышел и базы некорректно). ПРичем по опытам — даже если тупо удалить файлы индексов, но оставить 1SUSERS в нормальном виде, 1С не требует реиндексации (что странно).

    Собственно на этом и «играю» — проверяю наличие и заблокирванность файла 1Cv77.LCK (есть ли кто-то в базе — если есть — то просто запускаю 1С, поскольку все равно реиндексировать нельзя), а потом проверяю таблицу 1SUSERS, и при необходимости реиндексирую базу (только сначала удаляю файл 1SUSERS)

    А файл udl — просто файл настроек подключения в БД в формате dbf, чтобы не прописывать все параметры в скрипте.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *