یک خطای حیاتی در 1c رخ داد. خطای تبدیل پایگاه اطلاعاتی C، بازیابی پیکربندی پایگاه اطلاعاتی با استفاده از MS SQL

هنگام کار در 1C: Enterprise، ممکن است پیام زیر ظاهر شود: "برای کار با نسخه جدید 1C: Enterprise، پایگاه اطلاعات باید تبدیل شود." چرا این پنجره ظاهر می شود و چگونه می توانم خطا را برطرف کنم؟

در بیشتر موارد، دلیل ظاهر شدن پنجره، انتقال اخیر برنامه از نسخه قدیمی پلت فرم به نسخه جدیدتر است. در پلتفرم های مختلف پایگاه اطلاع رسانی 1Cبه شیوه خود شکل می گیرد و ترکیب دیگری به خود می گیرد. تنها کاری که باید انجام شود این است که پایگاه داده (ساختار آن مطابق با پلتفرم قدیمی است) به جدیدترین فرمت تبدیل شود.

تبدیل پایگاه داده

این روش ساده است، با این حال، توصیه می شود ابتدا یک نسخه پشتیبان از پایگاه داده ایجاد کنید تا در هنگام تبدیل خطایی رخ دهد (به عنوان مثال، کامپیوتر خاموش می شود و در نتیجه پایگاه اطلاع رسانی 1C، مانند خود برنامه، ممکن است آسیب ببیند). سپس الگوریتم اقدامات زیر را اعمال کنید:

  • پایگاه داده را در حالت پیکربندی باز کنید.
  • پیامی خواهید دید که از شما می خواهد پایگاه اطلاعات را تبدیل کنید. تأیید را کلیک کنید؛

  • پیکربندی را ببندید.

پایگاه داده را باز کنید - باید بدون مشکل شروع شود. اگر پنجره خطا پس از تبدیل همچنان ظاهر می شود، می توانید روش را دوباره امتحان کنید. اگر این کمکی نکرد، باید با یک برنامه نویس 1C تماس بگیرید. گاهی اوقات ممکن است برنامه در حین انجام عملیات مسدود شود. فعلا نیازی به هیچ اقدامی نیست.

مهم! پایگاه اطلاع رسانی 1Cتبدیل شده توسط آخرین نسخه برنامه را نمی توان در نسخه های قبلی باز کرد.

زمینه

ما نیاز به ایجاد یک ثبت اطلاعات جدید "MessageTrackingLog" داشتیم. به پیکربندی اضافه شد، داده ها بارگیری شد. سپس کار بهینه سازی آمد. مجبور شدم ساختار ثبت را تغییر دهم. اما آنجا نبود!

اینجا همه چیز روشن است. رکوردها غیر منحصر به فرد شده اند، باید آنها را حذف کنید!

ساده ترین راه این است:

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

با استفاده از این روش، رجیستر را در 1C خیلی سریع پاک می کنیم (اما این نیز اشتباه ما خواهد بود).

خطا

به نظر می رسد که رجیستر خالی است و می توانید 1C را به روز کنید. من نمی خواهم شما را غافلگیر کنم، اما دوباره یک خطا وجود دارد:


خطا نشان دهنده چیست:

یک خطای حیاتی در طول فرآیند به‌روزرسانی پایگاه اطلاعات رخ داد
به خاطر اینکه:
تلاش برای درج یک مقدار غیر منحصر به فرد در یک شاخص منحصر به فرد:
Microsoft SQL Server Native Client 11.0: دستور CREATE UNIQUE INDEX خاتمه یافت زیرا یک کلید تکراری برای نام شی "dbo._InfoRgChngR34546NG" و نام فهرست "_InfoR34546_ByNodeMsg_RNTSRRRRRRNG" پیدا شد. مقدار کلید تکراری (0x00000011,d7, , Sep 27 4015 10:22 PM, 768404,00,00,00,00,00,00).
HRESULT=80040E2F، SQLSrvr: SQLSTATE=23000، حالت=1، شدت=10، بومی=1505، خط=1

توضیح

بیایید ساختار SQL را درک کنیم. ما یک ثبت نام داریم "MessageTrackingLog"، در SQL در جدول قرار دارد " _InfoR34546". شما می توانید این را با استفاده از پردازش ویژه یا روش "poke" بررسی کنید (لازم نیست این کار را انجام دهیم زیرا نام جدول قبلاً در متن خطا مشخص شده است).

حالا من توضیح می دهم که چه اتفاقی افتاده است. وقتی داده ها را در رجیستر بارگذاری کردیم، در SQL به جدول ختم شد" _InfoR34546". وقتی جدول را با کد 1C پاک کردیم، این داده ها از جدول حذف شد" _InfoR34546"، اما آنها در جدول کپی شدند" _InfoRgChngR34546". این مشکل شد.

راه حل

برای حل این مشکل، باید جدول SQL "_InfoRgChngR34546" را پاک کنیم.

من با استفاده از مثال "Microsoft SQL Server Management Studio" به شما خواهم گفت. بریم به " مدیریت استودیو". پایگاه داده ما را پیدا کنید، تب جداول را باز کنید، روی هر کدام کلیک کنید و روی دکمه "پرس و جو جدید" کلیک کنید: اکنون پرس و جو را تایپ می کنیم.

جدول کوتاه "_InfoRgChngR34546"

ممکن است میز دیگری داشته باشید! فراموش نکن!

و execute را فشار دهید یا "F5" را فشار دهید. این چیزی است که نتیجه باید باشد:

تمام است، اکنون می توانید با خیال راحت 1C را به روز کنید و هیچ خطایی وجود نخواهد داشت!

ما به یک سرور جدید منتقل شدیم. SQL و 1C را اجرا می کند. نسبت به قدیمی ها خیلی خنک تر بود. و تست Gilev نیز این را تایید کرد: در برابر 10-15 در سرورهای قدیمی، 39 داد. بنابراین، بلافاصله پس از خرید، پایگاه داده را منتقل کردیم و شروع به کار کردیم.

اما در مقطعی مشکلی پیش آمد - کاربران شروع به شکایت از کندی کار کردند. تنظیمات خاصی را برای سرور و سرویس ها انجام دادیم (که موضوع یک پست جداگانه است) و تصمیم گرفتیم سرور را راه اندازی مجدد کنیم، خوشبختانه سرعت راه اندازی مجدد 2 دقیقه بود (در سرورهای دیگر تا 10 بود). پس از این، هنگام ورود به 1C، پیام زیر را دریافت می کنیم:

"توجه!!! هنگام به‌روزرسانی داده‌ها پس از آخرین بازسازی، خطایی روی داد. آیا باید آپدیت را تکرار کنم؟ "نه واقعا"

پس از کلیک بر روی "بله" موارد زیر ظاهر می شود:

«عملیات ذخیره پیکربندی ناقص شناسایی شد. برای ادامه باید عملیات را کامل کنید."

اولین کاری که تصمیم گرفتم انجام دهم CHECKDB در Managment Studio بود - بعد از 2 ساعت انتظار (بانک اطلاعاتی 500 گیگابایت) - همه چیز اوکی بود.

من اطلاعاتی را در اینترنت پیدا کردم که همان خطا در هنگام به روز رسانی پویا رخ می دهد.

راه حل های ارائه شده به صورت آنلاین فورا کمک نکردند، اما همراه با اقدامات دیگر نتیجه دادند. پس کاری که من کردم:

راه حل:

  1. آنچه برای راه حل های شبکه از دست رفته بود:

sp_configure "اجازه به روز رسانی"، 1
پیکربندی مجدد با لغو
برو

2. پایگاه داده را در حالت بازیابی قرار دهید

تغییر مجموعه پایگاه داده EMERGENCY، SINGLE_USER

3. ما آزمایش پایگاه داده را انجام می دهیم:

dbcc checkdb('db_name', REPAIR_ALLOW_DATA_LOSS)

4. خروج از پایگاه داده از حالت بازیابی:

تغییر مجموعه پایگاه داده ONLINE، MULTI_USER

5. در اصل، اگر مطمئن هستید که همه چیز با خود بیس اوکی است، لازم نیست نقاط 2-4 را انجام دهید. بعد، ما دو پرس و جو را در پروفایلر SQL اجرا می کنیم:

حذف از پیکربندی که در آن FileName = 'commit'
حذف از پیکربندی که در آن FileName = 'dbStruFinal'

این رکوردها مسئول به روز رسانی پویا هستند - لازم نیست از حذف آنها بترسید.

در نسخه های کاری پرس و جوهای پایگاه داده:

* از پیکربندی WHERE FileName = 'commit' را انتخاب کنید

* را از پیکربندی انتخاب کنید WHERE FileName = 'dbStruFinal'

خالی خواهد بود

6- تنظیمات را برگردانید:

sp_configure 'اجازه به روز رسانی'، 0
برو

7. پس از این، ما موفق شدیم پیکربندی را راه اندازی کنیم و پایگاه داده شروع به کار کرد.

همچنین پایه می تواند پس از برداشتن اولین پرچم شروع به کار کند.

جعبه شنی

قدرت سپتامبر 18, 2013 در 03:24 ب.ظ

1C، بازیابی پیکربندی پایگاه اطلاعاتی با استفاده از MS SQL

در یک زمان با مشکلی مواجه شدم: هنگام به روز رسانی پیکربندی از مخزن، یک شکست رخ داد و 1C بسته شد.

همانطور که بعدا مشخص شد، ذخیره سازی پیکربندی از بین رفت و هنگام به روز رسانی پیکربندی، پیکربندی پایگاه داده نیز از ذخیره سازی حذف شد. یک خطای مشابه قبل از به روز رسانی پویا امنیت اطلاعات رخ داده است.

زیرا این مشکل بیش از یک بار به وجود آمده است و من تصمیم گرفتم یک گزینه درمانی را به اشتراک بگذارم.

دفعه بعد که پیکربندی را راه اندازی کردید، یک خطا ظاهر شد: "توجه!!! هنگام به‌روزرسانی داده‌ها پس از آخرین بازسازی، خطایی روی داد. آیا باید آپدیت را تکرار کنم؟ اگر پاسخ مثبت است، این پیام را دریافت می کنیم: «عملیات ذخیره سازی ناقص پیکربندی شناسایی شد. برای ادامه کار، باید عملیات را کامل کنید” پس از آن برنامه بسته می شود.

هنگام تجزیه و تحلیل این مشکل، چندین راه حل برای مشکل پیدا شد که هر راه حل در موارد مختلف کار می کند.

گزینه 1 (اگر یک نسخه پشتیبان SQL با یک کپی با پیکربندی یکسان دارید):

یک کپی از امنیت اطلاعات مستقر شده و درخواست زیر اجرا می شود:
از GO DELETE FROM استفاده کنید.. GO INSERT INTO.. SELECT * FROM.. GO
در این حالت جدولی که پیکربندی امنیت اطلاعات در آن ذخیره شده است دوباره پر می شود. توصیه می شود پس از این عملیات امنیت اطلاعات را تست و اصلاح کنید.

گزینه 2 (در صورت عدم وجود نسخه پشتیبان):

این گزینه به عنوان آخرین نی تبدیل شد. زیرا پیکربندی در حال توسعه بود و آنها با اتکا به فضای ذخیره سازی، کمی پشتیبان را فراموش کردند.
در پایگاه داده، دو رکورد از جدول "Config" با مقدار موجود در ستون "FileName" - dbStruFinal حذف می شود و commit می شود.

کوئری زیر اجرا می شود:
از GO DELETE FROM استفاده کنید. WHERE FileName = "dbStruFinal" برو DELETE FROM. WHERE FileName = "commit" GO
به اندازه کافی عجیب، پایه زنده می شود.

برچسب‌ها: 1C Enterprise 8.2، SQL، بازیابی پیکربندی

این مقاله قابل اظهار نظر نیست زیرا نویسنده آن هنوز اظهار نظر نکرده است تمام عیارعضو جامعه فقط پس از دریافت نویسنده می توانید با او تماس بگیرید