فتح ملف LDF وعرض محتوياته

يتم تعيين مجموعة من ملفات نظام التشغيل لكل قاعدة بيانات SQL Server يتم إنشاؤها. تخزن هذه الملفات البيانات وسجلات الإجراءات. يتم استخدام الملفات المنفصلة من خلال قاعدة بيانات واحدة، وهذه البيانات وسجلات الإجراءات لا تختلط أبداً في نفس الملف، حيث يتم تخزين البيانات في ملف MDF، بينما يتم تخزين كافة الإجراءات والتعديلات على قاعدة بيانات SQL Server في ملف LDF – ملف سجل الإجراءات الذي هو عنصر أساسي في قاعدة البيانات. من الناحية النظرية، ملف سجل الإجراءات هوعبارة عن سلسلة من سجلات الإجراءات.وفعلياً، يتم تخزين هذه الإجراءات في واحد أو مجموعة من ملفات LDF المادية التي تشكل هذه السجلات.

والهدف الرئيسي من ملف LDF هو تقديم مفهوم ACID – الوحدة ، التناسق، العزل، والمتانة.

  • الوحدة: إذا فشل جزء من هذا الإجراء ، كل الإجراء سوف يفشل ، ولن يتغير شيء في قاعدة البيانات.
  • التناسق: أي إجراء يجب أن يغير قاعدة البيانات من حالة صالحة إلى أخرى.
  • العزل: تنفيذ الإجراءات المتزامنة ينقل قاعدة البيانات إلى حالة كما لو أن الإجراءات أجريت بشكل متسلسل، واحدا تلو الآخر.
  • المتانة: إذا تم تأكيد تنفيذ الإجراء، فإنه يبقى كذلك، بغض النظرعن وجود أخطاء، فصل الطاقة، أو التعطل.

يخزن ملف LDF معلومات كافية للتراجع أو إعادة التعديلات ، أو إعادة قاعدة البيانات إلى نقطة محددة من الزمن. ونظراً للتنوع في متطلبات التدقيق واستعادة البيانات ، تبقى هناك الحاجة لفتح ملف LDF وعرض محتوياته. لكن عملية عرض محتويات ملف LDF ليست مهمة سهلة.

هناك العديد من الدالات والأوامر في SQL Server (مثل fn_dblog, fn_dump_dblog و DBCC PAGE) التي يمكن أن توفر لنا طريقة لعرض محتويات ملف LDF. ومع ذلك ، يتطلب استخدامها معرفة كبيرة بلغة T-SQL ، ومعظمها غير موثّقة ، والنتيجة التي تقدمها يصعب تحويلها إلى صيغة سهلة للقراءة البشرية.

فيما يلي أمثلة على طرق عرض محتويات ملف LDF باستخدام أوامر ودالات SQL Server :

  1. المثال التالي يستخدم دالة fn_dblog لقراءة ملف سجل إجراءات فعال ، والنتيجة 129 عمود (7 منها فقط تظهر في الصورة):

    Using fn_dblog to read an online transaction log

  2. يتم استخدام الدالة fn_dump_dblog لقراءة النسخة الإحتياطية أوالنسخة الإحتياطية المضغوطة من سجل الإجراءات. والنتيجة مشابهة للمثال السابق:

    Using fn_dump_dblog to open LDF file

    لسوء الحظ لا يوجد توثيق رسمي متوفر للدالات fn_dblog و fn_dump_dblog. ولترجمة الأعمدة ، يجب أن يكون عندك دراية بالتركيب الداخلي لها ، نوع البيانات ، الدلالات والعدد الإجمالي لها في البيانات الأولية.

  3. يستخدم الأمر DBCC PAGE لقراءة محتويات ملفات قاعدة البيانات MDF و LDF الفعالة . تظهر النتيجة على صيغة الستة عشرية ، والتي بدون محرر الصيغة الستة عشرية سيكون من الصعب عليك تفسيرها.

    Using DBCC PAGE to read MDF and LDF files

استخدام تطبيق ApexSQL Log لقراءة ملف LDF

يقوم برنامج قراءة سجلات الإجراءات ApexSQL Log بقراءة سجلات الإجراءات الفعالة ، سجلات الإجراءات المنفصلة والنسخة الإحتياطية من سجل الإجراءات العادية منها والمضغوطة في SQL Server.
كبرنامج لعرض محتويات LDF ، فإنه يركز على العمليات (DDL و DML ، بمجموع 45 عملية)، وما هي التغيرات التي نتجت عن هذه العمليات.

إضافة إلى إظهار محتويات ملف LDF ، يقدم برنامج ApexSQL Log بعض الخصائص الإضافية مثل إنشاء برامج نصية للإعادة أو التراجع، تاريخ لعمليات DML وغيرها الكثير.

لفتح وعرض ملف LDF باستخدام تطبيق ApexSQL Log:

  1. اشبك على قاعدة البيانات التي ينتمي لها ملف LDF الذي تريد عرضه:

    Connecting to the database that the LDF file belongs to

  2. الخطوة الثانية هي بإضافة نسخة احتياطية من ملف LDF و/ أو ملفات LDF منفصلة تحتوي على المعلومات التي تريد عرضها. تأكد من أنها تشكل سلسلة إحراءات متكاملة. سلسلة الإجراءات هي سلسلة مستمرة من النسخ الإحتياطية لسجل الإجراءات. تبدأ بنسخة احتياطية كاملة لقاعدة البيانات تتبعها سلسلة من نسخ الإجراءات الإحتياطية وصولاً إلى نقطة التدقيق والمراجعة. واذا تم كسر هذه السلسة ، فقط الإجراء حتى آخر نسخة إجراءات احتياطية قبل المفقودة يمكن عرضها بشكل كامل (على سبيل المثال: المخطط مع اسم العنصر ، أو التاريخ الأولي لها).

    على العكس من عمليات الإدخال والحذف ، والتي يتم تسجيلها بشكل كامل في ملفات LDF، فإن عملية التعديل يتم تسجيلها بشكل مختصر مبسط ، فقط ما تم تعديله يتم تسجيله، دون تسجيل القيمة السابقة والحديثة. فعند تسجيل عملية التعديل ، لا يقوم SQL Server بتسجيل السجل قبل وبعد التعديل كاملاً، لكن فقط التغير التدريجي الذي حدث عليه. على سبيل المثال، اذا تم تعديل كلمة LOG إلى BLOG ، فإن SQL Server سوف يقوم فقط بتسجيل الحرف الجديد B في المؤشر رقم 0.هذا يعتبر كافيا لضمان مبدأ ACID المذكور سابقاً ، لكنه غير كافي لمعرفة حالة السجل قبل وبعد التغير. لذلك ، لفهم التغيير الذي حصل ،يقوم تطبيق ApexSQL Log بإعادة بناء السياق الذي أدى إلى هذا التغير من سجلات الإجراءات في النسخة الإحتياطية والنسخة الفعالة.

    لتحقيق ذلك، فإن هذا التطبيق يقوم بنشرعدة تقنيات إعادة بناء أولية متكاملة ، أحداها هي تقنية إعادة البناء باستخدام سلسلة سجل الإجراءات الكاملة. فعند تحديد سلسلة سجل الإجراءات الكاملة ، مع آخر نسخة اختياطية كاملة وتكميلية، يستطيع عندها تطبيق ApexSQL Log إعادة بناء سياق التعديل ابتداء من القيمة التي تم تعديلها من آخر نسخة احتياطية وكل العمليات التي أجريت بعدها على هذه القيمة. فإذا عدنا إلى المثال السابق، سوف يجد تطبيق ApexSQL Log أن قيمة السجل منذ آخر نسخة احتياطية هي LOG ، ومن خلال القيمة المخزنة في مؤشر رقم 0 بأن القيمة تعدلت بإضافة الحرف B ، تعدلت القيمة إلى القيمة الحالية BLOG.

    علاوة على ذلك، فإن سلسلة السجلات الكاملة تجعل قراءة الإجراءات سريعة باستخدام عدة ملفات احتياطية من سجل الإجراءات بدلاً من ملف سجل الإجراءات الفعال الذي يكون أكبر بعدة مرات من هذه النسخ الإحتياطية. إضافة إلى ذلك ، فإن ملف LDF المنفصل يمكن أن يستخدم كمصدر قراءة أيضاً – يقوم ApexSQL Log بمراجعة كافة المصادر المرفقة حتى يقدم معلومات دقيقة حول الإجراءات المحفوطة في ملفات LDF.

    للقيام بذلك، انقر على زر Add في خطوة اختيار سجلات SQL للتحليل:

  3. يمكنك من خلال تبويب نُسَخ قاعدة البيانات الإحتياطية تحديد النسخة الإحتياطية الكاملة لقاعدة البيانات والذي سيستخدم كنقطة بداية لسلسلة الإجراءات المتكاملة.

    Selecting database backups to be analyzed

  4. من خلال قسم النطاق الزمني في خطوة خيارات إعداد التصفية ، حدد الإطار الزمني الذي حدثت فيه العملية التي تهتم بتتبعها. هذه الخطوة سوف تسرّع العملية عن طريق تضييق نطاق العمليات المطلوبة.

    Filter setup - open LDF file

  5. عند الإنتهاء من كل هذه الإعدادات ، اضغط على زر Open لتبدأ عملية قراءة ملفات LDF.
    كل الإجراءات ، اعتماداً على الملفات المرفقة ، والإعدادات المسبقة ، سوف تظهر في شبكة نتائج ApexSQL Log الرئيسية عندما تنتهي العملية.

استنتاجات حول قاري ملفات LDF

كما هو موضح مسبقاً ، هناك طرق كثيرة لفتح ملف LDF ، ومعظمها يقوم بذلك. لكن الصعوبة تكمن في الحصول على صيغة سهلة لقراءة هذه المعلومات واستخدامها.

من جهة أخرى، إضافة إلى مجرد فتح ملف LDF ، فإن ApexSQL Log يضيف قيمة لهذه العملية . حيث أنك ستتمكن من قراءة سجل الإجراءات لمعرفة نوع العملية، مخطط وإسم العنصرالذي تأثر بالعملية، الوقت الذي نفّذت فيه العملية ، اسم المستخدم الذي قام بهذه العملية ، وغير ذلك.

المزايا الرئيسية لمعالجة ملف LDF باستخدام تطبيق ApexSQL Log إضافة إلى مجرد فتحه هو أن بإمكانه:

  • إظهار معلومات سهلة القراءة عن طريق ربط وتفسير البيانات (تحويل البيانات الستة عشرية والثنائية) من الأعمدة ال 129 الأصلية.
  • ربط سلسلة ملفات LDF معا في ملف واحد.
  • دمج الملفات الفعّالة والنسخ الإحتياطية (للبيانات وسجلات الإجراءات) لتوفير تفاصيل إضافية عن كل إجراء.
  • إعادة بناء السياق بشكل كامل لعملية التعديل، يتضمن القيمة قبل وبعد التعديل.
  • عرض كامل التغيرات الأولية لعمليات DML إضافة إلى تسجيل الدخول للمستخدم الذي قام بالعملية ووقت حدوث التغير.
  • تصفية المعلومات التي ستتم قراءتها للمحافظة على المصادر المتاحة وتسريع العملية.
  • تتبع تعريفات الجداول القديمة المحذوفة مما يسمح بإعادة البيانات من الجداول التي لم تعد موجودة.
  • معالجة وعرض محتويات ملفات LDF دون الحاجة إلى خبرة في برمجة T-SQL.

وما بعد القراءة، فإن ApexSQL Log يقدم:

  • الترتيب في شبكة نتائج، فلاتر تصفية و خيارات بحث متقدمة تتيح لك التعامل مع البيانات بطرق لا تعد.
  • إضافة إلى تقديم المخرجات في شبكة، يستطيع ApexSQL Log تحويل البيانات إلى الصيغ CSV, HTML ، XML أو SQL ، ويساعدك على إدارة تصدير النتائج وحفظها لتحليلها لاحقاً.
  • نشاء برنامج SQL نصي للتراجع أو إعادة إجراءات SQL Server ، والذي يكون مفيداً عندما تحتاج إلى استرجاع البيانات التي تم فقدها ، أو التراجع عن التغيرات على البيانات والمخططات ، دون إرجاع كامل قاعدة البيانات.
  • توثيق رسمي لكافة الخصائص.
  • دعم فني وغيره.

مؤلف Ivan Stankovic

مترجم Ahmad Yaseen

January 19, 2016