При оновленні 1с відбулася критична помилка. Помилка "у процесі оновлення інформаційної бази сталася критична помилка". З відновлення конфігурації інформаційної бази з використанням MS SQL

19.11.2019 Новини

Ми переїжджали на новий сервер. На ньому SQL та 1C. У порівнянні зі старими був набагато крутішим. І тест Гільова це теж підтвердив: проти 10-15 на старих серверах видавав 39. Тому ми одразу після покупки перенесли базу та розпочали роботу.

Але в якийсь момент щось пішло не так - користувачі почали скаржитися на повільну роботу. Зробили певні налаштування сервера та служб (які - тема окремого поста) і вирішили перезавантажити сервер, благо швидкість перезавантаження - 2 хвилини (на інших серверах до 10 доходило). Після цього при вході в 1С отримуємо таке повідомлення:

"Увага!!! При оновленні даних після останньої реструктуризації сталася помилка. Повторити оновлення? "Та ні"

Після натискання кнопки «Так» з'являється таке:

«Виявлено незавершену операцію збереження конфігурації. Для продовження роботи необхідно завершити операцію.

Перше, що вирішив зробити - CHECKDB на Managment Studio - після 2х годин очікування (база 500 ГБ) - все ОК.

На просторах мережі знайшов інформацію, що така ж помилка буває за динамічного оновлення.

Рішення, запропоновані в мережі відразу не допомогли, але разом з іншими події дали результат. Отже, що я робив:

Рішення:

  1. Те, чого не вистачало для рішень із мережі:

sp_configure 'allow updates', 1
reconfigure with override
go

2. Переводимо базу в режим відновлення

alter database set EMERGENCY, SINGLE_USER

3. Виконуємо тестування бази:

dbcc checkdb('db_name', REPAIR_ALLOW_DATA_LOSS)

4. Виводимо базу з режиму відновлення:

alter database set ONLINE, MULTI_USER

5. У принципі, якщо впевнені, що з самою базою все ок, то можна не робити 2-4 пункти. Далі виконуємо два запити у профайлері SQL:

delete from config where FileName = ‘commit’
delete from config where FileName = ‘dbStruFinal’

Ці записи відповідають за динамічне оновлення — можна не боятися їх видаляти.

У робочих версіях баз запити:

select * from Config WHERE FileName = ‘commit’

select * from Config WHERE FileName = ‘dbStruFinal’

будуть порожні.

6. повертаємо налаштування:

sp_configure 'allow updates', 0
go

7. Після цього вдалося запустити конфігуратор та база запрацювала.

Також база може працювати після видалення першого прапора.

Під час роботи в «1С:Підприємство» може з'явитися таке повідомлення: «Для роботи з новою версією 1С:Підприємства має бути виконане перетворення інформаційної бази». Чому з'являється це вікно та як можна усунути помилку?

У більшості випадків причина появи вікна - недавній перехід програми з застарілої версіїплатформи на новішу. У різних платформ інформаційна база 1Сформується по-своєму та приймає різний склад. Все, що потрібно зробити – зробити конвертацію бази даних (структура якої відповідає застарілій платформі) у новий формат.

Перетворення БД

Процедура ця нескладна, проте спочатку рекомендується створити резервну копіюбази, на випадок, якщо під час конвертування буде помилка (наприклад, відключиться комп'ютер, в результаті інформаційна база 1С, як і програма, можуть пошкодитися). Потім застосуйте наступний алгоритм дій:

  • Відкрийте БД як конфігуратора;
  • Ви побачите повідомлення із пропозицією конвертувати інформаційну базу. Натисніть підтвердження;

  • Закрийте конфігуратор.

Відкрийте базу даних – вона має запуститися без проблем. Якщо після перетворення вікно з помилкою продовжує з'являтись, можна спробувати виконати процедуру повторно. У разі, коли це не допомагає, необхідно звернутися до програміста 1С. Іноді під час операції програма може підвисати. Не треба в цей момент робити жодних дій.

Важливо! Інформаційна база 1С, перетворена останньою версієюПрограма не може бути відкрита на попередніх версіях.

Пісочниця

авторитет 18 вересня 2013 року о 15:24

1С відновлення конфігурації інформаційної бази з використанням MS SQL

Свого часу зіткнувся з проблемою: при оновленні конфігурації зі сховища стався збій і закрилася 1С.

Як з'ясувалося пізніше - відбулося руйнування сховища конфігурації та при оновленні конфігурації зі сховища злетіла і конфігурація БД. Подібна помилка виникала насамперед при динамічному оновленні ІБ.

Т.к. дана проблема виникала неодноразово вирішила поділитися варіантом лікування.

При наступному запуску конфігуратора виникла помилка: «Увага! При оновленні даних після останньої реструктуризації сталася помилка. Повторити оновлення? при ствердній відповіді отримуємо повідомлення: «Виявлено незавершену операцію збереження конфігурації. Для продовження роботи необхідно завершити операцію» після цього програма закривається.

При розборі цієї проблеми було знайдено кілька варіантів вирішення проблеми, кожне рішення працює у різних випадках.

Варіант 1 (за наявності бекапу SQL з копією з ідентичною конфігурацією):

Розгортається копія ІБ, і виконується запит наступної конструкції:
USE GO DELETE FROM .. GO INSERT INTO .. ​​SELECT * FROM .. GO
При цьому переливається таблиця в якій зберігається конфігурація ІБ. Бажано після цієї операції виконати тестування та виправлення ІБ.

Варіант 2 (за відсутності бекапу):

До цього варіанта звернулися як до останньої соломинки. Т.к. Конфігурація була в стадії розробки і про бекап трохи забули сподіваючись на сховище.
У базі видаляються два записи з таблиці Config за значенням у стовпці FileName - dbStruFinal і commit

Виконується наступний запит:
USE GO DELETE FROM. WHERE FileName = "dbStruFinal" GO DELETE FROM . WHERE FileName = "commit" GO
Як не дивно, база оживає.

Теги: 1с підприємство 8.2, SQL, відновлення конфігурації

Ця стаття не підлягає коментуванню, оскільки її автор ще не є повноправним учасником спільноти. Ви зможете зв'язатися з автором лише після того, як він отримає

Передісторія

Потрібно було створити новий регістр відомостей " Журнал Відстеження Повідомлень " . Додали до конфігурації, завантажили дані. Потім пішла робота з оптимізації. Довелося змінювати структуру регістру. Але не тут було!

Тут усе зрозуміло. Записи стали неунікальними, їх треба видалити!

Найпростіший спосіб це:

НовийЗапис = РеєстриВідомостей.ЖурналВідстеженняПовідомлень.СтворитиНабірЗаписів(); НовийЗапис.Записати();

Таким методом ми очистимо регістр 1С дуже швидко (але це буде і нашою помилкою).

Помилка

Здавалося б, у регістрі порожньо, і можна оновлювати 1С. Не хочу вас здивувати, але знову буде помилка:


Що ж така помилка:

У процесі поновлення інформаційної бази відбулася критична помилка
по причині:
Спроба вставки неунікального значення в унікальний індекс:
Microsoft SQL Server Native Client 11.0: Створення UNIQUE INDEX Statement termined because a duplicate key was found for the object name "dbo._InfoRgChngR34546NG" і index name "_InfoR34546_ByNodeMsg_RNTSRRRRRRNG". The duplicate key value is (0x00000011,d7, , Sep 27 4015 10:22PM, 768404,00,00,00,00,00,00).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=10, native=1505, line=1

Пояснення

Давайте розберемося зі структурою SQL. У нас є регістр "ЖурналВідстеження Повідомлень", він SQL знаходиться в таблиці " _InfoR34546". Перевірити це ви можете спеціальними обробками або методом "тику" (нам це не доведеться робити тому що в тексті помилки вже вказано назву таблиці).

А тепер поясню, що сталося. Коли ми завантажили дані в регістр, то SQL вони потрапили в таблицю " _InfoR34546". Коли ми кодом в 1С очистили таблицю, ці дані пішли з таблиці " _InfoR34546", але вони скопіювалися в таблицю " _InfoRgChngR34546". Це і стало проблемою.

Рішення

Для вирішення проблеми нам знадобиться очистити SQL таблицю "_InfoRgChngR34546".

Розповім на прикладі "Microsoft SQL Server Management Studio". Заходимо до " Management Studio". Знаходимо нашу базу, відкриваємо вкладку таблиць, клацаємо на будь-яку і тиснемо кнопку "Новий запит":. Тепер набираємо запит

Truncate table "_InfoRgChngR34546"

У вас може бути інша таблиця! Не забувайте!

І тиснемо виконати або клавішу "F5". Ось такий має бути результат:

Все тепер можна спокійно оновлювати 1С, і помилки не буде!