Kritik xatolik yuz berdi 1c. Infobase konvertatsiya xatosi. C, MS SQL yordamida ma'lumotlar bazasi konfiguratsiyasini tiklash

1C: Enterprise da ishlayotganda, quyidagi xabar paydo bo'lishi mumkin: "1C: Enterprise ning yangi versiyasi bilan ishlash uchun ma'lumotlar bazasini o'zgartirish kerak." Nima uchun bu oyna paydo bo'ladi va xatoni qanday hal qilishim mumkin?

Ko'pgina hollarda, oynaning paydo bo'lishining sababi dasturning yaqinda platformaning eskirgan versiyasidan yangisiga o'tishidir. Turli platformalarda 1C ma'lumotlar bazasi o'ziga xos tarzda shakllanadi va boshqa tarkibga ega bo'ladi. Bajarish kerak bo'lgan narsa ma'lumotlar bazasini (tuzilishi eskirgan platformaga mos keladigan) eng yangi formatga aylantirishdir.

Ma'lumotlar bazasini konvertatsiya qilish

Ushbu protsedura oddiy, ammo konvertatsiya paytida xatolik yuz bergan taqdirda birinchi navbatda ma'lumotlar bazasining zaxira nusxasini yaratish tavsiya etiladi (masalan, kompyuter o'chadi, natijada 1C ma'lumotlar bazasi, dasturning o'zi kabi, buzilgan bo'lishi mumkin). Keyin quyidagi harakatlar algoritmini qo'llang:

  • Ma'lumotlar bazasini konfigurator rejimida oching;
  • Siz ma'lumot bazasini o'zgartirishingizni so'ragan xabarni ko'rasiz. Tasdiqlashni bosing;

  • Konfiguratorni yoping.

Ma'lumotlar bazasini oching - u muammosiz boshlanishi kerak. Agar konversiyadan keyin xato oynasi paydo bo'lishda davom etsa, protsedurani qaytadan sinab ko'rishingiz mumkin. Agar bu yordam bermasa, siz 1C dasturchisiga murojaat qilishingiz kerak. Ba'zida dastur operatsiyani bajarishda muzlatib qo'yishi mumkin. Ayni paytda hech qanday chora ko'rishning hojati yo'q.

Muhim! Axborot bazasi 1C dasturning so'nggi versiyasi tomonidan o'zgartirilgan oldingi versiyalarda ochilmaydi.

Fon

Biz yangi "MessageTrackingLog" ma'lumotlar registrini yaratishimiz kerak edi. Konfiguratsiyaga qo'shildi, ma'lumotlar yuklandi. Keyin optimallashtirish ishi keldi. Men ro'yxatga olish tizimini o'zgartirishim kerak edi. Ammo u erda yo'q edi!

Bu erda hamma narsa aniq. Yozuvlar noyob bo'lib qoldi, ularni o'chirishingiz kerak!

Eng oson yo'li:

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

Ushbu usuldan foydalanib, biz 1C da registrni juda tez tozalaymiz (lekin bu ham bizning xatomiz bo'ladi).

Xato

Ro'yxatga olish bo'sh ko'rinadi va siz 1C ni yangilashingiz mumkin. Sizni ajablantirmoqchi emasman, lekin yana xatolik yuz beradi:


Xato nimani anglatadi:

Axborot bazasini yangilash jarayonida jiddiy xatolik yuz berdi
sababli:
Noyob indeksga noyob bo'lmagan qiymatni kiritishga urinish:
Microsoft SQL Server Native Client 11.0: CREATE UNIQUE INDEX bayonoti tugatildi, chunki "dbo._InfoRgChngR34546NG" ob'ekt nomi va "_InfoR34546_ByNodeMsg_RNTSRRRRRNG" indeks nomi uchun dublikat kalit topilgan. Takroriy kalit qiymati (0x00000011,d7, , 27-sentabr 4015 22:22, 768404,00,00,00,00,00,00).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, holat=1, jiddiylik=10, mahalliy=1505, qator=1

Tushuntirish

Keling, SQL tuzilishini tushunaylik. Bizda reestr bor "MessageTrackingLog", SQLda u jadvalda joylashgan " _InfoR34546". Buni maxsus ishlov berish yoki "poke" usuli yordamida tekshirishingiz mumkin (biz buni qilishimiz shart emas, chunki jadval nomi xato matnida allaqachon ko'rsatilgan).

Endi nima bo'lganini tushuntiraman. Biz ma'lumotlarni registrga yuklaganimizda, SQLda u jadvalga tushdi" _InfoR34546". Jadvalni 1C da kod bilan tozalaganimizda, bu ma'lumotlar jadvaldan o'chirildi" _InfoR34546", lekin ular jadvalga ko'chirildi" _InfoRgChngR34546". Bu muammoga aylandi.

Yechim

Ushbu muammoni hal qilish uchun biz "_InfoRgChngR34546" SQL jadvalini tozalashimiz kerak.

Men sizga "Microsoft SQL Server Management Studio" misolidan foydalanib aytaman. ketaylik" Management Studio". Ma'lumotlar bazasini toping, jadvallar yorlig'ini oching, istalganini bosing va "Yangi so'rov" tugmasini bosing: Endi biz so'rovni yozamiz.

"_InfoRgChngR34546" jadvalini qisqartirish

Sizda boshqa stol bo'lishi mumkin! Esdan chiqarma!

Va bajarish yoki "F5" tugmasini bosing. Natija shunday bo'lishi kerak:

Mana, endi siz 1C-ni xavfsiz yangilashingiz mumkin va hech qanday xato bo'lmaydi!

Biz yangi serverga o'tdik. U SQL va 1C bilan ishlaydi. Qadimgilariga qaraganda ancha salqinroq edi. Va Gilevning testi ham buni tasdiqladi: eski serverlarda 10-15 ga qarshi, 39 ni berdi. Shuning uchun, xariddan so'ng darhol ma'lumotlar bazasini o'tkazdik va ishlay boshladik.

Ammo bir nuqtada nimadir noto'g'ri ketdi - foydalanuvchilar sekin ish haqida shikoyat qila boshladilar. Biz server va xizmatlar uchun ma'lum sozlamalarni o'rnatdik (ular alohida post mavzusi) va serverni qayta ishga tushirishga qaror qildik, xayriyatki, qayta yuklash tezligi 2 daqiqani tashkil etdi (boshqa serverlarda u 10 tagacha edi). Shundan so'ng, 1C-ga kirishda biz quyidagi xabarni olamiz:

"Diqqat!!! Oxirgi qayta tuzilishdan keyin ma'lumotlarni yangilashda xatolik yuz berdi. Yangilanishni takrorlashim kerakmi? "Ha yoq"

"Ha" tugmasini bosgandan so'ng quyidagilar paydo bo'ladi:

“Toʻliq boʻlmagan konfiguratsiyani saqlash operatsiyasi aniqlandi. Davom etish uchun operatsiyani bajarishingiz kerak."

Men qilishga qaror qilgan birinchi narsa, Managment Studio'da CHECKDB bo'ldi - 2 soat kutishdan so'ng (500 GB ma'lumotlar bazasi) - hammasi yaxshi bo'ldi.

Men Internetda dinamik yangilash paytida bir xil xatolik yuz bergani haqida ma'lumot topdim.

Onlayn taklif qilingan echimlar darhol yordam bermadi, ammo boshqa harakatlar bilan birgalikda ular o'z natijalarini berdi. Xo'sh, men nima qildim:

Yechim:

  1. Tarmoqdagi yechimlar uchun nima etishmayotgan edi:

sp_configure "yangilanishlarga ruxsat berish", 1
bekor qilish bilan qayta sozlang
ket

2. Ma'lumotlar bazasini tiklash rejimiga o'tkazing

maʼlumotlar bazasi toʻplamini oʻzgartirish EMERGENCY, SINGLE_USER

3. Biz ma'lumotlar bazasini sinovdan o'tkazamiz:

dbcc checkdb('db_name', REPAIR_ALLOW_DATA_LOSS)

4. Ma'lumotlar bazasini tiklash rejimidan chiqing:

ma'lumotlar bazasi to'plamini ONLINE, MULTI_USER o'zgartirish

5. Printsipial jihatdan, agar siz bazaning o'zi bilan hamma narsa yaxshi ekanligiga ishonchingiz komil bo'lsa, unda siz 2-4-bandlarni bajarishingiz shart emas. Keyinchalik, SQL profilerida ikkita so'rovni bajaramiz:

FileName = "majburiy" bo'lgan konfiguratsiyadan o'chirish
FileName = 'dbStruFinal' konfiguratsiyadan o'chirish

Ushbu yozuvlar dinamik yangilanish uchun javobgardir - ularni o'chirishdan qo'rqishingiz shart emas.

Ma'lumotlar bazasi so'rovlarining ishchi versiyalarida:

Config WHERE FileName = 'commit' dan * ni tanlang

Config WHERE FileName = 'dbStruFinal' dan * ni tanlang

bo'sh bo'ladi.

6. sozlamalarni qaytaring:

sp_configure "yangilanishlarga ruxsat berish", 0
ket

7. Shundan so'ng biz konfiguratorni ishga tushirishga muvaffaq bo'ldik va ma'lumotlar bazasi ishlay boshladi.

Bundan tashqari, baza birinchi bayroqni olib tashlaganidan keyin ishlay boshlashi mumkin.

Sandbox

hokimiyat 2013 yil 18 sentyabr, soat 15:24

1C, MS SQL yordamida ma'lumotlar bazasi konfiguratsiyasini tiklash

Bir vaqtlar men muammoga duch keldim: konfiguratsiyani ombordan yangilashda xatolik yuz berdi va 1C yopildi.

Keyinchalik ma'lum bo'lishicha, konfiguratsiya xotirasi yo'q qilingan va konfiguratsiyani yangilashda ma'lumotlar bazasi konfiguratsiyasi ham xotiradan o'chirilgan. Shunga o'xshash xatolik axborot xavfsizligini dinamik yangilash paytida ham sodir bo'lgan.

Chunki Bu muammo bir necha marta paydo bo'ldi va men davolanish variantini baham ko'rishga qaror qildim.

Keyingi safar konfiguratorni ishga tushirganingizda xato paydo bo'ldi: “Diqqat!!! Oxirgi qayta tuzilishdan keyin ma'lumotlarni yangilashda xatolik yuz berdi. Yangilanishni takrorlashim kerakmi? Agar javob ha bo'lsa, biz xabarni olamiz: "Konfiguratsiyani to'liq saqlash operatsiyasi aniqlandi. Ishni davom ettirish uchun siz operatsiyani bajarishingiz kerak, shundan so'ng dastur yopiladi.

Ushbu muammoni tahlil qilishda muammoning bir nechta echimlari topildi, har bir yechim turli holatlarda ishlaydi.

Variant 1 (agar sizda bir xil konfiguratsiyaga ega bo'lgan SQL zaxira nusxasi bo'lsa):

Axborot xavfsizligi nusxasi joylashtiriladi va quyidagi so'rov bajariladi:
FOYDALANISH .. dan o‘chirish.
Bunday holda, axborot xavfsizligi konfiguratsiyasi saqlanadigan jadval qayta to'ldiriladi. Ushbu operatsiyadan keyin axborot xavfsizligini sinab ko'rish va tuzatish tavsiya etiladi.

Variant 2 (agar zaxira bo'lmasa):

Bu variant oxirgi tomchi sifatida aylantirildi. Chunki konfiguratsiya ishlab chiqilmoqda va ular saqlashga tayanib, zaxiralashni biroz unutishdi.
Ma'lumotlar bazasida ikkita yozuv "Config" jadvalidan "FileName" ustunidagi qiymat bo'yicha o'chiriladi - dbStruFinal va commit

Quyidagi so'rov bajariladi:
GO DELETE FROM dan foydalaning. WHERE FileName = "dbStruFinal" dan o'chirish. WHERE FileName = "commit" BO'LADI
G'alati, baza hayotga kiradi.

Teglar: 1C Enterprise 8.2, SQL, konfiguratsiyani tiklash

Ushbu maqola sharhlanmaydi, chunki uning muallifi hali emas to'liq huquqli jamiyat a'zosi. Muallif olgandan keyingina u bilan bog'lanishingiz mumkin bo'ladi