Gabim: "Ndodhi një gabim kritik gjatë procesit të përditësimit të bazës së informacionit." Gabim në konvertimin e bazës së informacionit C, në rivendosjen e konfigurimit të bazës së informacionit duke përdorur MS SQL

25.06.2023

Kur punoni në 1C: Enterprise, mund të shfaqet mesazhi i mëposhtëm: "Për të punuar me version i ri 1C: Ndërmarrjet duhet t'i nënshtrohen transformimit bazë informacioni" Pse shfaqet kjo dritare dhe si mund ta zgjidh gabimin?

Në shumicën e rasteve, arsyeja e shfaqjes së dritares është një kalim i fundit i programit nga version i vjetëruar platforma në një më të re. Në platforma të ndryshme baza e informacionit 1C formohet në mënyrën e vet dhe merr një përbërje tjetër. Gjithçka që duhet bërë është konvertimi i bazës së të dhënave (struktura e së cilës korrespondon me platformën e vjetëruar) në formatin më të ri.

Konvertimi i bazës së të dhënave

Kjo procedurë është e thjeshtë, megjithatë, së pari rekomandohet të krijohet kopje rezervë bazës së të dhënave, në rast se ndodh një gabim gjatë konvertimit (për shembull, kompjuteri fiket, duke rezultuar në baza e informacionit 1C, si vetë programi, mund të dëmtohet). Pastaj aplikoni algoritmin e mëposhtëm të veprimeve:

  • Hapni bazën e të dhënave në modalitetin e konfiguruesit;
  • Do të shihni një mesazh që ju kërkon të konvertoni bazën e informacionit. Kliko konfirmimin;

  • Mbyllni konfiguruesin.

Hapni bazën e të dhënave - duhet të fillojë pa probleme. Nëse dritarja e gabimit vazhdon të shfaqet pas konvertimit, mund ta provoni përsëri procedurën. Nëse kjo nuk ju ndihmon, duhet të kontaktoni një programues 1C. Ndonjëherë programi mund të ngrijë gjatë kryerjes së një operacioni. Në këtë moment nuk ka nevojë të ndërmerret asnjë veprim.

E rëndësishme! Baza e informacionit 1C, i konvertuar Versioni i fundit programet nuk mund të hapen në versionet e mëparshme.

Sandbox

autoriteti 18 shtator 2013 në orën 15:24

1C, restaurimi i konfigurimit të bazës së informacionit duke përdorur MS SQL

Në një kohë hasa një problem: kur përditësova konfigurimin nga depoja, ndodhi një dështim dhe 1C u mbyll.

Siç doli më vonë, ruajtja e konfigurimit u shkatërrua dhe gjatë përditësimit të konfigurimit, konfigurimi i bazës së të dhënave u fshi gjithashtu nga ruajtja. Një gabim i ngjashëm ka ndodhur më parë gjatë përditësimeve dinamike të sigurisë së informacionit.

Sepse ky problemështë shfaqur më shumë se një herë dhe ka vendosur të ndajë një opsion trajtimi.

Herën tjetër që nisët konfiguruesin, u shfaq një gabim: "Kujdes!!! Ndodhi një gabim gjatë përditësimit të të dhënave pas ristrukturimit të fundit. A duhet ta përsëris përditësimin? Nëse përgjigja është po, marrim mesazhin: "U zbulua një operacion i paplotë i ruajtjes së konfigurimit. Për të vazhduar punën, duhet të përfundoni operacionin” pas së cilës aplikacioni mbyllet.

Gjatë analizimit të këtij problemi, u gjetën disa zgjidhje për problemin, secila zgjidhje funksionon në raste të ndryshme.

Opsioni 1 (nëse keni një kopje rezervë SQL me një kopje me një konfigurim identik):

Një kopje e sigurisë së informacionit është vendosur dhe kërkesa e mëposhtme është ekzekutuar:
PËRDOR SHKO FSHI NGA .. SHKO INSERT NE .. SELECT * FROM .. SHKO
Në këtë rast, tabela në të cilën ruhet konfigurimi i sigurisë së informacionit rimbushet. Këshillohet që të testoni dhe korrigjoni sigurinë e informacionit pas këtij operacioni.

Opsioni 2 (nëse nuk ka rezervë):

TE këtë opsion u kthye në kashtën e fundit. Sepse konfigurimi ishte në zhvillim dhe ata harruan pak rezervimin, duke u mbështetur në ruajtjen.
Në bazën e të dhënave, dy regjistrime fshihen nga tabela "Config" nga vlera në kolonën "FileName" - dbStruFinal dhe commit

Kërkesa e mëposhtme është ekzekutuar:
PËRDORNI SHKO FSHI NGA . WHERE FileName = "dbStruFinal" SHKO FSHI NGA . WHERE Filename = "commit" SHKO
Mjaft e çuditshme, baza vjen në jetë.

Etiketa: 1C Enterprise 8.2, SQL, restaurimi i konfigurimit

Ky artikull nuk është objekt komenti, pasi autori i tij nuk është ende një anëtar i plotë i komunitetit. Ju do të mund të kontaktoni autorin vetëm pasi ai të marrë

Ne u transferuam në një server të ri. Ai drejton SQL dhe 1C. Në krahasim me të vjetrat ishte shumë më e freskët. Dhe testi i Gilev gjithashtu konfirmoi këtë: kundrejt 10-15 në serverët e vjetër, ai dha 39. Prandaj, menjëherë pas blerjes, transferuam bazën e të dhënave dhe filluam të punojmë.

Por në një moment diçka shkoi keq - përdoruesit filluan të ankohen punë e ngadaltë. Ne bëmë disa cilësime për serverin dhe shërbimet (të cilat janë temë e një postimi të veçantë) dhe vendosëm të rindiznim serverin, për fat të mirë shpejtësia e rindezjes ishte 2 minuta (në serverët e tjerë ishte deri në 10). Pas kësaj, kur hyjmë në 1C marrim mesazhin e mëposhtëm:

"Vëmendje!!! Ndodhi një gabim gjatë përditësimit të të dhënave pas ristrukturimit të fundit. A duhet ta përsëris përditësimin? "Jo ne te vertete"

Pasi të klikoni "Po" shfaqet sa vijon:

"U zbulua një operacion jo i plotë i ruajtjes së konfigurimit. Duhet të përfundoni operacionin për të vazhduar."

Gjëja e parë që vendosa të bëj ishte CHECKDB në Managment Studio - pas 2 orësh pritje (500 GB bazë të dhënash) - gjithçka ishte në rregull.

Kam gjetur informacion në internet që i njëjti gabim ndodh gjatë përditësimit dinamik.

Zgjidhjet e propozuara online nuk ndihmuan menjëherë, por së bashku me veprimet e tjera dhanë rezultat. Pra, çfarë bëra:

Zgjidhja:

  1. Çfarë mungonte për zgjidhjet nga rrjeti:

sp_configure 'lejo përditësimet', 1
rikonfiguro me anashkalimin
shko

2. Vendoseni bazën e të dhënave në modalitetin e rimëkëmbjes

ndrysho grupin e bazës së të dhënave EMERGENCY, SINGLE_USER

3. Ne kryejmë testimin e bazës së të dhënave:

dbcc checkdb ('emri_db', REPAIR_ALLOW_DATA_LOSS)

4. Hiqni bazën e të dhënave nga mënyra e rikuperimit:

ndrysho grupin e bazës së të dhënave ONLINE, MULTI_USER

5. Në parim, nëse jeni i sigurt se gjithçka është në rregull me vetë bazën, atëherë nuk keni pse të bëni pikat 2-4. Më pas, ne ekzekutojmë dy pyetje në profiluesin SQL:

fshij nga konfigurimi ku emri i skedarit = 'kommit'
fshij nga konfigurimi ku emri i skedarit = 'dbStruFinal'

Këto të dhëna janë përgjegjëse për përditësimin dinamik - nuk duhet të keni frikë t'i fshini ato.

Në versionet e punës të pyetjeve të bazave të të dhënave:

zgjidhni * nga konfigurimi WHERE Filename = 'commit'

zgjidhni * nga Config WHERE Filename = 'dbStruFinal'

do të jetë bosh.

6. ktheni cilësimet:

sp_configure 'lejo përditësimet', 0
shko

7. Pas kësaj, arritëm të nisnim konfiguruesin dhe baza e të dhënave filloi të funksiononte.

Gjithashtu, baza mund të fillojë të punojë pas heqjes së flamurit të parë.

Sfondi

Na duhej të krijonim një regjistër të ri informacioni "MessageTrackingLog". Shtuar në konfigurim, ngarkoi të dhënat. Pastaj erdhi puna e optimizimit. Më duhej të ndryshoja strukturën e regjistrit. Por nuk ishte aty!

Gjithçka është e qartë këtu. Të dhënat janë bërë jo unike, duhet t'i fshini!

Mënyra më e lehtë është:

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

Duke përdorur këtë metodë, ne do ta pastrojmë regjistrin në 1C shumë shpejt (por ky do të jetë gjithashtu gabimi ynë).

Gabim

Duket se regjistri është bosh, dhe ju mund të përditësoni 1C. Nuk dua t'ju befasoj, por do të ketë përsëri një gabim:


Çfarë përfaqëson gabimi:

Gjatë procesit të përditësimit të bazës së informacionit, a gabim kritik
për arsye të:
Përpjekja për të futur një vlerë jo unike në një indeks unik:
Microsoft SQL Server Klienti Native 11.0: Deklarata CREATE UNIQUE INDEX u mbyll sepse u gjet një çelës dublikatë për emrin e objektit "dbo._InfoRgChngR34546NG" dhe emrin e indeksit "_InfoR34546_ByNodeMsg_RNTSRRRRRRNG". Vlera e dyfishtë e çelësit është (0x00000011,d7, , 27 shtator 4015 22:22, 768404,00,00,00,00,00,00).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, gjendja=1, Ashpërsia=10, vendas=1505, rreshti=1

Shpjegim

Le të kuptojmë strukturën e SQL. Ne kemi një regjistër "MessageTrackingLog", në SQL ndodhet në tabelën " _InfoR34546". Këtë mund ta kontrolloni duke përdorur përpunimin special ose metodën "poke" (nuk duhet ta bëjmë këtë sepse emri i tabelës është treguar tashmë në tekstin e gabimit).

Tani do të shpjegoj se çfarë ndodhi. Kur ngarkuam të dhënat në regjistër, në SQL përfunduan në tabelë" _InfoR34546". Kur pastruam tabelën me kodin në 1C, këto të dhëna u fshinë nga tabela" _InfoR34546", por ato u kopjuan në tabelë" _InfoRgChngR34546". Ky u bë problemi.

Zgjidhje

Për të zgjidhur këtë problem, duhet të pastrojmë tabelën SQL "_InfoRgChngR34546".

Unë do t'ju tregoj duke përdorur shembullin e "Microsoft SQL Server Management Studio". Shkojmë " Studio e menaxhimit". Gjeni bazën tonë të të dhënave, hapni skedën e tabelave, klikoni në cilindo dhe klikoni butonin "Pyetje e re": Tani shkruajmë pyetjen

Shkurto tabelën "_InfoRgChngR34546"

Ju mund të keni një tryezë tjetër! Mos harro!

Dhe shtypni execute ose butonin "F5". Ky duhet të jetë rezultati:

Kjo është ajo, tani mund të përditësoni me siguri 1C dhe nuk do të ketë gabime!