الأعراض
افترض انك قمت بتثبيت Microsoft SQL Server 2014 أو 2016 أو 2017. قد تواجه مشكله واحده أو أكثر من المشاكل التالية:
-
يظهر مثيل SQL Server بدون استجابه ويحدث الخطا "لم يتم الييلدينج مجدول". قد تحتاج إلى أعاده تشغيل الخادم لاسترداده.
-
قد يستغرق إكمال المعاملة وقتا طويلا. في معظم الحالات ، سيسمح أعاده تشغيل المثيل لقاعده البيانات بالاسترداد بسرعة أكبر من العودة. لاحظ ان هناك العديد من الأسباب التي قد يستغرقها التراجع وقتا طويلا للإكمال ، راجع القسم "مزيد من المعلومات" أدناه للحصول علي تفاصيل حول مراقبه التراجع قبل محاولة أعاده التشغيل.
-
قد تري الانتظار العالي علي سبينلوكس مثل الSOS_OBJECT_STORE.
الحل
تم تصحيح هذه المشكلة في التحديثات التراكمية التالية ل SQL Server:
يحتوي كل تحديث تراكمي جديد ل SQL Server علي كل الإصلاحات العاجلة وكل تصحيحات الأمان التي تم تضمينها في التحديث التراكمي السابق. اطلع علي آخر التحديثات التراكمية ل SQL Server:
آخر تحديث تراكمي ل SQL Server 2017
معلومات حزمه الخدمة ل SQL Server
تم تصحيح هذا التحديث في حزمه الخدمة التالية ل SQL Server:
حزم الخدمة تراكمية. تحتوي كل حزمه خدمه جديده علي كل التصحيحات الموجودة في حزم الخدمات السابقة ، مع اي إصلاحات جديده. توصياتنا بتطبيق أحدث حزمه خدمه والتحديث التراكمي الأخير لحزمه الخدمة هذه. لست بحاجه إلى تثبيت حزمه خدمه سابقه قبل تثبيت أحدث حزمه خدمه. استخدم الجدول 1 في المقالة التالية للعثور علي مزيد من المعلومات حول أحدث حزم الخدمة والتحديث التراكمي الأخير.
كيفيه تحديد الإصدار والإصدار ومستوي تحديث SQL Server ومكوناته
مزيد من المعلومات
هناك العديد من الأسباب التي يمكن ان يستغرقها العودة وقتا طويلا مثل معامله طويلة التشغيل ، وعدد كبير من الفلفس في ملف سجل المعاملات ، بطء في الإدخال/الإخراج. من أجل التحقق من ان المشكلة المذكورة في هذه المقالة هي السبب الأساسي للعودة إلى الحالة الاجله ، نوصي باستخدام التقنيات التالية لمراقبه تقدم عمليه التراجع:
-
من sys.dm_exec_requests، حدد الsession_id التي تم تعيين الأمر الخاص بها إلى "قتل/ROLLBACK" وتاكد من ان جلسة العمل أككومولاتينج الإدخال والوقت التي تشير إلى التقدم. إذا لم يتغير الإدخال/الإخراج ، فقد يكون من الاشاره إلى انك تواجه المشكلة المذكورة في هذه المقالة.
-
استعلام sys.dm_tran_database_transactions لتحديد الحالة الحالية للتراجع باستخدام استعلام كالتالي:
حدد جيتداتي () ككورينتيمي ، database_transaction_next_undo_lsn ، database_transaction_begin_lsn ، t.transaction_id ، database_transaction_begin_time ، database_transaction_log_record_count ، db_name (t.database_id)
من sys.dm_tran_database_transactions t
الانضمام إلى sys.dm_exec_requests s علي t.transaction_id = s.transaction_id
حيث t.database_id = db_id (' <اسم قاعده البيانات') و s.session_id =<Session_id تنفيذ عمليه التراجع>
ملاحظه:
في الاستعلام أعلاه ،
database_transaction_next_undo_lsn هو لسن السجل التالي الذي تريد التراجع عنه. database_transaction_begin_lsn هو لسن لسجل بدء المعاملة في سجل المعاملات.
database_transaction_next_undo_lsn يجب ان يقل كل لقطه من هذا الاستعلام. سيتم إكمال التراجع بنجاح عندما يصل الdatabase_transaction_next_undo_lsn إلى database_transaction_begin_lsn.
الهدف هنا هو الحصول علي بعض اللقطات للاستعلام السابق داخل فاصل زمني محدد مسبقا ، ثم استخدم دلتا اللسنس التي تمت معالجتها في database_transaction_next_undo_lsn ضمن هذه الفاصل الزمني وإكمال الوقت المستغرق لتقدير الوقت الذي سيستغرقه الdatabase_transaction_next_undo_lsn للوصول إلى الdatabase_transaction_begin_lsn.
إذا كانت قيمه العودة إلى الحالة التالية ديسينته بين كل لقطه ، فنحن نقترح ان يتم السماح بإكمال التراجع بنفسه من دون أعاده تشغيل مثيل SQL Server.
راجع المقالات التالية للحصول علي مزيد من المعلومات حول الاسترداد بوقت طويل:
الحالة
أقرت Microsoft أن هذه المشكلة تحدث في منتجات Microsoft المسردة في المقطع "تنطبق على".
المراجع
تعرف علي المصطلحاتالتي تستخدمها Microsoft لوصف تحديثات البرامج.