Восстановление базы или решение проблемы Ошибка СУБД: Microsoft SQL Server

19.09.24

База данных - Администрирование СУБД

Публикация размещена исключительно в образовательных целях и подходит только для платформы версии 8.3.25.1257.
Использует недокументированные средства доступа к базе данных 1С. Прямое обращение к СУБД нарушает лицензионное соглашение,
может изменить поведение платформы, привести к разрушению базы данных, скомпрометировать данные,
а также привести к отказу в официальной поддержке Фирмы 1С.
Анализ и решение ошибок СУБД. Во время реиндексации базы Ошибка СУБД: Microsoft SQL Server Native Client 11.0: Не удалось найти объект "ИмяБазы.dbo._RefSInf21806", так как он не существует, или отсутствуют разрешения. Во время проверки целостности Ошибка СУБД: Microsoft SQL Server Native Client 11.0: Недопустимое имя объекта "dbo._RefSInf21806".

Введение

У клиента давно не обновлялась управленческая база, и настало время её обновить.

Конфигурация базы: Управление торговлей для Беларуси, редакция 3.4.7.155

Платформа: 1С:Предприятие 8.3.20.1789

Требовалось обновить конфигурацию до релиза 3.5.11.73.

Но последние релизы конфигурации требовали более новую версию платформы. На тот момент была актуальная версия платформы 1С:Предприятие 8.3.25.1257 (в конце будет ясно, что это и есть виновник). Список ошибок этого релиза не вызывал опасений. На сервере 1С была установлена вторая версия платформы. Сначала через хранилище была обновлена тестовая база и проведено функциональное тестирование доработок. Затем перенесли тестовую базу в базу, которая работает на 1С:Предприятие 8.3.25.1257. Ошибок не было выявлено и началось обновление рабочей базы.
Сразу установили на сервер только 1С:Предприятие 8.3.25.1257, сделали бекап и пошло обновление.

На последнем релизе обновления при реструктуризации базы, что-то пошло не так...
Конфигуратор вылетел с ошибкой, текст не удалось сохранить. После перезахода в конфигуратор не было выявлено каких-то проблем и обновление успешно установилось.

Пользователи начали работать и, казалось бы, все позади! Но после глобальных обновлений фирма 1С рекомендует провести ТИИ (функция тестирования и исправления информационных баз. Она позволяет найти и исправить ошибки, возникающие в программе, а также восстановить, если файл базы был поврежден. Чтобы запустить функцию ТИИ, необходимо открыть программу в режиме конфигуратора, открыть пункт меню “Администрирование», “Тестирование и исправление информационных баз”.).
И во время обслуживания были обнаружены ошибки:

1. Недопустимое имя объекта "dbo._RefSInf21806". Как на картинке Проверка логической целостности ИБ.

Ошибка СУБД:
Microsoft SQL Server Native Client 11.0: Не удалось найти объект "ИмяБазы.dbo._RefSInf21806", так как он не существует, или отсутствуют разрешения.
HRESULT=80040E37, SQLSrvr: SQLSTATE=42S02, state=9, Severity=10, native=1088, line=1

2. Не удалось найти объект "ИмяБазы.dbo._RefSInf21806", так как он не существует, или отсутствуют разрешения. Как на картинке Реиндексация таблиц ИБ.

Ошибка СУБД:
Microsoft SQL Server Native Client 11.0: Не удалось найти объект "ИмяБазы.dbo._RefSInf21806", так как он не существует, или отсутствуют разрешения.
HRESULT=80040E37, SQLSrvr: SQLSTATE=42S02, state=9, Severity=10, native=1088, line=1

Анализ и решение

Первое предположение: дело в падении платформы во время обновления. От части возможно и так.

Провели расследование.

Согласно документации на ИТС, если у справочника есть предопределенные данные, то создается таблица проинициализированных областей (_RefSInf).

Нужно найти таблицу в СУБД. Открываем Microsoft SQL Server Management Studio и в копии базы таблица на месте, как на картинке Таблицы в MS SQL.

На тот момент не было инструментов для анализа и устранения подобного рода проблем.

Но была разработана обработка «Подключение к SQL из 1С 2.0», которая решит подобные проблемы в несколько кликов, рекомендую к использованию!

Теперь используя обработку, можно посмотреть в какой таблице 1С есть проблемы.

Вводим данные от СУБД (сервер, имя пользователя и пароль). Жмем кнопку "Соединить/Список БД".

Жмем кнопку "Таблицы" и ищем нашу таблицу "_RefSInf21806". В 1С - это таблица "Справочник.БанковскиеСчетаОрганизаций.ИнициализированныеПредопределенныеДанныеСправочника". Открываем в 1С Справочник.БанковскиеСчетаОрганизаций и смотрим предопределенные данные.

На удивление таблица пустая. Но ТИИ требует наличие этой таблицы в СУБД. В рабочей базе такой таблицы в СУБД нет. О чем мы и получили сообщения от Microsoft SQL Server.

Есть способ обхода. Зайти в конфигуратор добавить предопределенный элемент, обновить базу, затем удалить добавленный элемент и снова обновить базу. Т.к. таких таблиц было больше 1, то процесс представлялся трудоемким.

Параллельно было написано письмо в фирму 1С и позже стало понятно, что ошибку диагностировали:
Ошибка 60016376 и получено разрешение на использование обработки для исправления ошибки платформы 1С:Предприятие 8.3.25.1257, а также было найдено описание Ошибка 70087249

При тестировании и исправлении с проверкой логической целостности информационных баз, использующих разделение данных, ошибочно удаляются пустые таблицы предопределенных данных. Как следствие, при дальнейшей работе происходят ошибки СУБД, например, для таблицы справочника Не удалось найти объект "Acc.dbo._RefSInf19574", так как он не существует, или отсутствуют разрешения.

Способ обхода:

Восстановление базы или таблиц из бэкапа.

Точь в том наша ситуация. Все та же таблица "RefSInf". Следовательно нужно обновить платформу.
Установили 1С:Предприятие 8.3 (8.3.25.1374). Далее используя обработку скопировали таблицы из копии. Для этого выбираем нашу базу из списка баз, жмем кнопку "Копирование данных - Разница таблиц" и указываем базу, в который есть нужные таблицы. Алгоритм проанализирует список таблиц в обоих база и выберет те строки, где нету таблиц, и пометит их для выбора. Также можно вручную выделить строки таблиц, данные которых нужно скопировать из копии. Чтобы убрать из видимости лишние данные есть кнопка "Копирование данных - Очистить не выбранное". Теперь мы видим, что таблиц много. Исправляем всё нажатием кнопки "Копирование данных - Скопировать выбранную таблицу". После этого обязательно запустите ТИИ, потому что в процессе копирования таблицы её индексы не переносятся!!

Вывод

Как видим ошибки СУБД легко могут быть устранены.

В ручном режиме, трудоёмко, но решаемо! Но подобные проблемы, которые связаны с потерей данных, уже так нельзя решить в принципе.

Автоматический режим решения проблемы через обработку «Подключение к SQL из 1С 2.0» полностью подойдет для быстрого и эффективного устранения ошибок!
Важно! Используйте решение только для устранения ошибки платформы 1С:Предприятие 8.3.25.1257, чтобы не нарушать лицензионное соглашение!

P.S. Если материал вам помог, поблагодарите автора, поставив плюс! 

См. также

Администрирование СУБД Системный администратор Платформа 1С v8.3 Бесплатно (free)

Пользовался ранее https://infostart.ru/1c/articles/1120161/#, но она устарела, т.к. службы запускаются через systemctl, да и сами службы слегка изменились. Возможно, где-то на ИТС уже есть нужная инструкция, но мне не попалась.

15.11.2024    290    Baser    2    

1

HighLoad оптимизация Администрирование СУБД Системный администратор Программист Платформа 1С v8.3 Россия Бесплатно (free)

Мы исследуем проблему долгого выполнения запросов PostgreSQL при использовании конструкции VALUES: когда она возникает, как на нее можно повлиять, а главное, почему ее продуманная отработка важна для более быстрого функционирования решений на базе 1С

12.11.2024    822    Tantor    19    

14

HighLoad оптимизация Администрирование СУБД Механизмы платформы 1С Программист Платформа 1С v8.3 ИТ-компания Россия Бесплатно (free)

В данной статье мы рассмотрим, как работает механизм временных таблиц на postgres на платформе 8.3.23 и что изменилось в нем при добавлении новых возможностей в платформе 8.3.25. А также на примере покажу, как понимание работы платформы позволяет оптимизировать СУБД для работы с 1С.

29.10.2024    3124    Tantor    38    

34

Администрирование СУБД Системный администратор Программист Бесплатно (free)

CDC - очень мощный механизм, который можно использовать во многих сценариях, возможность развернуть его в Docker показывает простоту и лёгкость данной технологии.

08.10.2024    720    AlexSvoykin    1    

7

HighLoad оптимизация Администрирование СУБД Архивирование (backup) Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Бэкап в Postgres состоит из набора граблей, которые нужно обойти для успешного восстановления. Они заложены в самых неожиданных местах от предмета резервного копирования (база или кластер) до структуры каталогов. Один неверный шаг и восстановление будет невозможным. Почему нельзя было сделать проще, как в MS SQL или Oracle? Почему бэкап в Postgres оставляет впечатление чьей-то лабораторной работы? Статья адресована прежде всего специалистам 1С, избалованным комфортом в MS SQL, в суровых буднях импортозамещения на Postgres.

13.08.2024    2952    1CUnlimited    9    

4

Администрирование СУБД Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

В статье описала свой опыт аудита 1С базы, порядок действий + статьи, которые сильно помогли в работе.

14.07.2024    8203    limonen    16    

19
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Torin 826 19.09.24 17:18 Сейчас в теме
2. Xershi 1555 19.09.24 19:13 Сейчас в теме
(1) спасибо за оценку. С боем удалось опубликовать в образовательных целях.
shard; Torin; +2 Ответить
3. KOTzilla 22 20.09.24 04:43 Сейчас в теме
И обработка «Подключение к SQL из 1С 2.0» на модерации. Прям по лезвию ходите=)
4. Xershi 1555 20.09.24 09:16 Сейчас в теме
(3) сегодня должны одобрить.
5. Sashares 35 20.09.24 15:21 Сейчас в теме
6. Xershi 1555 21.09.24 00:46 Сейчас в теме
(5) тема закрытая суть изложите?
7. Sashares 35 21.09.24 10:20 Сейчас в теме
(6) На платформах 8.3.24 и 8.3.25 ниже версий 8.3.24.1667 и 8.3.25.1360 при тестировании и исправлении пропадают таблицы предопределенных элементов.

Рекомендуемый способ исправления:

Куприянов Сергей (1С, Москва)

Добрый день,
Восстановить из бэкапа удаленную таблицу.
Если бэкапа нет или подобная низкоуровневая операция проблематична - присылайте в службу тех поддержки базу (сюда продублируйте номер обращения), посмотрим, как еще можно восстановить.


Собственно, просто ссылка на обсуждение на партнерской конференции по данной проблеме.
8. Xershi 1555 21.09.24 11:26 Сейчас в теме
(7) дайте ссылку тогда на мою статью.
9. ILNIK 34 23.10.24 16:44 Сейчас в теме
Microsoft OLE DB Driver 19 for SQL Server: Недопустимое имя объекта "dbo._DataHistoryMetadataExtX1". Добавил документ в расширение и не обновляется база 8.3.24.1586
10. Xershi 1555 23.10.24 21:56 Сейчас в теме
(9) на последних 8.3.25 пробуйте. И очистить кэш стоит.
Оставьте свое сообщение