SQL Server / دليل حلول تحريري
تمييز التعارض 1205 من مهلة القفل
صنّف الانتظار واحفظ أدلة القراءة واختر التنظيف والإعادة وفق نتيجة المعاملة.
قاعدة معرفة للقراءة فقط · بلا تعليقات عامة
تعرّف على الأعراض
يعني 1205 اختيار SQL Server ضحية لدورة والتراجع عن معاملتها. ويعني 1222 انتهاء مهلة طلب قفل، ولا يثبت نتيجة التراجع الكامل نفسها.
مهلة أمر العميل حد مستقل للموفر. الطلب البطيء والجلسة المحجوبة والدورة ليست تشخيصات متطابقة.
افهم الأسباب المحتملة
- تتضمن الدورة ملكية وطلبات دائرية، غالباً من ترتيب وصول متعاكس أو مسارات واسعة. في الحجب العادي ينتظر طالب مالكاً قد يتابع.
- تطيل المعاملات الطويلة والوصول غير الانتقائي والمعاملات المفتوحة بعد الفشل الحجب. تحد المهلة الصبر ولا تزيل الملكية أو تضمن تنظيف المعاملة.
سجّل حد الفشل الدقيق
احفظ الرقم والوقت بـ UTC ومفتاح العملية وهوية الأمر وهل أكد المشغل التراجع. أبق القيم والنص في تشخيص مقيد عند الحاجة. لا تعد كل مهلة بسياسة التعارض؛ فقد يترك الإلغاء عملاً يحتاج تنظيفاً، وقد يترك فقد الاتصال قرب COMMIT نتيجة العمل مجهولة.
افحص الانتظار الحالي دون تدخل
تستطيع جلسة تشخيص مخولة قراءة الطلبات التالية. الناتج لقطة متغيرة لا تاريخ الفشل. وقد يكون رأس الحجب نائماً بمعاملة مفتوحة فلا يظهر في الطلبات النشطة. افحص سياق الجلسة والمعاملة بالدليل المعتمد. لا تكشف LOCK_TIMEOUT للجلسة الحالية إعداد جلسة أخرى.
SELECT @@LOCK_TIMEOUT AS this_session_lock_timeout_ms;
SELECT session_id,blocking_session_id,wait_type,wait_time,wait_resource
FROM sys.dm_exec_requests
WHERE session_id<>@@SPID
ORDER BY blocking_session_id,session_id;
يتطلب صلاحيات العرض الموثقة؛ ولا تنهي الشيفرة حاجباً ولا تغير مهلة.
أثبت الدورة بالرسم
اطلب من مسؤول مخول دليل xml_deadlock_report القائم الذي تلتقطه system_health عادة. تتبع كل مالك ومورد مطلوب ونمط قفل حتى إغلاق الدورة، وقيّد النص الملتقط. لا يثبت غياب الدليل غياب التعارض لقصر الاحتفاظ. لا تنشئ تتبعاً واسعاً كثيفاً ولا تعِد الدورة على خادم تطبيق مضبوط.
طبق علاجاً واعياً بالمعاملة
لدورة ترتيب وصول مثبتة وحّد الترتيب وقصّر المعاملة وافحص الفهارس إن مسّت صفوفاً زائدة. بعد تراجع 1205 المؤكد أعد معاملة العمل المؤهلة كاملة بمحاولات محدودة وتأخير. ولـ 1222 أو الإلغاء ليفحص الحد المالك الحالة وينظف قبل الاستخدام. ولتثبيت مجهول صالح بالمفتاح الدائم الأصلي. لا تكرر دفعاً خارجياً لمجرد فشل أمر SQL.
تحقق من نجاح الإصلاح
تحقق بتداخل مضبوط في مختبر معزول ثم قارن معدل الدورات ومدة الحجب والتأخر والنتائج المكررة. أكد عدم بقاء معاملة مفتوحة بعد كل مسار خطأ. لا تثبت مهلة أطول أو تجربة أهدأ إصلاح الدورة.
امنع تكرار المشكلة
- وثّق ملكية المعاملة وترتيب الوصول والتنظيف بعد المهلة والإعادة المحدودة ومنع التكرار. حافظ على الالتقاط التشخيصي وحدد مالك حادثة يراجع الرسوم ويحمي الأدلة الحساسة.