Грешка при преобразуване на информационната база. Внимание!!! Възникна грешка при актуализиране на данните след последното преструктуриране

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

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

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

След като щракнете върху бутона "Да", се появява следното:

„Открита е непълна операция за запазване на конфигурацията. Трябва да завършите операцията, за да продължите."

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

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

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

Решение:

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

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

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

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

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

dbcc checkdb('db_name', REPAIR_ALLOW_DATA_LOSS)

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

променете набор от база данни ONLINE, MULTI_USER

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

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

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

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

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

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

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

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

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

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

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

Пясъчник

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

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

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

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

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

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

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

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

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

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

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

Прави се следното искане:
ИЗПОЛЗВАЙТЕ GO DELETE ОТ . КЪДЕ FileName = "dbStruFinal" ИЗТРИВАТЕ ОТ . WHERE FileName = "commit" GO
Колкото и да е странно, основата оживява.

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

Тази статия не подлежи на коментари, тъй като нейният автор все още не е пълноправен член на общността. Ще можете да се свържете с автора само след като той получи

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

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

DB преобразуване

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

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

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

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

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

заден план

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

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

Най-простият начин е:

NewRecord =RegistersInfo.MessageTrackingLog.CreateRecordSet(); NewRecord.Record();

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

Грешка

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


Каква е грешката:

Възникна критична грешка при актуализиране на информационната база
защото:
Опитвам се да вмъкнем неуникална стойност в уникален индекс:
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"

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

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

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

Дял