Eroare de conversie a bazei de informații. Atenţie!!! A apărut o eroare la actualizarea datelor după ultima restructurare

Ne-am mutat la server nou. Rulează SQL și 1C. În comparație cu cele vechi era mult mai rece. Și testul lui Gilev a confirmat și acest lucru: față de 10-15 pe serverele vechi, a dat 39. Prin urmare, imediat după cumpărare, am transferat baza de date și am început să lucrăm.

Dar la un moment dat ceva a mers prost - utilizatorii au început să se plângă muncă lentă. Am făcut anumite setări pentru server și servicii (care fac subiectul unei postări separate) și am decis să repornim serverul, din fericire viteza de repornire a fost de 2 minute (pe alte servere a fost până la 10). După aceasta, când ne conectăm la 1C, primim următorul mesaj:

"Atenţie!!! La actualizarea datelor, după ultima restructurare, A avut loc o eroare. Ar trebui să repet actualizarea? "Nu chiar"

După ce faceți clic pe „Da” apare următoarele:

„A fost detectată o operație de salvare a configurației incomplete. Trebuie să finalizați operațiunea pentru a continua.”

Primul lucru pe care m-am hotărât să-l fac a fost CHECKDB în Managment Studio - după 2 ore de așteptare (bază de date de 500 GB) - totul a fost OK.

Am găsit informații pe Internet că aceeași eroare apare în timpul actualizării dinamice.

Soluțiile propuse online nu au ajutat imediat, dar împreună cu alte acțiuni au dat rezultate. Deci ce am facut:

Soluţie:

  1. Ce lipsea pentru soluțiile din rețea:

sp_configure „permite actualizări”, 1
reconfigurare cu override
merge

2. Puneți baza de date în modul de recuperare

modificați setul de baze de date EMERGENCY, SINGLE_USER

3. Efectuăm testarea bazei de date:

dbcc checkdb('nume_db', REPAIR_ALLOW_DATA_LOSS)

4. Ieșiți din baza de date din modul de recuperare:

modificați setul de baze de date ONLINE, MULTI_USER

5. În principiu, dacă ești sigur că totul este în regulă cu baza în sine, atunci nu trebuie să faci punctele 2-4. Apoi, rulăm două interogări în profiler SQL:

ștergeți din config unde FileName = 'commit'
ștergeți din config unde FileName = „dbStruFinal”

Aceste înregistrări sunt responsabile pentru actualizarea dinamică - nu trebuie să vă fie teamă să le ștergeți.

În versiunile de lucru ale interogărilor bazelor de date:

selectați * din Config WHERE FileName = 'commit'

selectați * din Config WHERE FileName = 'dbStruFinal'

va fi goală.

6. returnați setările:

sp_configure „permite actualizări”, 0
merge

7. După aceasta, am reușit să lansăm configuratorul și baza de date a început să funcționeze.

De asemenea, baza poate începe să funcționeze după îndepărtarea primului steag.

Cutie cu nisip

autoritate 18 septembrie 2013 la 15:24

1C, restaurare configurație baza de informatii folosind MS SQL

La un moment dat am întâlnit o problemă: la actualizarea configurației din depozit, a apărut o eroare și 1C s-a închis.

După cum s-a dovedit mai târziu, memoria de configurare a fost distrusă și, la actualizarea configurației, configurația bazei de date a fost, de asemenea, ștearsă din stocare. O eroare similară a mai apărut în timpul actualizărilor dinamice ale securității informațiilor.

Deoarece această problemă a apărut de mai multe ori și a decis să împărtășească o opțiune de tratament.

Data viitoare când ați pornit configuratorul a apărut o eroare: „Atenție!!! A apărut o eroare la actualizarea datelor după ultima restructurare. Ar trebui să repet actualizarea? Dacă răspunsul este da, primim mesajul: „A fost detectată o operație de salvare a configurației incomplete. Pentru a continua lucrul, trebuie să finalizați operațiunea” după care aplicația se închide.

La analiza acestei probleme s-au găsit mai multe soluții la problemă, fiecare soluție funcționând în cazuri diferite.

Opțiunea 1 (dacă aveți o copie de rezervă SQL cu o copie cu o configurație identică):

Se implementează o copie a securității informațiilor și se execută următoarea solicitare:
UTILIZAȚI GO DELETE FROM .. GO INSERT INTO .. ​​​​SELECT * FROM .. GO
În acest caz, tabelul în care este stocată configurația de securitate a informațiilor este reumplut. Este recomandabil să testați și să corectați securitatea informațiilor după această operațiune.

Opțiunea 2 (dacă nu există backup):

Această opțiune a fost transformată în ultimul pahar. Deoarece configurația era în curs de dezvoltare și au uitat puțin de backup, bazându-se pe stocare.
În baza de date, două înregistrări sunt șterse din tabelul „Config” cu valoarea din coloana „FileName” - dbStruFinal și commit

Se execută următoarea interogare:
UTILIZAȚI GO DELETE FROM . WHERE FileName = "dbStruFinal" GO DELETE FROM . WHERE FileName = "commit" GO
Destul de ciudat, baza prinde viață.

Etichete: 1C Enterprise 8.2, SQL, restaurare configurație

Acest articol nu este supus comentariilor, deoarece autorul său nu este încă un membru cu drepturi depline al comunității. Veți putea contacta autorul numai după ce acesta va primi

Când lucrați în 1C:Enterprise, poate apărea următorul mesaj: „Pentru a lucra cu versiune noua 1C: Întreprinderea trebuie să sufere o transformare a bazei de informații.” De ce apare această fereastră și cum pot rezolva eroarea?

În cele mai multe cazuri, motivul apariției ferestrei este o tranziție recentă a programului de la versiune învechită platforme către una mai nouă. Pe diferite platforme baza de informații 1C se formează în felul său și capătă o compoziție diferită. Tot ce trebuie făcut este să convertiți baza de date (a cărei structură corespunde platformei învechite) în cel mai nou format.

Conversie baze de date

Această procedură este simplă, cu toate acestea, se recomandă mai întâi să o creați copie de rezervă de bază, în cazul în care apare o eroare în timpul conversiei (de exemplu, computerul se oprește, rezultând baza de informații 1C, ca și programul în sine, poate fi deteriorat). Apoi aplicați următorul algoritm de acțiuni:

  • Deschide baza de date în modul configurator;
  • Veți vedea un mesaj care vă cere să convertiți baza de informații. Faceți clic pe confirmare;

  • Închide configuratorul.

Deschideți baza de date - ar trebui să pornească fără probleme. Dacă fereastra de eroare continuă să apară după conversie, puteți încerca din nou procedura. Dacă acest lucru nu ajută, trebuie să contactați un programator 1C. Uneori, programul se poate bloca în timpul efectuării unei operații. Nu este nevoie să luați nicio măsură în acest moment.

Important! Baza de informații 1C, convertit ultima versiune programele nu pot fi deschise pe versiunile anterioare.

fundal

Trebuie să creăm un nou registru de informații „MessageTrackingLog”. Adăugat la configurație, au încărcat datele. Apoi a venit munca de optimizare. A trebuit să schimb structura registrului. Dar nu era acolo!

Totul este clar aici. Înregistrările au devenit neunice, trebuie să le ștergeți!

Cea mai ușoară cale este:

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

Folosind această metodă, vom șterge foarte repede registrul în 1C (dar aceasta va fi și greșeala noastră).

Eroare

S-ar părea că registrul este gol și puteți actualiza 1C. Nu vreau să vă surprind, dar va apărea din nou o eroare:


Ce reprezintă eroarea:

A apărut o eroare critică în timpul procesului de actualizare a bazei de informații
din cauza:
Încercarea de a insera o valoare non-unica într-un index unic:
Microsoft SQL Server Client nativ 11.0: Instrucțiunea CREATE UNIQUE INDEX sa încheiat deoarece a fost găsită o cheie duplicată pentru numele obiectului „dbo._InfoRgChngR34546NG” și numele indexului „_InfoR34546_ByNodeMsg_RNTSRRRRRRNG”. Valoarea cheii duplicate este (0x00000011,d7, , 27 septembrie 4015 22:22, 768404,00,00,00,00,00,00).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, stare=1, severitate=10, nativ=1505, linie=1

Explicaţie

Să înțelegem structura SQL. Avem un registru „MessageTrackingLog”, în SQL se află în tabelul „ _InfoR34546". Puteți verifica acest lucru folosind o procesare specială sau metoda „poke” (nu trebuie să facem acest lucru deoarece numele tabelului este deja indicat în textul de eroare).

Acum voi explica ce s-a întâmplat. Când am încărcat datele în registru, în SQL au ajuns în tabel" _InfoR34546". Când am șters tabelul cu codul în 1C, aceste date au fost șterse din tabel" _InfoR34546", dar au fost copiate în tabel" _InfoRgChngR34546". Aceasta a devenit problema.

Soluţie

Pentru a rezolva această problemă, trebuie să ștergem tabela SQL „_InfoRgChngR34546”.

Vă voi spune folosind exemplul „Microsoft SQL Server Management Studio”. Să mergem la " Management Studio". Găsiți baza noastră de date, deschideți fila tabele, faceți clic pe oricare și faceți clic pe butonul „Interogare nouă”: Acum introducem interogarea

Trunchiați tabelul „_InfoRgChngR34546”

Poate ai o altă masă! Nu uita!

Și apăsați pe executare sau apăsați „F5”. Iată care ar trebui să fie rezultatul:

Gata, acum poți actualiza în siguranță 1C și nu vor exista erori!

Acțiune