مؤشرات الخطأ
اطّلع على السيناريو التالي:
-
لديك قاعده بيانات تحتوي علي الخيارات ALLOW_SNAPSHOT_ISOLATIONوالREAD_COMMITTED_SNAPSHOT ممكنة في Microsoft SQL server 2008 R2.
-
تقوم بتشغيل جمله SELECT التي تحتوي علي تلميحات تابلوك و أوبدلوك مقابل جدول في قاعده البيانات.
-
يتم تضمين جمله select في تران بدءصريح ، ولكن لا يتم تنفيذ التزام بالتران .
-
توجد اثنين من الاستعلامات التي بدات باستخدام تلميحات الاستعلام نفسها في المعاملة الصريحة.
في هذا السيناريو ، عند التزام بالاستعلام الأول ، سيتم تجاوز أحد الاستعلامات الأخرى.
السبب
تحدث هذه المشكلة نظرا لان SQL Server لا يعلم بشكل غير صحيح في اي من السيناريوهات التالية:
-
عند تمكين الALLOW_SNAPSHOT_ISOLATIONوالREAD_COMMITTED_SNAPSHOT لقاعده بيانات ، قد يتم الإبلاغ عن عده استعلامات مقابل المعاملة نفسها علي انها ديادلوكيد بشكل غير صحيح عندما يتم إكمال اي منها.
-
عند تمكين ALLOW_SNAPSHOT_ISOTION واستخدام التلميحات تابلوك و أوبدلوك ، تاخذ جمله SELECT الثانية والثالثة تامين إيكس بالهدف من التحويل إلى X. إيكس تامين الإغلاق ديدلوكينج عندما يتم اجراء محاولة للتحويل إلى X.
-
عند تعطيل ALLOW_SNAPSHOT_ISOLATION ، سيحصل الاستعلامين الثاني والثالث علي سته اقفال. في هذه الحالة ، عند تحويل القفل الست إلى X ، فهذا هو سيناريو الحظر فقط ، وليس حاله توقف تام.
الحل
تم تصحيح المشكلة أولا في التحديث التراكمي التالي ل SQL Server. بعد تطبيق الإصلاح العاجل ، يقوم SQL Server بحل المشكلة عن طريق التسجيل إذا تمت مصادفه تلميح قراءه أو تلميح نولوك لقاعده البيانات والاستعلام. يتم استخدام هذه المعلومات لتحديد نوع التامين الصحيح للتعامل مع الموقف بطريقه صحيحه ، بدلا من الإبلاغ عن حاله التوقف عن الصحة بشكل غير صحيح.
تحديث تراكمي 11 ل SQL Server 2008 R2 SP2 /en-us/help/2926028
يحتوي كل تحديث تراكمي جديد ل SQL Server علي كل الإصلاحات العاجلة وكل تصحيحات الأمان التي تم تضمينها في التحديث التراكمي السابق. اطلع علي آخر التحديثات التراكمية ل SQL Server:
الحالة
أقرت Microsoft أن هذه المشكلة تحدث في منتجات Microsoft المسردة في المقطع "تنطبق على".