Возможные ошибки при обновлении БД

Ошибка уникальности операций

Возможна ситуация, когда при обновлении БД Docsvision будет получена ошибка со следующей информацией в логе сервера:

Method name: StorageServer.RowSetData
                Param1: 23c42136-0ee3-e211-905a-005056c00008
                Param2: 20d21193-9f7f-4b62-8d69-272e78e1d6a8
                Param3: c81fa07c-2328-4821-b453-ae5959bf8fae
                Stack trace:    at Docsvision.Platform.StorageServer.StorageServer.RetryIfFail(Action requestOperation)
   at Docsvision.Platform.StorageServer.StorageServer.RowSetData(Guid sessionId, Guid sectionId, Guid rowId, String rowData)
    ProcessId=3320
    DateTime=2013-07-02T15:55:09.0269569+04:00
StorageServerRuntime Error: 0 :
Violation of UNIQUE KEY constraint 'dvsys_refstates_operations_uc_section_defaultname'. Cannot insert duplicate key in object 'dbo.dvtable_\{a5d22d25-435d-4f08-bf02-b4e9f778709f}'. The duplicate key value is (Set controller, 9395e682-2b5a-4ee0-84c8-1ff5b4bf5217, <NULL>).
The statement has been terminated.

Данная ошибка указывает на наличие дубликата встроенной операции приложения Управление документами.

Чтобы исправить ошибку, выполните следующие действия:
  1. Определите вид карточек с ошибкой.

    Идентификатор вида указан в тексте ошибки в сообщении The duplicate key value is (Set controller, 9395e682-2b5a-4ee0-84c8-1ff5b4bf5217, <NULL>).

    Обратите внимание на первые два параметра:
    • Set controller — название операции.

    • 9395e682-2b5a-4ee0-84c8-1ff5b4bf5217 — идентификатор вида, к которому привязана операция.

  2. Выполните следующий скрипт в БД Docsvision:

    SELECT [RowID] FROM [dbo].[dvtable_{a5d22d25-435d-4f08-bf02-b4e9f778709f}] Operations WHERE [DefaultName] = 'Set controller' and [ParentRowID] = '{ИД вида}' (1) (2)
    1 В поле RowID будет содержаться идентификатор строки операции, которая вызывает ошибку.
    2 Вместо ИД вида укажите идентификатор вида, полученный на шаге 1.
  3. Выполните скрипт для удаления дубликата операции:

    DELETE [dbo].[dvtable_{a5d22d25-435d-4f08-bf02-b4e9f778709f}] WHERE RowID = '{ИД из поля RowID}'

    Похожие ошибки следует исправить аналогичным способом.

    Если в изменённом Решении настроен доступ к элементам управления с использованием встроенных операций обновляемой версии Управление документами, необходимо повторно настроить доступ с использованием операций Управление документами новой версии.

Ошибка уникальности локализации состояний

При обновлении БД Docsvision может возникать ошибка со следующей информацией в журнале сервера:

 DocsVision.Platform.StorageServer.StorageServerException: Internal exception, error code: GlobalUniquenessViolated.
 ---> DocsVision.Platform.StorageServer.StorageServerException: Internal exception, error code: GlobalUniquenessViolated.
 ---> DocsVision.Platform.StorageServer.StorageServerException: Internal exception, error code: GlobalUniquenessViolated.
 ---> System.Data.SqlClient.SqlException (0x80131904): Violation of UNIQUE KEY constraint 'dvsys_refstates_statenames_uc_global_localeidparentrowid'. Cannot insert duplicate key in object 'dbo.dvtable_{da37ca71-a977-48e9-a4fd-a2b30479e824}'. The duplicate key value is (1049, 004d97cf-0df2-4611-b76e-f29d766cb74f, <NULL>).
The statement has been terminated.

Данная ошибка указывает на наличие дубликата локализованного названия состояния приложения Управление документами.

Чтобы исправить ошибку, выполните следующие действия:
  1. Определите состояние с ошибкой. Идентификатор состояния указан в тексте ошибки в сообщении:

    The duplicate key value is (1049, 004d97cf-0df2-4611-b76e-f29d766cb74f, <NULL>).

    1 и 2 значения в сообщении — это номер локали (1049) и ID состояния(004d97cf-0df2-4611-b76e-f29d766cb74f) соответственно.

  2. Выполните следующий скрипт в БД Docsvision:

    SELECT [RowID] FROM [dbo].[dvtable_{DA37CA71-A977-48E9-A4FD-A2B30479E824}] Operations WHERE [LocaleID] = 1049 and [ParentRowID] = '{ID состояния}'
  3. Выполните скрипт для удаления дубликата:

    DELETE [dbo].[dvtable_{DA37CA71-A977-48E9-A4FD-A2B30479E824}] WHERE RowID = '{ИД из поля RowID}'
  4. Если уверены что у проблемного состояния имеются только стандартные локализованные названия, можно очистить сразу всё при помощи следующего скрипта:

    DELETE [dbo].[dvtable_{DA37CA71-A977-48E9-A4FD-A2B30479E824}] WHERE ParentRowID = '{ИД состояния}'
  5. Похожие ошибки следует исправить аналогичным способом.