it-swarm.asia

وضع SQL Server 2008 R2 (المشتبه فيه) - كيفية الإصلاح؟

لدي قاعدة بيانات SQL Server 2008 R2 في وضع المشتبه به. حاولت إصلاحه بتشغيل هذا الاستعلام:

EXEC sp_resetstatus ‘yourDBname’;
ALTER DATABASE yourDBname SET EMERGENCY
DBCC checkdb(’yourDBname’)
ALTER DATABASE yourDBname SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CheckDB (’yourDBname’, REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE yourDBname SET MULTI_USER

لكن ناتج الإصلاح كان هذه الرسالة:

Warning: You must recover this database prior to access.
Msg 8921, Level 16, State 1, Line 5
Check terminated. A failure was detected while collecting facts. Possibly tempdb out of space or a system table is inconsistent. Check previous errors.
Warning: The log for database 'ServeDB' has been rebuilt. Transactional consistency has been lost. The RESTORE chain was broken, and the server no longer 
has context on the previous log files, so you will need to know what they were. You should run DBCC CHECKDB to validate physical consistency. The database has 
been put in dbo-only mode. When you are ready to make the database available for use, you will need to reset database options and delete any extra log files.
Msg 8921, Level 16, State 1, Line 9
Check terminated. A failure was detected while collecting facts. Possibly tempdb out of space or a system table is inconsistent. Check previous errors.

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

5
Vytas999

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

ومع ذلك ، فإن هذا لا ينقل جميع الإجراءات المخزنة ، والعروض ، والوظائف ، وما إلى ذلك. لدي نسخة من مقارنة SQL لـ RedGate (والتي أوصي بها بشدة لأي شخص يعمل مع مخططات SQL بشكل منتظم) والتي تعاملت مع كل ترحيل البنية. لذلك جعلت العملية غير مؤلمة إلى حد ما. لدى RedGate نسخة تجريبية لمدة 14 يومًا على برنامجهم إذا كنت بحاجة إلى استخدامه.

إذا كانت لديك جداول فقط ، أو كمية صغيرة من الإجراءات ، المشاهدات ، وما إلى ذلك ، يمكنك استخدام وظيفة "إنشاء نصوص برمجية" في SSMS لإنشاء نصوص برمجية لهذه العناصر ، ثم تشغيلها على قاعدة بياناتك الجديدة.

مقارنة RedGate SQL: http://www.red-gate.com/products/sql-development/sql-compare/

5
AJ Piscitelli

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

ثم قم باستعادة قاعدة بياناتك من نسخة احتياطية - ولكن تأكد من تشغيل DBCC CHECKDB على هذا النسخ الاحتياطي للتأكد من أنها ليست تالفة.

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

7
Mark S. Rasmussen

هل جربت ما يوصي به بول راندال؟ إنشاء ، فصل ، إعادة إرفاق ، وإصلاح قاعدة بيانات مشبوهة

  1. إنشاء قاعدة بيانات وهمية جديدة بنفس تخطيط الملف وأقرب ما يمكن من أحجام الملفات لقاعدة البيانات المنفصلة
  2. إيقاف تشغيل SQL Server
  3. مبادلة ملفات قاعدة البيانات الفاسدة
  4. أعد تشغيل SQL Server
  5. استخدم إصلاح وضع الطوارئ
6
Carol Baker West