اكتشف متى تم عمل نسخة احتياطية لقاعدة البيانات

StackOverflow https://stackoverflow.com/questions/486685

سؤال

يا قوم،

افترض أنك تتلقى نسخة احتياطية غير متصلة من قاعدة بيانات SQL Server (2005 أو 2008) وقمت باستعادتها إلى مثيل SQL Server الخاص بك.

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

أيه أفكار؟بالتأكيد - يمكنني إلقاء نظرة على طابع التاريخ/الوقت للملف *.bak - ولكن هل يمكنني معرفة ذلك بدقة أكبر من داخل SQL Server (استوديو الإدارة)؟؟

شكرًا!مارك

هل كانت مفيدة؟

المحلول

ويمكنك محاولة RESTORE HEADERONLY على ملف النسخ الاحتياطي، كما هو موضح <لأ href = "http://msdn.microsoft.com/en-us/library/aa238455(SQL.80).aspx" يختلط = "نوفولو noreferrer" > هنا

والتي ينبغي أن تعطيك المعلومات التي تبحث عنها.

نصائح أخرى

إذا كان لديك حق الوصول إلى مثيل SQL Server حيث تم تشغيل النسخة الاحتياطية في الأصل، فيجب أن تكون قادرًا على الاستعلام msdb:

SELECT backup_set_id, backup_start_date, backup_finish_date
FROM  msdb.dbo.backupset  
WHERE database_name = 'MyDBname' AND type = 'D' 

هناك عدة جداول تتعلق بمجموعات النسخ الاحتياطي:

  • ملف النسخ الاحتياطي - يحتوي على صف واحد لكل ملف بيانات أو ملف سجل تم نسخه احتياطيًا
  • Backupmediafamily - يحتوي على صف واحد لكل عائلة وسائط
  • مجموعة وسائط النسخ الاحتياطي - تحتوي على صف واحد لكل مجموعة وسائط نسخ احتياطي
  • مجموعة النسخ الاحتياطي - تحتوي على صف واحد لكل مجموعة نسخ احتياطي

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

وA متأخرا بعض الشيء، ولكن ينبغي أن تكون ما تريد.

وكل الكتابة إلى قاعدة البيانات هو دخول في ملف السجل. التي لديها LSN. هذا يجب أن يتم تخزين في النسخ الاحتياطي للسجل يعيد على الأقل.

وهكذا، وكيفية تطابق LSN إلى التاريخ والوقت؟

SELECT TOP 5 [End Time] AS BringFirst, *
FROM ::fn_dblog (NULL, NULL)
WHERE [End Time] IS NOT NULL
ORDER BY BringFirst DESC

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

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

وإذا كان هذا ليس هو الحال - هل يمكن أن لا تزال تكتب لنفسك مشغل وتطبيق ذلك على كل طاولة / عمود اللازمة والقيام بتسجيل نفسك

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top