Fel: "Ett kritiskt fel inträffade under uppdateringsprocessen av infobasen." Fel vid konvertering av infobas C, återställning av infobaskonfiguration med MS SQL

25.06.2023

När du arbetar i 1C:Enterprise kan följande meddelande dyka upp: "Att arbeta med ny version 1C:Företag måste genomgå förvandling informationsbas" Varför visas det här fönstret och hur kan jag lösa felet?

I de flesta fall är orsaken till fönstrets utseende en nyligen övergång av programmet från föråldrad version plattformar till en nyare. På olika plattformar informationsbas 1C bildas på sitt sätt och får en annan sammansättning. Allt som behöver göras är att konvertera databasen (vars struktur motsvarar den föråldrade plattformen) till det senaste formatet.

Databaskonvertering

Denna procedur är enkel, men det rekommenderas först att skapa säkerhetskopia databas, om ett fel uppstår under konverteringen (till exempel stängs datorn av, vilket resulterar i informationsbas 1C, liksom själva programmet, kan vara skadat). Använd sedan följande algoritm för åtgärder:

  • Öppna databasen i konfiguratorläge;
  • Du kommer att se ett meddelande som ber dig att konvertera infobasen. Klicka på bekräftelse;

  • Stäng konfiguratorn.

Öppna databasen - den ska starta utan problem. Om felfönstret fortsätter att visas efter konverteringen kan du prova proceduren igen. Om detta inte hjälper måste du kontakta en 1C-programmerare. Ibland kan programmet frysa medan en operation utförs. Det finns ingen anledning att vidta några åtgärder för närvarande.

Viktig! Informationsbas 1C, konverterad senaste versionen program kan inte öppnas på tidigare versioner.

Sandlåda

auktoritet 18 september 2013 klockan 15.24

1C, återställning av infobaskonfiguration med MS SQL

Vid ett tillfälle stötte jag på ett problem: vid uppdatering av konfigurationen från förvaret inträffade ett fel och 1C stängdes.

Som det visade sig senare förstördes konfigurationslagringen och vid uppdatering av konfigurationen raderades även databaskonfigurationen från lagringen. Ett liknande fel inträffade tidigare under dynamiska uppdateringar av informationssäkerhet.

Därför att det här problemet har uppstått mer än en gång och beslutat att dela ett behandlingsalternativ.

Nästa gång du startade konfiguratorn dök ett fel upp: "Obs!!! Ett fel uppstod vid uppdatering av data efter den senaste omstruktureringen. Ska jag upprepa uppdateringen? Om svaret är ja får vi meddelandet: "En ofullständig konfigurationssparningsåtgärd upptäcktes. För att fortsätta arbeta måste du slutföra operationen” varefter applikationen stängs.

Vid analys av detta problem hittades flera lösningar på problemet, varje lösning fungerar i olika fall.

Alternativ 1 (om du har en SQL-säkerhetskopia med en kopia med identisk konfiguration):

En kopia av informationssäkerheten distribueras och följande begäran exekveras:
ANVÄND GÅ DELETE FROM .. GÅ SÄTT IN I .. VÄLJ * FRÅN .. GÅ
I detta fall fylls tabellen i vilken informationssäkerhetskonfigurationen är lagrad på nytt. Det är tillrådligt att testa och korrigera informationssäkerheten efter denna operation.

Alternativ 2 (om det inte finns någon säkerhetskopia):

TILL detta alternativ vände sig till droppen. Därför att konfigurationen var under utveckling och de glömde säkerhetskopieringen lite och förlitade sig på lagring.
I databasen raderas två poster från "Config"-tabellen med värdet i kolumnen "FileName" - dbStruFinal och commit

Följande fråga exekveras:
ANVÄND GO DELETE FROM . WHERE FileName = "dbStruFinal" GO DELETE FROM . WHERE FileName = "commit" GO
Konstigt nog vaknar basen till liv.

Taggar: 1C Enterprise 8.2, SQL, konfigurationsåterställning

Den här artikeln kan inte kommenteras eftersom författaren ännu inte är en fullvärdig medlem av communityn. Du kommer att kunna kontakta författaren först efter att han har tagit emot

Vi flyttade till en ny server. Den kör SQL och 1C. Jämfört med de gamla var det mycket coolare. Och Gilevs test bekräftade också detta: mot 10-15 på de gamla servrarna gav det 39. Därför, direkt efter köpet, överförde vi databasen och började arbeta.

Men någon gång gick något fel - användare började klaga på långsamt arbete. Vi gjorde vissa inställningar för servern och tjänsterna (vilka är ämnet i ett separat inlägg) och bestämde oss för att starta om servern, lyckligtvis var omstartshastigheten 2 minuter (på andra servrar var den upp till 10). Efter detta, när vi loggar in på 1C får vi följande meddelande:

"Uppmärksamhet!!! Ett fel uppstod vid uppdatering av data efter den senaste omstruktureringen. Ska jag upprepa uppdateringen? "Inte riktigt"

Efter att ha klickat på "Ja" visas följande:

"En ofullständig lagringsåtgärd för konfiguration upptäcktes. Du måste slutföra operationen för att fortsätta."

Det första jag bestämde mig för att göra var CHECKDB i Managment Studio - efter 2 timmars väntan (500 GB databas) - var allt OK.

Jag hittade information på Internet om att samma fel inträffar under dynamisk uppdatering.

De lösningar som föreslagits online hjälpte inte direkt, men tillsammans med andra åtgärder gav de resultat. Så vad jag gjorde:

Lösning:

  1. Vad saknades för lösningar från nätverket:

sp_configure 'tillåt uppdateringar', 1
konfigurera om med åsidosättande

2. Sätt databasen i återställningsläge

ändra databasuppsättning EMERGENCY, SINGLE_USER

3. Vi utför databastestning:

dbcc checkdb('db_name', REPAIR_ALLOW_DATA_LOSS)

4. Ta databasen ur återställningsläge:

ändra databasuppsättning ONLINE, MULTI_USER

5. I princip, om du är säker på att allt är ok med själva basen, behöver du inte göra punkterna 2-4. Därefter kör vi två frågor i SQL-profileraren:

radera från config där filnamn = 'commit'
ta bort från config där filnamn = 'dbStruFinal'

Dessa poster är ansvariga för dynamisk uppdatering - du behöver inte vara rädd för att radera dem.

I fungerande versioner av databaserna frågor:

välj * från Config WHERE FileName = 'commit'

välj * från Config WHERE FileName = 'dbStruFinal'

kommer att vara tom.

6. återställ inställningarna:

sp_configure 'tillåt uppdateringar', 0

7. Efter detta lyckades vi starta konfiguratorn och databasen började fungera.

Dessutom kan basen börja fungera efter att den första flaggan tagits bort.

Bakgrund

Vi behövde skapa ett nytt informationsregister "MessageTrackingLog". Lades till i konfigurationen, laddade data. Sedan kom optimeringsarbetet. Jag var tvungen att ändra registerstrukturen. Men det var inte där!

Allt är klart här. Posterna har blivit icke-unika, du måste radera dem!

Det enklaste sättet är:

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

Med den här metoden kommer vi att rensa registret i 1C mycket snabbt (men detta kommer också att vara vårt misstag).

Fel

Det verkar som att registret är tomt och du kan uppdatera 1C. Jag vill inte överraska dig, men det kommer ett fel igen:


Vad betyder felet:

Under uppdateringsprocessen av informationsbasen, a kritiskt fel
Därför att:
Försöker infoga ett icke-unikt värde i ett unikt index:
Microsoft SQL Server Native Client 11.0: CREATE UNIQUE INDEX-satsen avslutades eftersom en dubblettnyckel hittades för objektnamnet "dbo._InfoRgChngR34546NG" och indexnamnet "_InfoR34546_ByNodeMsg_RNTSRRRRRRNG". Dubblettnyckelvärdet är (0x00000011,d7, , 27 september 4015 22:22, 768404,00,00,00,00,00,00).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=10, native=1505, line=1

Förklaring

Låt oss förstå strukturen för SQL. Vi har ett register "MessageTrackingLog", i SQL finns den i tabellen " _InfoR34546". Du kan kontrollera detta med hjälp av speciell bearbetning eller "poke"-metoden (vi behöver inte göra detta eftersom namnet på tabellen redan anges i feltexten).

Nu ska jag förklara vad som hände. När vi laddade in datan i registret hamnade det i SQL i tabellen" _InfoR34546". När vi rensade tabellen med kod i 1C raderades denna data från tabellen" _InfoR34546", men de kopierades till tabellen" _InfoRgChngR34546". Detta blev problemet.

Lösning

För att lösa detta problem måste vi rensa SQL-tabellen "_InfoRgChngR34546".

Jag ska berätta för dig med exemplet "Microsoft SQL Server Management Studio". Låt oss gå till " Management Studio". Hitta vår databas, öppna tabellfliken, klicka på någon och klicka på knappen "Ny fråga": Nu skriver vi frågan

Trunkera tabellen "_InfoRgChngR34546 "

Du kanske har ett annat bord! Glöm inte!

Och tryck på execute eller "F5"-tangenten. Så här ska resultatet bli:

Det är det, nu kan du säkert uppdatera 1C, och det kommer inga fel!