При оновленні 1с відбулася критична помилка. Помилка "у процесі оновлення інформаційної бази сталася критична помилка". З відновлення конфігурації інформаційної бази з використанням MS SQL
Ми переїжджали на новий сервер. На ньому SQL та 1C. У порівнянні зі старими був набагато крутішим. І тест Гільова це теж підтвердив: проти 10-15 на старих серверах видавав 39. Тому ми одразу після покупки перенесли базу та розпочали роботу.
Але в якийсь момент щось пішло не так - користувачі почали скаржитися на повільну роботу. Зробили певні налаштування сервера та служб (які - тема окремого поста) і вирішили перезавантажити сервер, благо швидкість перезавантаження - 2 хвилини (на інших серверах до 10 доходило). Після цього при вході в 1С отримуємо таке повідомлення:
"Увага!!! При оновленні даних після останньої реструктуризації сталася помилка. Повторити оновлення? "Та ні"
Після натискання кнопки «Так» з'являється таке:
«Виявлено незавершену операцію збереження конфігурації. Для продовження роботи необхідно завершити операцію.
Перше, що вирішив зробити - CHECKDB на Managment Studio - після 2х годин очікування (база 500 ГБ) - все ОК.
На просторах мережі знайшов інформацію, що така ж помилка буває за динамічного оновлення.
Рішення, запропоновані в мережі відразу не допомогли, але разом з іншими події дали результат. Отже, що я робив:
Рішення:
- Те, чого не вистачало для рішень із мережі:
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:241С відновлення конфігурації інформаційної бази з використанням 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С, і помилки не буде!