it-swarm.asia

كيف يمكنني استعادة بعض السجلات المحذوفة؟

لقد حذفت عن طريق الخطأ حوالي 2000000 سجل من جدول SQL Server 2008 بعيد. الخادم لا يمنحني حق الوصول إلى ملفات النسخ الاحتياطي من جانب الخادم.

هل هناك أي طريقة لاستعادة هذه السجلات؟

49
user755

هل قاعدة البيانات الخاصة بك في وضع الاسترداد الكامل؟

  • إذا كانت الإجابة بنعم ، فهل تقوم بعمل نسخ احتياطية من سجل المعاملات؟

    • إذا كانت الإجابة بنعم ، هل لديك أداة نسخ احتياطي مثل Quest LiteSpeed ​​أو Red Gate SQL Backup أو Idera SQLSafe؟
      • إذا كانت الإجابة بنعم ، يمكن لهذه الأدوات المساعدة إلغاء حذف الكائنات من ملفات النسخ الاحتياطي (بما في ذلك الملفات الكاملة وسجلات المعاملات) - ولكن شرح كيفية استخدام هذه الأشياء خارج نطاق ما يمكنني القيام به هنا. اتصل بالبائع للحصول على التعليمات.
      • إذا لم يكن الأمر كذلك ، قم باستعادة سجلات النسخ الاحتياطي والمعاملات الكاملة كقاعدة بيانات باسم مختلف. (لا تستبدل قاعدة البيانات الموجودة.) ستتمكن من الحصول على نسخة تصل إلى ثانيتين من الكائن قبل حدوث الحذف ، ولكن ستحتاج إلى استخدام جزء stopat من أمر الاستعادة لتحديد متى تتوقف عن استعادة الأوامر. يجب أن تتوقف قبل أن يحدث الحذف.
    • إذا لم يكن الأمر كذلك ، فانتقل إلى نسخة من أداة قارئ السجلات المساعدة مثل Quest LiteSpeed ​​أو Apex SQL Log. يمكن لهذه الأدوات المساعدة الاتصال بخادم قاعدة البيانات وفحص ملف السجل ومساعدتك في التراجع عن المعاملات. لست متأكدًا مما إذا كانت الإصدارات التجريبية ستعمل ، ولكن الإصدارات المدفوعة ستعمل بالتأكيد.
  • إذا كان الجواب بلا (ليس في وضع الاسترداد الكامل) ، فاستعد آخر نسخة احتياطية كاملة كقاعدة بيانات باسم مختلف. (لا تستبدل قاعدة البيانات التي لديك بالفعل.) من هناك ، ستتمكن من استعادة أي سجلات كانت متصلة بالإنترنت في وقت النسخ الاحتياطي ، ولكنك ستفقد كل التغييرات منذ ذلك الحين.

118
Brent Ozar

يحتفظ SQL Server بسجلات لكل سجل محذوف. يمكنك الاستعلام عن هذه السجلات عبر fn_dblog وظيفة خادم SQL.

SELECT [RowLog Contents 0] 
FROM   sys.fn_dblog(NULL, NULL) 
WHERE  
       AllocUnitName = 'dbo.TableName'        
   AND Context IN ( 'LCX_MARK_AS_GHOST', 'LCX_HEAP' )        
   AND Operation in ( 'LOP_DELETE_ROWS' )   
;

ولكن هذا السجل بتنسيق Hex وتحتاج إلى تحويل تنسيق Hex إلى بياناتك الفعلية.

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

http://raresql.com/2011/10/22/how-to-recover-deleted-data-from-sql-sever/

30
user1059637

للأسف ، لن نتمكن من مساعدتك بدون المزيد من المعلومات. ولكن من سؤالك ، أرى أنك قمت بحذف ما يبدو أنه مليوني سجل من قاعدة بياناتك. على الأرجح لا يمكنك استرداد هذه المعلومات ، إلا إذا كان لديك تسجيل كامل في قاعدة بياناتك وقمت بشراء بعض الأدوات المحددة للغاية.

إذا كان بإمكانك أن تصف بمزيد من التفصيل ما تعتقد أنك قمت به ، ولماذا تشعر أنه لا يمكنك استعادة السجلات ، ويمكنك وصف تنظيم قاعدة البيانات الخاصة بك ، فقد نساعدك أكثر قليلاً.

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

22
jcolebrand