Prišlo je do kritične napake 1c. Napaka pri pretvorbi informacijske baze. C, obnovitev konfiguracije informacijske baze z uporabo MS SQL

Pri delu v 1C:Enterprise se lahko pojavi naslednje sporočilo: »Za delo z novo različico 1C:Enterprise je treba pretvoriti informacijsko bazo.« Zakaj se pojavi to okno in kako lahko odpravim napako?

V večini primerov je razlog za pojav okna nedavni prehod programa iz zastarele različice platforme na novejšo. Na različnih platformah informacijska baza 1C se oblikuje na svoj način in dobi drugačno sestavo. Vse, kar je treba storiti, je pretvorba podatkovne baze (katere struktura ustreza zastareli platformi) v najnovejši format.

Pretvorba baze podatkov

Ta postopek je preprost, vendar je priporočljivo, da najprej ustvarite varnostno kopijo baze podatkov, če pride do napake med pretvorbo (na primer, da se računalnik izklopi, kar povzroči informacijska baza 1C, tako kot sam program, lahko poškodovan). Nato uporabite naslednji algoritem dejanj:

  • Odprite bazo podatkov v načinu konfiguratorja;
  • Videli boste sporočilo, ki vas bo pozvalo, da pretvorite informacijsko bazo. Kliknite potrditev;

  • Zaprite konfigurator.

Odprite bazo podatkov - zagnati bi se morala brez težav. Če se okno z napako po pretvorbi še naprej prikazuje, lahko postopek poskusite znova. Če to ne pomaga, se morate obrniti na programerja 1C. Včasih lahko program zamrzne med izvajanjem operacije. Trenutno ni potrebno ukrepati.

Pomembno! Informacijska baza 1C pretvorjenih z najnovejšo različico programa ni mogoče odpreti v prejšnjih različicah.

Ozadje

Ustvariti smo morali nov register informacij »MessageTrackingLog«. Dodano v konfiguracijo, naloženi podatki. Nato je sledilo optimizacijsko delo. Moral sem spremeniti strukturo registra. Ampak tam ga ni bilo!

Tukaj je vse jasno. Zapisi so postali needinstveni, morate jih izbrisati!

Najlažji način je:

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

S to metodo bomo zelo hitro počistili register v 1C (vendar bo to tudi naša napaka).

Napaka

Zdi se, da je register prazen in lahko posodobite 1C. Nočem vas presenetiti, vendar bo spet prišlo do napake:


Kaj predstavlja napaka:

Med postopkom posodobitve informacijske baze je prišlo do kritične napake
zaradi:
Poskus vstavitve needinstvene vrednosti v enolični indeks:
Microsoft SQL Server Native Client 11.0: Stavek CREATE UNIQUE INDEX je bil prekinjen, ker je bil najden podvojen ključ za ime objekta "dbo._InfoRgChngR34546NG" in ime indeksa "_InfoR34546_ByNodeMsg_RNTSRRRRRRNG". Vrednost podvojenega ključa je (0x00000011,d7, , 27. september 4015 22:22, 768404,00,00,00,00,00,00).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, stanje=1, resnost=10, izvorno=1505, vrstica=1

Razlaga

Razumejmo strukturo SQL. Imamo register "MessageTrackingLog", v SQL se nahaja v tabeli " _InfoR34546". To lahko preverite s posebno obdelavo ali metodo "poke" (tega nam ni treba storiti, ker je ime tabele že navedeno v besedilu napake).

Zdaj bom razložil, kaj se je zgodilo. Ko smo podatke naložili v register, je v SQL končal v tabeli" _InfoR34546". Ko smo počistili tabelo s kodo v 1C, so bili ti podatki izbrisani iz tabele" _InfoR34546", vendar so bili kopirani v tabelo" _InfoRgChngR34546". To je postala težava.

rešitev

Za rešitev te težave moramo počistiti tabelo SQL "_InfoRgChngR34546".

Povedal vam bom na primeru "Microsoft SQL Server Management Studio". pojdimo na " Management Studio". Poiščite našo zbirko podatkov, odprite zavihek tabel, kliknite poljubno in kliknite gumb "Nova poizvedba": Zdaj vnesemo poizvedbo

Skrajšaj tabelo "_InfoRgChngR34546"

Morda imate drugo mizo! Ne pozabi!

In pritisnite izvrši ali tipko "F5". To bi moral biti rezultat:

To je to, zdaj lahko varno posodobite 1C in ne bo nobenih napak!

Preselili smo se na nov strežnik. Poganja SQL in 1C. V primerjavi s starimi je bilo veliko bolj hladno. In Gilevov test je to tudi potrdil: proti 10-15 na starih strežnikih je dal 39. Zato smo takoj po nakupu prenesli bazo in začeli delati.

Toda na neki točki je šlo nekaj narobe - uporabniki so se začeli pritoževati nad počasnim delom. Naredili smo določene nastavitve za strežnik in storitve (katere so tema posebne objave) in se odločili za ponovni zagon strežnika, na srečo je bila hitrost ponovnega zagona 2 minuti (na drugih strežnikih tudi do 10). Po tem ob prijavi v 1C prejmemo naslednje sporočilo:

"Pozor!!! Med posodabljanjem podatkov po zadnjem prestrukturiranju je prišlo do napake. Naj ponovim posodobitev? "Ne res"

Po kliku na "Da" se prikaže naslednje:

»Zaznana je bila operacija shranjevanja nepopolne konfiguracije. Za nadaljevanje morate dokončati operacijo."

Prvo kar sem se odločil narediti je CHECKDB v Managment Studiu - po 2 urah čakanja (500 GB baza) je bilo vse OK.

Na internetu sem našel informacije, da se ista napaka pojavi med dinamičnim posodabljanjem.

Rešitve, predlagane na spletu, niso takoj pomagale, vendar so skupaj z drugimi ukrepi dale rezultate. Torej, kaj sem naredil:

rešitev:

  1. Kaj je manjkalo rešitvam iz omrežja:

sp_configure 'dovoli posodobitve', 1
ponovno konfiguriraj s preglasitvijo
pojdi

2. Bazo podatkov preklopite v obnovitveni način

spremeni bazo podatkov EMERGENCY, SINGLE_USER

3. Izvajamo testiranje baze podatkov:

dbcc checkdb('db_name', REPAIR_ALLOW_DATA_LOSS)

4. Zapustite bazo podatkov iz obnovitvenega načina:

spremeni bazo podatkov ONLINE, MULTI_USER

5. Načeloma, če ste prepričani, da je s samo bazo vse v redu, vam ni treba narediti točk 2-4. Nato izvedemo dve poizvedbi v profilerju SQL:

izbriši iz konfiguracije, kjer FileName = 'commit'
izbriši iz konfiguracije, kjer FileName = 'dbStruFinal'

Ti zapisi so odgovorni za dinamično posodabljanje - ni se vam treba bati, da bi jih izbrisali.

V delujočih različicah podatkovnih baz poizvedbe:

izberite * iz konfiguracije WHERE FileName = 'commit'

izberite * iz konfiguracije WHERE FileName = 'dbStruFinal'

bo prazna.

6. vrnite nastavitve:

sp_configure 'dovoli posodobitve', 0
pojdi

7. Po tem nam je uspelo zagnati konfigurator in baza je začela delovati.

Prav tako lahko baza začne delovati po odstranitvi prve zastavice.

Peskovnik

oblast 18. september 2013 ob 15:24

1C, obnovitev konfiguracije informacijske baze z uporabo MS SQL

Nekoč sem naletel na težavo: pri posodabljanju konfiguracije iz repozitorija je prišlo do napake in 1C se je zaprl.

Kot se je kasneje izkazalo, je bil konfiguracijski pomnilnik uničen, pri posodabljanju konfiguracije pa je bila iz pomnilnika izbrisana tudi konfiguracija baze podatkov. Podobna napaka se je pojavila že prej med dinamičnimi posodobitvami informacijske varnosti.

Ker Ta težava se je pojavila več kot enkrat in odločil sem se, da delim možnost zdravljenja.

Ko ste naslednjič zagnali konfigurator, se je pojavila napaka: “Pozor!!! Med posodabljanjem podatkov po zadnjem prestrukturiranju je prišlo do napake. Naj ponovim posodobitev? Če je odgovor pritrdilen, prejmemo sporočilo: »Zaznana je bila operacija shranjevanja nepopolne konfiguracije. Če želite nadaljevati z delom, morate dokončati operacijo«, po kateri se aplikacija zapre.

Pri analizi tega problema je bilo najdenih več rešitev problema, vsaka rešitev deluje v različnih primerih.

1. možnost (če imate varnostno kopijo SQL s kopijo z enako konfiguracijo):

Razmesti se kopija informacijske varnosti in izvede se naslednja zahteva:
UPORABITE GO DELETE FROM .. GO VSTAVITE V .. ​​IZBERITE * FROM .. GO
V tem primeru se tabela, v kateri je shranjena konfiguracija informacijske varnosti, ponovno napolni. Po tej operaciji je priporočljivo preizkusiti in popraviti informacijsko varnost.

2. možnost (če ni varnostne kopije):

Ta možnost je bila obravnavana kot zadnja slama. Ker konfiguracija je bila v razvoju in so malo pozabili na varnostno kopiranje, zanašajoč se na shranjevanje.
V bazi podatkov sta dva zapisa izbrisana iz tabele “Config” z vrednostjo v stolpcu “FileName” - dbStruFinal in commit

Izvede se naslednja poizvedba:
UPORABITE GO DELETE FROM. WHERE FileName = "dbStruFinal" GO DELETE FROM . WHERE FileName = "commit" GO
Nenavadno je, da osnova oživi.

Oznake: 1C Enterprise 8.2, SQL, obnovitev konfiguracije

Ta članek ni predmet komentiranja, ker njegov avtor še ni polnopravničlan skupnosti. Avtorja boste lahko kontaktirali šele, ko bo prejel