it-swarm.asia

يعرض SQL Server قاعدة البيانات في الاسترداد

اليوم ، بعد انقطاع التيار الكهربائي ، تظهر قاعدة بيانات واحدة (مع الاسترداد: ممتلئ) "In Recovery" في SSMS. وبالتالي:

myDatabase (قيد الاسترداد) (حالة قاعدة البيانات: الاسترداد ، إيقاف التشغيل)

بعد الانتهاء ، تظهر قاعدة البيانات اسم myDatabase بدون "(في الاسترداد)" "عملية الاسترداد". اعتقدت أنه تم حل المشكلة ، لكنها لم تكن كذلك.

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

لقد انتظرت حتى انتهاء "عملية الاسترداد" ثم قمت بإزالة قاعدة البيانات من دون اتصال وإعادتها عبر الإنترنت.

قمت بإعادة تشغيل الخادم ، وأعدت تشغيل الكمبيوتر ، وعندما كان تطبيقي يعمل ، يظهر النص الإضافي مرة أخرى. في سجلات SQL Server تظهر الرسالة "بدء تشغيل قاعدة البيانات" myDatabase "" عدة مرات. يبدو أن قاعدة البيانات تعمل لأنني أستطيع إدراج البيانات ، لكن الدولة تُظهر أن شيئًا ما يحدث.

سجل الخادم لا يظهر أي شيء مثير للاهتمام. الشيء غير الطبيعي الوحيد هو أن لدي 30 إدخالات "بدء تشغيل قاعدة بيانات myDatabase".

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

لقد قمت بتثبيت نسخة جديدة من SQL Server ، وقمت بوضع قاعدة البيانات القديمة "myDatabase" عليها. لا تزال المشكلة تحدث.

عند تشغيل هذا الاستعلام:

SELECT databasepropertyex('nyDatabase', 'STATUS')

يظهر التعافي ، على الإنترنت ، المشتبه فيه والعودة إلى الإنترنت ثم يتعافى وهلم جرا.

23
Andres

إجابة مجتمع ويكي غادر في الأصل كتحرير للسؤال من قبل مؤلفه

كانت المشكلة أنه تم تعيين خاصية قاعدة البيانات AutoClose.

كان الحل هو ضبط AutoClose على خطأ.

2
user126897

لست متأكدًا مما إذا كان هذا سيساعد في حل المشكلة ، ولكن يمكنك تجربتها.

يركض:

RESTORE DATABASE YourDatabase WITH RECOVERY

تحقق مما إذا كان ما سبق يخرج قاعدة البيانات من وضع الاسترداد. إذا لم يحدث ذلك فقد تكون المشكلة شيء آخر.

هل يمكنك تجربة الأمر أدناه ومعرفة ما إذا كانت قاعدة البيانات تالفة؟

DBCC CHECKDB ('YourDBname') WITH NO_INFOMSGS, ALL_ERRORMSGS

إذا اكتشف تلفًا ، فقد تحتاج إلى إصلاح قاعدة البيانات باستخدام DBCC CHECKDB

16
RK Kuppala

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

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

6
Ben Thul