ملف قاعدة البيانات الرئيسي (MDF) هو الملف الرئيسي لقاعدة بيانات خادم MS SQL الذي يخزن جميع البيانات، بما في ذلك العروض، والجداول، وإجراءات التخزين، والمفاتيح الخارجية، والمفاتيح الرئيسية. في بعض الأحيان، عند فتح ملف MDF، قد تواجه مشكلة حيث لا يمكن فتح قاعدة بيانات خادم SQL وتواجه خطأ، مثل الذي يأتي:
- خطأ SQL Server 5171: MDF ليس ملف قاعدة بيانات رئيسي
- تعذر فتح الملف xxxxx.mdf. خطأ نظام التشغيل 5: (الوصول مرفوض)”
- معرف الحدث 824: اكتشف SQL Server خطأ مدعوم على أساس التناسق اللوجي
- Msg 8114، المستوى 16، الحالة 5، السطر 2: خطأ في تحويل نوع البيانات varchar إلى رقمي
تحدث مثل هذه الأخطاء عادةً عندما تكون هناك فساد في ملف MDF. في هذه المقالة، سنشرح الأسباب المحتملة وراء فساد ملفات MDF ونوضح كيفية إصلاح ملفات MDF التالفة وحل المشكلة.
أسباب الفساد في ملف MDF
هناك أسباب مختلفة قد تؤدي إلى الفساد في ملف قاعدة بيانات SQL Server (MDF). وفيما يلي بعض الأسباب الشائعة:
تعطل MS SQL Server أو النظام
قد يتعطل خادم MS SQL Server أو النظام بسبب مشاكل في نظام التشغيل أو الأجهزة أو البرمجيات. إذا تم تعطل الخادم أو النظام أثناء العمل على ملف MDF، فقد يتسبب ذلك في تلف أو فساد الملف.
إغلاق نظام مفاجئ
يمكن أن يؤدي انقطاع الكهرباء المفاجئ أو إيقاف تشغيل النظام قسراً أثناء تشغيل SQL Server إلى تلف ملف MDF المخزن على نظامك.
هجمات البرامج الضارة أو الفيروسات
يمكن أن تتسبب البرامج الضارة أو الفيروسات أيضًا في تلف ملفات MDF وجعلها غير قابلة للوصول. عادة ما يحدث ذلك عندما لا يحتوي نظامك على برنامج لحماية الفيروسات أو البرامج الضارة.
مشاكل في محرك التخزين
يمكن أن تتسبب القطاعات التالفة على محرك التخزين أو أخطاء نظام الملفات في تلف ملفات قاعدة بيانات SQL. إذا كان محرك التخزين تالفًا، فقد يتسبب أيضًا في تلف ملفات MDF.
طرق لحل مشكلة “لا يمكن فتح قاعدة البيانات” بسبب تلف ملف MDF
إذا كان ملف MDF الخاص بك تالفًا، يمكنك اتباع الطرق المذكورة أدناه لإصلاح واستعادة ملف MDF التالف، وبالتالي حل مشكلة “لا يمكن فتح قاعدة البيانات” في SQL Server.
الطريقة 1: استعادة ملف MDF من النسخة الاحتياطية
إذا كنت قد أنشأت نسخة احتياطية من ملف MDF الخاص بك، يمكنك استعادة الملف من النسخة الاحتياطية. ولكن قبل الاستعادة، تحتاج إلى التحقق مما إذا كانت النسخة الاحتياطية كاملة وقابلة للقراءة. لهذا، يمكنك استخدام الأمر RESTORE VERIFY ONLY. إذا أظهر هذا الأمر رسالة نجاح، يمكنك المتابعة لاستعادة النسخة الاحتياطية. لهذا، استخدم الأمر Transact SQL أدناه:
BACKUP DATABASE [AdventureWorks2019] TO DISK = N’C:\backups\AdventureWorks2019.bak’ WITH NOFORMAT, NOINIT, NAME = N’AdventureWorks2019-Full Database Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
بدلاً من ذلك، يمكنك استخدام استوديو إدارة خادم SQL (SSMS) لـ استعادة النسخة الاحتياطية.
الطريقة 2: استخدم أمر DBCC CHECKDB
إذا كانت النسخة الاحتياطية غير محدثة أو كانت هناك مشكلة أثناء استعادة ملف النسخة الاحتياطية، يمكنك استخدام أمر DBCC CHECKDB لإصلاح ملف MDF التالف. لإصلاح ملف قاعدة البيانات، تحتاج إلى التأكد من أن لديك حقوق المسؤول على قاعدة البيانات. قبل الإصلاح، اضبط قاعدة البيانات على وضع المستخدم المفرد باستخدام الأمر أدناه:
ALTER DATABASE Dbtesting SET SINGLE_USER
إذا كنت غير قادر على ضبط قاعدة البيانات على وضع SINGLE_USER
، فتأكد من أن خيار AUTO_UPDATE_STATISTICS_ASYNC مضبوط على OFF
.
بعد ذلك، قم بتشغيل الأمر DBCC CHECKDB
كما هو موضح أدناه لإصلاح ملف قاعدة البيانات (MDF):
DBCC CHECKDB (N ’Dbtesting’, REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS, NO_INFOMSGS
GO
عند إصلاح قاعدة البيانات، اضبطها على وضع MULTI_USER
مرة أخرى باستخدام الأمر أدناه:
ALTER DATABASE Dbtesting SET MULTI_USER
ملاحظة: يمكن أن تساعدك أمر DBCC CHECKDB
في إصلاح ملف MDF. ومع ذلك، أثناء إصلاح الملف، قد يتم إلغاء تخصيص الصفحات أو الصفوف، مما قد يؤدي إلى فقدان البيانات.
الطريقة 3: استخدام أداة إصلاح SQL احترافية
قد يؤدي إصلاح قاعدة بيانات SQL باستخدام أمر DBCC CHECKDB
مع خيار REPAIR_ALLOW_DATA_LOSS
إلى فقدان البيانات. لتجنب فقدان البيانات، يمكنك استخدام برنامج إصلاح MS SQL قوي، مثل Stellar Repair for MS SQL. يمكن لهذا البرنامج إصلاح ملفات MDF التالفة واستعادة جميع كائنات الملف، مثل المفاتيح الأساسية، والجداول، والمشغلات، والعروض، إلخ، دون تغيير الهيكل الأصلي. يحتفظ البرنامج ببيانات الملف المُصلح في ملف MDF جديد وأشكال أخرى متنوعة، مثل CSV وHTML وXLS. تدعم الأداة ملفات قاعدة البيانات SQL (MDF وNDF) التي تم إنشاؤها على أنظمة ويندوز ولينكس.
للاستنتاج
يمكن أن تحدث مشكلة “لا يمكن فتح قاعدة البيانات” في MS SQL Server بسبب الفساد في ملف MDF. لإصلاح هذه المشكلة، أسهل طريقة هي استعادة ملف MDF من النسخة الاحتياطية الأخيرة. إذا كانت النسخة الاحتياطية قديمة أو لا تعمل، يمكنك استخدام أمر DBCC CHECKDB
لإصلاح ملف MDF التالف. إذا فشل أمر DBCC CHECKDB
في إصلاح قاعدة البيانات، فاستخدم أداة إصلاح SQL قوية، مثل Stellar Repair for MS SQL. يمكنها إصلاح ملفات MDF التالفة واستعادة جميع البيانات إلى ملف MDF جديد مع سلامة كاملة. يمكنك تثبيت النسخة المجانية من Stellar Repair for MS SQL لفحص ملف MDF التالف ومعاينة البيانات القابلة للاسترداد.
Source:
https://dzone.com/articles/resolve-sql-server-database-cannot-be-opened-mdf-issue