سؤال

لدينا بعض القوائم من البيانات يجري المنال في تطبيقنا عبر كائن SqlCommand تنفيذ استعلام SELECT على قاعدة بيانات SQL Server. نحن لا الإعداد صراحة صفقة على SqlCommand، بدلا من مجرد يمر عليه SqlConnection وتشغيله. هل هي حالة أنه عندما يتم تحديد أي معاملة SQL Server سيتم بدء واستخدام المعاملات الافتراضية مع الافتراضي IsolationLevel من ReadCommitted؟

هل كانت مفيدة؟

المحلول

وSQL Server يمكن العمل بسعادة دون معاملة صريحة. ولكن نعم، وأعتقد أنه هو أساسا قراءة ارتكبت (ما لم يكن، بالطبع، يمكنك إضافة تلميحات إضافية إلى كائنات الاستعلام الخاص بك، مثل UPDLOCK / NOLOCK). يمكنك تحقيق ذلك مع:

DBCC USEROPTIONS

ومما يدل على (وغيرهم):

isolation level read committed

نصائح أخرى

وSQL يخلق المعاملة ضمنيا للبيانات الخاصة بك، وتلتزم هذه الصفقة عند اكتمال البيان. فإن مستوى العزل لهذه الصفقة أن يكون مستوى العزل الحالي، الذي افتراضات إلى القراءة التي ارتكبت. بعض البيانات الكتابة فوق مستوى العزل الحالي وفرض المرتكبة READ (على سبيل المثال. تصلك).

إذا SqlCommand الخاص بتنفيذ الدفعة (المزيد من البيانات) ثم كل بيان أن الجداول الوصول سيخلق المعاملات الخاصة بها.

AUTOCOMMIT المعاملات يتم التحكم عن طريق تغيير IMPLICIT_TRANSACTION SET ON.

السيطرة على المعاملات للحصول على مزيد من التفاصيل.

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