Ошибка при загрузке ИБ из dt-файла, MS SQL

1. mavlenkov 15.03.24 21:53 Сейчас в теме
Просьба помочь разобраться в проблеме, может кто-нибудь укажет, в каком направлении искать.

ИБ относительно невелика, dt-файл занимает 9 гигабайт. Есть два расширения. В какой-то момент при попытке восстановить ИБ из dt-файла стала возникать ошибка:
Ошибка загрузки информационной базы. В информационную базу загружены не все данные
по причине:
Нарушено условие уникальности данных.

Попытка вставки неуникального значения в уникальный индекс:
Microsoft SQL Server Native Client 11.0: The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo._InfoRg3468' and the index name '_InfoRg3468_1'. The duplicate key value is (0, 0x00000000000000000000000000000000, СтандартныеПодсистемы.БазоваяФункциональность.ЗаданиеЗаполненияПараметровРаботыРасширений).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=10, native=1505, line=1

При этом:
1) Восстановление из резервной копии SQL при помощи SSMS выполняется корректно.
2) Восстановление на линуксовый сервер (PostgreSQL 15) выполняется корректно.
3) Запуск тестирования и исправления на линуксовом сервере, которое шло более двух суток, в итоге выдало ошибку -
Ошибка СУБД: 42P01: ERROR: relation "_reference140" does not exist...
(см. приложенный снимок).
4) Пока писал, сообразил, что не делал тестирование и исправление на вендовом сервере, поставлю...
Обновление: поставил на 60 часов, через час взглянул как идёт и вижу -
Тестирование начато
Проверка логической целостности расширений конфигурации
Тестирование прервано с возможностью дальнейшего продолжения ()

Какие-бы настройки не выставлял, тестирование и исправление не запускается, только выскакивает это сообщение и всё.
Обновление 2: В итоге удалось запустить тестирование и исправление уменьшив время выполнения до 24 часов.

Ещё предпринимались следующее шаги:
1) Загрузка на линуксовый сервер, поиск и удаление соответствующей запись в регистре, выгрузка dt-файла, загрузка на вендовый сервер. Дало ошибку:
Ошибка загрузки информационной базы. В информационную базу загружены не все данные
по причине:
Нарушено условие уникальности данных.

Попытка вставки неуникального значения в уникальный индекс:
Microsoft SQL Server Native Client 11.0: The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo._InfoRg3468' and the index name '_InfoRg3468_1'. The duplicate key value is (0, 0x00000000000000000000000000000000, СтандартныеПодсистемы.БазоваяФункциональность.ИдентификаторЗаполненияПараметровРаботыРасширений).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=10, native=1505, line=1

2) В ИБ на линуксовом сервере снова была найдена и удалена соответствующая запись регистра, затем повтор выгрузки/загрузки. Ошибка изменилась:
Ошибка загрузки информационной базы. В информационную базу загружены не все данные
по причине:
Нарушено условие уникальности данных.

Попытка вставки неуникального значения в уникальный индекс:
Microsoft SQL Server Native Client 11.0: The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo._InfoRg3473' and the index name '_InfoRg3473_1'. The duplicate key value is (СтандартныеПодсистемы.БазоваяФункциональность.ИдентификаторыОбъектовМетаданных).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=10, native=1505, line=1

3) Опять удаляю запись уже другого регистра, выгружаю и загружаю:
Ошибка загрузки информационной базы. В информационную базу загружены не все данные
по причине:
Конфликт блокировок при выполнении транзакции:
Microsoft SQL Server Native Client 11.0: Transaction (Process ID 80) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
HRESULT=80004005, SQLSrvr: SQLSTATE=40001, state=38, Severity=D, native=1205, line=1


На этом этапе желание продолжать малоосмысленные эксперименты окончательно пропало.

И, да свежевосстановленная на вендовый сервер БД из SQL-ной резервной копии без ошибок проходит следующие проверки:
DBCC CHECKDB ('ИмяИБ', REPAIR_REBUILD);
...
DBCC CHECKDB ...
...
DBCC CHECKALLOC ... 
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. lefthander 15.03.24 22:11 Сейчас в теме
Перед выгрузкой тестирование и исправление пока не будет ошибок, выгружать и снова загружать... очень нудная ошибка... Удачи
3. mavlenkov 15.03.24 22:36 Сейчас в теме
(2) Грустное. С рабочей базой такое не провернёшь, только на стенде, чтобы определить возможную причину.
4. mavlenkov 15.03.24 22:46 Сейчас в теме
(2) Выше обновил пост. Не работает тестирование и исправление, пишет:
Тестирование начато
Проверка логической целостности расширений конфигурации
Тестирование прервано с возможностью дальнейшего продолжения ()

И всё.
5. mavlenkov 16.03.24 08:39 Сейчас в теме
(4) В итоге удалось запустить тестирование и исправление уменьшив время выполнения до 24 часов.
6. mavlenkov 25.03.24 12:33 Сейчас в теме
Несколько итераций тестирования и исправления в общей сложности порядка 72 часов закончились и тестовая база успешно выгружена в DT-файл. Не очень понято, правда, как это можно сделать на рабочей...
11. stopa85 34 26.03.24 23:29 Сейчас в теме
(6) а может на стенде сравнить базы до и после ТИИ?

Может удастся найти то что было исправлено и сделать тоже самое прямым sql. Должно получится быстро и уже можно будет провернуть на рабочей базе с актуальными данными.
mavlenkov; +1 Ответить
7. TormDV 25.03.24 13:31 Сейчас в теме
Есть ли расширения в базе? Может, проблема с ними связана? Удалить их и потом ТиИ запустить...
8. mavlenkov 26.03.24 13:00 Сейчас в теме
(7) Да, есть. Только ведь данные расширений потеряются, разве нет? И потом, не думаю, что без расширений ТиИ будет идти сильно меньше...
9. TormDV 26.03.24 13:30 Сейчас в теме
(8) Данные потеряются, ошибки по идее уйдут. Был ряд проблем с расширениями, наподобие Вашей. Люди создавали темы здесь на ИС. Или удаление расширения помогало, или "жонглирование" различными версиями платформы.
mavlenkov; +1 Ответить
10. mavlenkov 26.03.24 21:57 Сейчас в теме
(9) Потеря данных, это потеря работоспособности приложения. К сожалению такое решение не подойдёт. Буду экспериментировать, напишу, если что-то путное выйдет.
12. mavlenkov 29.03.24 17:13 Сейчас в теме
Предварительный итог:
На стенд была выгружена актуальная копия БД SQL и запущено тестирование и исправление вот с такими параметрами (см. снимок). Десять часов, это максимально возможное время отключения рабочей базы.
Тестирование и исправление отработало часа за три, а то и меньше, после чего ИБ была успешно выгружена в DT-файл.

Теперь самое интересное, загрузить её обратно из этого файла (:
Прикрепленные файлы:
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот