Грешка: „Възникна критична грешка по време на процеса на актуализиране на информационната база.“ Грешка при конвертиране на информационна база C, възстановяване на конфигурацията на информационна база с помощта на MS SQL

25.06.2023

Когато работите в 1C:Enterprise, може да се появи следното съобщение: „За работа с нова версия 1C: Предприятията трябва да претърпят трансформация информационна база" Защо се появява този прозорец и как мога да отстраня грешката?

В повечето случаи причината за появата на прозореца е скорошен преход на програмата от остаряла версияплатформи към по-нова. На различни платформи информационна база 1Cсе формира по свой начин и приема различен състав. Всичко, което трябва да се направи, е да се конвертира базата данни (чиято структура съответства на остарялата платформа) в най-новия формат.

Преобразуване на база данни

Тази процедура е проста, но първо се препоръчва да се създаде резервно копиебаза данни, в случай че възникне грешка по време на конвертирането (например компютърът се изключи, което води до информационна база 1C, като самата програма, може да се повреди). След това приложете следния алгоритъм на действия:

  • Отворете базата данни в режим на конфигуратор;
  • Ще видите съобщение с молба да конвертирате информационната база. Щракнете върху потвърждение;

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

Отворете базата данни - трябва да стартира без проблеми. Ако прозорецът за грешка продължава да се появява след преобразуването, можете да опитате процедурата отново. Ако това не помогне, трябва да се свържете с програмист 1C. Понякога програмата може да замръзне, докато извършва операция. В момента не е необходимо да предприемате никакви действия.

важно! Информационна база 1C, преобразуван най-новата версияпрограмите не могат да се отварят на предишни версии.

пясъчник

власт 18 септември 2013 г. в 15:24 ч

1C, възстановяване на конфигурацията на информационната база с помощта на MS SQL

По едно време срещнах проблем: при актуализиране на конфигурацията от хранилището възникна грешка и 1C се затвори.

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

защото този проблеме възниквал повече от веднъж и е решил да сподели вариант за лечение.

При следващото стартиране на конфигуратора се появи грешка: „Внимание!!! Възникна грешка при актуализиране на данните след последното преструктуриране. Трябва ли да повторя актуализацията? Ако отговорът е да, получаваме съобщението: „Открита е операция за запазване на незавършена конфигурация. За да продължите да работите, трябва да завършите операцията”, след което приложението се затваря.

При анализа на този проблем бяха намерени няколко решения на проблема, всяко решение работи в различни случаи.

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

Разполага се копие на защитата на информацията и се изпълнява следната заявка:
ИЗПОЛЗВАЙТЕ GO DELETE FROM .. GO INSERT INTO .. ​​​​SELECT * FROM .. GO
В този случай таблицата, в която се съхранява конфигурацията за сигурност на информацията, се попълва отново. Препоръчително е да тествате и коригирате информационната сигурност след тази операция.

Вариант 2 (ако няма резервно копие):

ДО тази опцияобърнат към последната сламка. защото конфигурацията беше в процес на разработка и те малко забравиха за архивирането, разчитайки на съхранението.
В базата данни два записа се изтриват от таблицата “Config” от стойността в колоната “FileName” - dbStruFinal и commit

Изпълнява се следната заявка:
ИЗПОЛЗВАЙТЕ GO DELETE FROM.
WHERE FileName = "dbStruFinal" GO DELETE FROM .

WHERE FileName = "commit" GO

Колкото и да е странно, базата оживява.

Етикети: 1C Enterprise 8.2, SQL, възстановяване на конфигурацията

Тази статия не подлежи на коментар, тъй като нейният автор все още не е пълноправен член на общността. Ще можете да се свържете с автора едва след като той получи Преместихме се на нов сървър. Работи с SQL и 1C. В сравнение със старите беше много по-готин. И тестът на Гилев също потвърди това: срещу 10-15 на старите сървъри даде 39. Затова веднага след покупката прехвърлихме базата данни и започнахме работа.Но в един момент нещо се обърка - потребителите започнаха да се оплакват

бавна работа

. Направихме определени настройки за сървъра и услугите (кои от тях са тема на отделна публикация) и решихме да рестартираме сървъра, за щастие скоростта на рестартиране беше 2 минути (на други сървъри беше до 10). След това при влизане в 1C получаваме следното съобщение:

„Внимание!!! Възникна грешка при актуализиране на данните след последното преструктуриране. Трябва ли да повторя актуализацията? "Не наистина"

След натискане на "Да" се появява следното:

Намерих информация в интернет, че същата грешка възниква по време на динамично актуализиране.

Предложените онлайн решения не помогнаха веднага, но заедно с други действия дадоха резултати. И така, какво направих:

Решение:

  1. Какво липсваше за решения от мрежата:

sp_configure 'разрешаване на актуализации', 1
преконфигуриране с отмяна
върви

2. Поставете базата данни в режим на възстановяване

промяна на набор от бази данни EMERGENCY, SINGLE_USER

3. Извършваме тестване на бази данни:

dbcc checkdb('db_name', REPAIR_ALLOW_DATA_LOSS)

4. Излезте от режим на възстановяване на базата данни:

промяна на набор от бази данни ОНЛАЙН, MULTI_USER

5. По принцип, ако сте сигурни, че всичко е наред със самата основа, тогава не е нужно да правите точки 2-4. След това изпълняваме две заявки в SQL Profiler:

изтриване от конфигурацията, където FileName = 'commit'
изтриване от конфигурацията, където FileName = ‘dbStruFinal’

Тези записи са отговорни за динамичното актуализиране - не е нужно да се страхувате да ги изтриете.

В работните версии на заявките към базите данни:

изберете * от Config WHERE FileName = 'commit'

изберете * от Config WHERE FileName = 'dbStruFinal'

ще бъде празен.

6. върнете настройките:

sp_configure 'разрешаване на актуализации', 0
върви

7. След това успяхме да стартираме конфигуратора и базата данни започна да работи.

Освен това базата може да започне да работи след премахване на първия флаг.

Фон

Трябваше да създадем нов информационен регистър „MessageTrackingLog“. Добавено към конфигурацията, заредени са данните. След това дойде работата по оптимизацията. Трябваше да променя структурата на регистъра. Но това не беше така!

Тук всичко е ясно. Записите са станали неуникални, трябва да ги изтриете!

Най-лесният начин е:

NewRecord = InformationRegisters.MessageTrackingLog.CreateRecordSet(); NewRecord.Write();

Използвайки този метод, ние ще изчистим регистъра в 1C много бързо (но това също ще бъде нашата грешка).

Грешка

Изглежда, че регистърът е празен и можете да актуализирате 1C. Не искам да ви изненадвам, но пак ще има грешка:


Какво представлява грешката:

По време на процеса на актуализиране на информационната база, a критична грешка
поради:
Опит за вмъкване на неуникална стойност в уникален индекс:
Microsoft SQL сървър Native Client 11.0: Инструкцията CREATE UNIQUE INDEX е прекратена, защото е намерен дублиран ключ за името на обекта „dbo._InfoRgChngR34546NG“ и името на индекса „_InfoR34546_ByNodeMsg_RNTSRRRRRRNG“. Стойността на дублирания ключ е (0x00000011,d7, , 27 септември 4015 г. 22:22 ч., 768404,00,00,00,00,00,00).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, състояние=1, сериозност=10, естествено=1505, ред=1

Обяснение

Нека разберем структурата на SQL. Имаме регистър "MessageTrackingLog", в SQL се намира в таблицата " _InfoR34546". Можете да проверите това, като използвате специална обработка или метода "poke" (не е необходимо да правим това, защото името на таблицата вече е посочено в текста за грешка).

Сега ще обясня какво се случи. Когато заредихме данните в регистъра, в SQL те се озоваха в таблицата " _InfoR34546". Когато изчистихме таблицата с код в 1C, тези данни бяха изтрити от таблицата " _InfoR34546", но те бяха копирани в таблицата" _InfoRgChngR34546". Това стана проблемът.

Решение

За да разрешим този проблем, трябва да изчистим SQL таблицата "_InfoRgChngR34546".

Ще ви кажа, използвайки примера на "Microsoft SQL Server Management Studio". да отидем на " Management Studio". Намерете нашата база данни, отворете раздела с таблици, щракнете върху която и да е и щракнете върху бутона "Нова заявка": Сега въвеждаме заявката

Скъсете таблицата "_InfoRgChngR34546"

Може да имате друга маса! Не забравяйте!

И натиснете изпълни или клавиша "F5". Ето какъв трябва да е резултатът:

Това е всичко, сега можете безопасно да актуализирате 1C и няма да има грешки!