Перенести БД между серверами

Перенос базы данных между серверами Docsvision может потребоваться, чтобы подключить БД к другому серверу Docsvision, но в лицензии Docsvision отсутствует опция Docsvision Concurrent Servers, которая позволяет работать с одной БД нескольким серверам Docsvision. При попытке подключить БД ко второму серверу Docsvision возникнет предупреждение:

Диалоговое окно "Внимание: параллельные серверы"
Рисунок 1. Диалоговое окно "Внимание: параллельные серверы"

Перенесённая БД не будет доступна на сервере Docsvision, с которого она была перемещена.

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

  • Если база данных является единственной на сервере Docsvision, непосредственное отключение базы данных невозможно.

Выполните следующие действия, чтобы подготовить БД к переносу:
  1. Убедитесь, что пользователи не работают с перемещаемой БД.

  2. Остановите все сервисы Docsvision. Также остановите экзепляры Службы фоновых операций и все сервисы в кластере Docsvision или СУБП, если таковые используются.

  3. Очистите (в SQL Server Management Studio) сервисные таблицы сессий и серверов Workflow командой:

    DELETE [dbo].[dvsys_sessions]
    [dbo].[dvtable_{b4a2559b-45fd-4aba-919f-0f170ccddb5d}]

    Если команды вызвали ошибку: The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "fk_SessionID_dvsys_search_results".The conflict occurred in database "ИМЯ-БД", table "dbo.dvsys_sessions", column 'SessionID', удалите записи из ссылающихся таблиц, у которых нет внешнего ключа с каскадным удалением.

    Узнать имена ссылающихся таблиц можно с помощью запроса:
    select OBJECT_NAME(tColumns.parent_object_id) ReferencingTable, OBJECT_NAME(tColumns.constraint_object_id)
    ReferencingKey, tKeys.delete_referential_action_desc [OnDeleteAction] from sys.foreign_key_columns tColumns
    join sys.foreign_keys tKeys ON tColumns.constraint_object_id = tKeys.[object_id]
    where tColumns.referenced_object_id = OBJECT_ID('[dbo].[dvsys_sessions]')

    После отключения БД от одного сервера, её можно подключить к другому.

    • При переносе основной БД на другой SQL сервер обязательно потребуются также копии всех сателлитов.