Došlo je do kritične greške 1c. Greška konverzije infobaze. C, vraćanje konfiguracije infobaze koristeći MS SQL

Kada radite u 1C:Enterprise, može se pojaviti sljedeća poruka: "Da biste radili s novom verzijom 1C:Enterprise, baza podataka mora biti konvertirana." Zašto se pojavljuje ovaj prozor i kako mogu riješiti grešku?

U većini slučajeva razlog za pojavu prozora je nedavni prijelaz programa sa zastarjele verzije platforme na noviju. Na različitim platformama baza informacija 1C formira se na svoj način i poprima drugačiji sastav. Sve što treba uraditi je konvertovati bazu podataka (čija struktura odgovara zastarjeloj platformi) u najnoviji format.

Konverzija baze podataka

Ovaj postupak je jednostavan, međutim, preporučuje se da prvo napravite rezervnu kopiju baze podataka u slučaju da dođe do greške tokom konverzije (na primjer, računar se isključi, što rezultira baza informacija 1C, kao i sam program, može biti oštećen). Zatim primijenite sljedeći algoritam radnji:

  • Otvorite bazu podataka u modu konfiguratora;
  • Vidjet ćete poruku u kojoj se traži da konvertujete bazu podataka. Kliknite potvrdu;

  • Zatvorite konfigurator.

Otvorite bazu podataka - trebalo bi da se pokrene bez problema. Ako se prozor s greškom nastavi pojavljivati ​​nakon konverzije, možete ponoviti postupak. Ako to ne pomogne, trebate kontaktirati 1C programera. Ponekad se program može zamrznuti tokom izvođenja operacije. U ovom trenutku nema potrebe za preduzimanjem bilo kakvih radnji.

Bitan! Baza informacija 1C konvertovana najnovijom verzijom programa ne može se otvoriti na prethodnim verzijama.

Pozadina

Trebali smo kreirati novi registar informacija “MessageTrackingLog”. Dodato u konfiguraciju, učitao podatke. Zatim je uslijedio rad na optimizaciji. Morao sam promijeniti strukturu registra. Ali nije ga bilo!

Ovde je sve jasno. Zapisi su postali nejedinstveni, morate ih izbrisati!

Najlakši način je:

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

Koristeći ovu metodu, vrlo brzo ćemo obrisati registar u 1C (ali to će biti i naša greška).

Greška

Čini se da je registar prazan i možete ažurirati 1C. Ne želim da vas iznenadim, ali opet će biti greške:


Šta predstavlja greška:

Došlo je do kritične greške tokom procesa ažuriranja baze podataka
zbog:
Pokušaj umetanja nejedinstvene vrijednosti u jedinstveni indeks:
Microsoft SQL Server Native Client 11.0: CREATE UNIQUE INDEX izraz je prekinut jer je pronađen duplikat ključa za naziv objekta "dbo._InfoRgChngR34546NG" i naziv indeksa "_InfoR34546_ByNodeMsg_RNTSRRRRRRNG". Duplicirana vrijednost ključa je (0x00000011,d7, , 27. septembar 4015 22:22, 768404,00,00,00,00,00,00).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, stanje=1, ozbiljnost=10, izvorno=1505, red=1

Objašnjenje

Hajde da razumemo strukturu SQL-a. Imamo registar "MessageTrackingLog", u SQL-u se nalazi u tabeli " _InfoR34546". Ovo možete provjeriti posebnom obradom ili metodom "bockanja" (ne moramo to raditi jer je naziv tabele već naznačen u tekstu greške).

Sad ću objasniti šta se dogodilo. Kada smo učitali podatke u registar, u SQL-u su završili u tabeli" _InfoR34546". Kada smo obrisali tabelu sa kodom u 1C, ovi podaci su izbrisani iz tabele" _InfoR34546", ali su kopirani u tabelu" _InfoRgChngR34546". Ovo je postalo problem.

Rješenje

Da bismo riješili ovaj problem, moramo obrisati SQL tablicu "_InfoRgChngR34546".

Reći ću vam na primjeru "Microsoft SQL Server Management Studio". idemo na " Management Studio". Pronađite našu bazu podataka, otvorite karticu tabele, kliknite na bilo koju i kliknite na dugme "Novi upit": Sada upisujemo upit

Skratiti tabelu "_InfoRgChngR34546 "

Možda imate drugi sto! Nemoj zaboraviti!

I pritisnite execute ili pritisnite "F5". Ovo bi trebao biti rezultat:

To je to, sada možete sigurno ažurirati 1C i neće biti grešaka!

Prešli smo na novi server. Pokreće SQL i 1C. U poređenju sa starim bio je mnogo hladniji. I Gilevov test je to potvrdio: naspram 10-15 na starim serverima dao je 39. Stoga smo odmah nakon kupovine prenijeli bazu podataka i počeli s radom.

Ali u nekom trenutku nešto je pošlo po zlu - korisnici su počeli da se žale na spor rad. Napravili smo određena podešavanja za server i servise (koje su tema posebnog posta) i odlučili da restartujemo server, srećom brzina ponovnog pokretanja je bila 2 minuta (na drugim serverima je bila do 10). Nakon toga, prilikom prijave na 1C dobijamo sljedeću poruku:

„Pažnja!!! Došlo je do greške prilikom ažuriranja podataka nakon posljednjeg restrukturiranja. Da li da ponovim ažuriranje? "Ne baš"

Nakon klika na "Da" pojavljuje se sljedeće:

“Otkrivena je nepotpuna operacija spremanja konfiguracije. Morate završiti operaciju da biste nastavili."

Prvo što sam odlučio da uradim je PROVERA DB u Managment Studiju - posle 2 sata čekanja (baza od 500 GB) - sve je bilo OK.

Našao sam informaciju na Internetu da se ista greška javlja tokom dinamičkog ažuriranja.

Predložena rješenja online nisu pomogla odmah, ali su zajedno s drugim akcijama dala rezultate. Pa šta sam uradio:

Rješenje:

  1. Šta je nedostajalo rešenjima sa mreže:

sp_configure 'dopusti ažuriranja', 1
rekonfigurirati sa nadjačavanjem
idi

2. Stavite bazu podataka u način oporavka

alter baze podataka HITNO, SINGLE_USER

3. Vršimo testiranje baze podataka:

dbcc checkdb('db_name', REPAIR_ALLOW_DATA_GUBITAK)

4. Izađite iz baze podataka iz načina oporavka:

alter baze podataka ONLINE, MULTI_USER

5. U principu, ako ste sigurni da je sa samom bazom sve u redu, onda ne morate raditi tačke 2-4. Zatim pokrećemo dva upita u SQL profileru:

izbriši iz konfiguracije gdje je FileName = 'commit'
izbriši iz konfiguracije gdje je FileName = 'dbStruFinal'

Ovi zapisi su odgovorni za dinamičko ažuriranje - ne morate se bojati izbrisati ih.

U radnim verzijama baza podataka upiti:

odaberite * iz Config WHERE FileName = 'commit'

odaberite * iz Config WHERE FileName = 'dbStruFinal'

će biti prazan.

6. vratite postavke:

sp_configure 'dopusti ažuriranja', 0
idi

7. Nakon ovoga uspjeli smo pokrenuti konfigurator i baza podataka je proradila.

Takođe, baza može početi sa radom nakon uklanjanja prve zastavice.

Sandbox

autoritet 18. septembar 2013. u 15:24

1C, vraćanje konfiguracije baze podataka pomoću MS SQL-a

Jednom sam naišao na problem: prilikom ažuriranja konfiguracije iz spremišta, došlo je do greške i 1C se zatvorio.

Kako se kasnije ispostavilo, skladište konfiguracije je uništeno, a prilikom ažuriranja konfiguracije i konfiguracija baze podataka je izbrisana iz skladišta. Slična greška se dogodila i ranije tokom dinamičkog ažuriranja sigurnosti informacija.

Jer Ovaj problem se pojavio više puta i odlučio sam podijeliti opciju liječenja.

Sljedeći put kada ste pokrenuli konfigurator, pojavila se greška: “Pažnja!!! Došlo je do greške prilikom ažuriranja podataka nakon posljednjeg restrukturiranja. Da li da ponovim ažuriranje? Ako je odgovor potvrdan, dobijamo poruku: „Otkrivena je nepotpuna operacija spremanja konfiguracije. Da biste nastavili sa radom, morate završiti operaciju” nakon čega se aplikacija zatvara.

Analizom ovog problema pronađeno je nekoliko rješenja problema, svako rješenje funkcionira u različitim slučajevima.

Opcija 1 (ako imate SQL sigurnosnu kopiju s kopijom identične konfiguracije):

Kopija informacione sigurnosti se postavlja i izvršava se sljedeći zahtjev:
KORISTI GO DELETE FROM .. GO INSERT IN .. SELECT * FROM .. GO
U ovom slučaju se ponovo popunjava tabela u kojoj je pohranjena konfiguracija sigurnosti informacija. Preporučljivo je testirati i ispraviti sigurnost informacija nakon ove operacije.

Opcija 2 (ako nema rezervne kopije):

Ova opcija je okrenuta kao posljednja kap. Jer konfiguracija je bila u razvoju i malo su zaboravili na backup, oslanjajući se na skladište.
U bazi podataka, dva zapisa se brišu iz tabele “Config” po vrijednosti u koloni “FileName” - dbStruFinal i urezivanje

Izvršava se sljedeći upit:
KORISTI GO DELETE FROM . WHERE FileName = "dbStruFinal" GO DELETE FROM . WHERE FileName = "urezivanje" GO
Začudo, baza oživljava.

Oznake: 1C Enterprise 8.2, SQL, vraćanje konfiguracije

Ovaj članak ne podliježe komentarisanju jer njegov autor još nije punopravničlan zajednice. Autora ćete moći kontaktirati tek nakon što primi