سؤال

عند استخدام Clean Read (قراءة ملتزمة) ... هل سيتم تدخل استعلام محدد عن طريق استعلام DML (إدراج ، تحديث ، حذف)؟ إذا كانت الإجابة بنعم ، هل يمكنك تقديم بعض الحالات. أنا أستخدم SQL Server 2005.

ما هو احتمال أن يكون الاستعلام أدناه هو العائد على بيانات غير صحيحة. لا يستخدم الاستعلام أي ارتباطات ، بل إنه يجلب بيانات من جدول واحد يعتمد على بعض Creteria.

Select PracticeCode, AccountNo, ProcCd, Modifier , ChargeDos, Paid as Amt, CreatedDate,
       case When Paid > 0 then 'P' 
              When Paid = 0 and WrittenOff = DueAmt then 'A'
              Else 'O' 
       End as Status
     From Trn_Postings
     Where CreatedDate between @StartDateTime and @EndDateTime
                  and ManualOverride not in ('F','S','X','G','O')
هل كانت مفيدة؟

المحلول

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

انظر وثائق Microsoft على تعيين مستوى عزل المعاملة للحصول على تفاصيل إضافية و منشور المدونة هذا للحصول على مثال جيد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top