Перенести журналы в сателлитную БД

После создания или подключения БД Docsvision запрещается подключать или отключать сателлитные БД, т. к. это может привести к потере данных и неработоспособности системы Docsvision.

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

Основной способ подключения сателлитной БД — создать её через Консоль настройки Docsvision.

  1. Определите, поддерживает ли Microsoft SQL с БД Docsvision функцию секционирования[1].

  2. Остановите сервер и сервисы Docsvision.

  3. В SQL Server Management Studio перейдите в БД Docsvision и выполните один из следующих скриптов:

    • Если СУБД поддерживает секционирование — скрипт из файла ScriptCreateLogSatellit.sql.

    • Если СУБД не поддерживает секционирование — скрипт из файла ScriptCreateLogSatellitNoPartitions.sql.

      Данные скрипты создают сателлитную БД для хранения журналов, а также переименовывают существующие таблицы dvsys_log и dvsys_log_security в dvsys_log_local_table и dvsys_log_security_local_table соответственно.

      Журнал приложений dvsys_log_application содержит историю изменений карточек и остаётся в основной БД.

  4. Если нужно перенести существующие журналы в сателлитную БД, выполните в основной БД Docsvision скрипт:

    Скрипт для переноса существующих журналов в сателлитную БД

    Вместо "Название-БД-Docsvision" укажите название БД Docsvision: и БД для архивации журналов:

    insert into [Название-БД-Docsvision_Log].[dbo].[dvsys_log] ([UserID],[EmployeeID],[ComputerName],[ComputerAddress],[Date],[Type],[OperationID],[Code],[TypeID],[ResourceID],[ParentID],[NewResourceID],[ResourceName],[Data])
    select [UserID],[EmployeeID],[ComputerName],[ComputerAddress],[Date],[Type],[OperationID],[Code],[TypeID],[ResourceID],[ParentID],[NewResourceID],[ResourceName],[Data] from [Название-БД-Docsvision].[dbo].[dvsys_log_local_table]
    
    insert into [Название-БД-Docsvision_Log].[dbo].[dvsys_log_security] ([UserID],[EmployeeID],[ComputerName],[ComputerAddress],[Date],[OperationID],[Status],[DesiredAccess],[ObjectType],[ObjectID],[LocationID],[PropertyID],[Data])
    select [UserID],[EmployeeID],[ComputerName],[ComputerAddress],[Date],[OperationID],[Status],[DesiredAccess],[ObjectType],[ObjectID],[LocationID],[PropertyID],[Data] from [Название-БД-Docsvision].[dbo].[dvsys_log_security_local_table]
  5. Также в сателлитную БД можно перенести данные из базы данных с архивами журналов — если в версии модуля 5.5.1 (или ранее) было настроено архивирование журналов в отдельную БД. Для переноса архивных журналов выполните:

    Скрипт для переноса архивов журналов в сателлитную БД

    Вместо "Название-БД-Docsvision" укажите название БД Docsvision: и БД для архивации журналов:

    insert into [Название-БД-Docsvision_Log].[dbo].[dvsys_log] ([UserID],[EmployeeID],[ComputerName],[ComputerAddress],[Date],[Type],[OperationID],[Code],[TypeID],[ResourceID],[ParentID],[NewResourceID],[ResourceName],[Data])
    select [UserID],[EmployeeID],[ComputerName],[ComputerAddress],[Date],[Type],[OperationID],[Code],[TypeID],[ResourceID],[ParentID],[NewResourceID],[ResourceName],[Data] from [{Название БД для архивации логов}].[dbo].[dvsys_log]
    
    insert into [Название-БД-Docsvision_Log].[dbo].[dvsys_log_security] ([UserID],[EmployeeID],[ComputerName],[ComputerAddress],[Date],[OperationID],[Status],[DesiredAccess],[ObjectType],[ObjectID],[LocationID],[PropertyID],[Data])
    select [UserID],[EmployeeID],[ComputerName],[ComputerAddress],[Date],[OperationID],[Status],[DesiredAccess],[ObjectType],[ObjectID],[LocationID],[PropertyID],[Data] from [{Название БД для архивации логов}].[dbo].[dvsys_log_security]
    Скрипт для извлечения журналов работы с карточками из архива:

    Вместо "Название-БД-Docsvision" и "Название-БД-для-архивации-журналов" укажите название БД Docsvision и БД для архивации журналов:

    insert into [Название-БД-Docsvision].[dbo].[dvsys_log_application] ([UserID],[EmployeeID],[ComputerName],[ComputerAddress],[Date],[Type],[OperationID],[Code],[TypeID],[ResourceID],[ParentID],[NewResourceID],[ResourceName],[Data])
    select [UserID],[EmployeeID],[ComputerName],[ComputerAddress],[Date],[Type],[OperationID],[Code],[TypeID],[ResourceID],[ParentID],[NewResourceID],[ResourceName],[Data] FROM [Название-БД-для-архивации-журналов].[dbo].[dvsys_log_application]
  6. Запустите сервер и сервисы Docsvision.

Если вы переносили журналы в сателлитную БД, убедитесь что данные попали в БД с помощью РМА.

1. См. описание установленной версии SQL Server.