استرداد بيانات SQL من جدول محذوف دون وجود نسخ احتياطية

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

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

بما أن عملية الحذف يتم تسجيلها في سجل الإجراءات، فإنه من الممكن التراجع عن الجملة اذا كانت مضمنة في إجراء نشط. على سبيل المثال، جملة الإستعلام التالية:

DROP TABLE Customer

SELECT *
FROM Customer

ستكون نتيجة تنفيذ الجملة Msg 208, Level 16, State 1 لأن الجدول Customer قد تم حذفه.
ومع ذلك ، في جملة الإستعلام التالية:

BEGIN TRAN 
DROP TABLE Customer

ROLLBACK 
SELECT *
FROM Customer

سترجع هذه الجملة جميع السجلات في جدول Customer لأن جملة الحذف تم التراجع عنها.

ومع ذلك ، إذا الإجراء الذي يحتوي على جملة الحذف غير فعّال، على سبيل المثال قد تم تنفيذه كاملاً، عندها لا يمكن التراجع عن جملة حذف الجدول، وعلى العكس من السابق، لا يمكن استرداد البيانات التي كانت مخزنة فيه. هل هذا يعني أنه لا يمكن استرجاع البيانات التي فقدت نتيجة حذف الجدول اذا لم يكن هناك نسخة احتياطية كاملة لقاعدة البيانات؟

لحسن الحظ الجواب لا. فهنا يأتي دور ApexSQL.

تستخدم أداة ApexSQL Recover لاسترداد البيانات في SQL Server ، التي تم فقدها من خلال عملية حذف بيانات ، حذف جدول أو مسح محتويات الجدول. تقوم هذه الأداة باسترجاع البيانات والعناصر التي تم فقدها نتيجة عمليات الحذف وتسترد البيانات العادية والبيانات الثنائية كبيرة الحجم الفعّالة BLOBعلى شكل ملفات ، مما يجعل منها أداة مثالية لاسترداد البيانات في برمجية SharePoint.

لاسترجاع البيانات التي فقدت نتيجة عملية حذف جدول دون وجود نسخة احتياطية من قاعدة البيانات:

  1. ابدأ برنامج ApexSQL Recover
  2. اختر Recover lost data due to a DROP operation
  3. في خطوة اختيار قاعدة البيانات للإسترجاع :
    • حدد اسم الخادم الذي يحتوي على قاعدة البيانات التي تريد استرداد البيانات منها من خلال القائمة المنسدلة Server
    • حدد نمط صلاحيات الدخول إلى خادم SQL (وتحديد اسم المستخدم مع كلمة السر اذا اخترت SQL Server authentication)
    • حدد اسم قاعدة البيانات التي تحتوي على الجداول المحذوفة من خلال القائمة المنسدلة Database

    انقر التالي Next الآن.

  4. في خطوة (هل توجد مصادر إضافية متوفرة للبيانات؟) اختر No additional transaction logs are available.

  5. في خطوة اختيار إجراء الإسترداد ، اختر Save recovery script to file وحدد مكان حفظ البرنامج النصي الناتج بلغة T-SQL ، والذي سيقوم بإدخال كل البيانات المفقودة عند تنفيذه.

  6. انقر Recover

وتماما مثل ذلك ، ستسترجع بياناتك المفقودة دون وجود ملف نسخة احتياطية واحد.

مترجم Ahmad Yaseen

January 19, 2016