2009-06-19 18 views
5

Bir SQL Server veritabanında bir SELECT sorgusu gerçekleştiren bir SqlCommand aracılığıyla uygulamanızda getirilen bazı veri listeleri var. SqlCommand üzerinde bir işlemi açık bir şekilde ayarlamayız, bunun yerine bir SqlConnection geçirip onu çalıştırıyoruz. SQL Server, ReadCommitted varsayılan IsolationLevel ile bir varsayılan işlem başlatacak ve kullanacak hiçbir işlem belirtildiğinde, öyle mi?Bir İşlem belirtmeden bir SQLCommand yürütme

cevap

3

SQL Server, açık bir işlem olmadan mutlu bir şekilde çalışabilir. Ama evet, temel olarak okuyuculu olduğuna inanıyorum (tabii ki, UPDLOCK/NOLOCK gibi sorgu nesnelerine ek ipuçları eklemezseniz). (Diğerleri arasında)

DBCC USEROPTIONS 

gösterir: Sen ile bu araştırabilir

isolation level read committed 
5

SQL İfadeleriniz için örtülü bir işlem oluşturur ve deyim tamamlandığında bu işlemin kararlıdır. Bu işlemin izolasyon seviyesi, OKUMA KOMİTESİ'ne göre geçerli olan mevcut yalıtım seviyesi olacaktır. Bazı ifadeler mevcut yalıtım düzeyinin üzerine yazılmalı ve READ COMMITTED (örn. ALICI) uygulanmalıdır.

SqlCommand'ınız bir toplu iş yürütüyorsa (daha fazla ifade), tablolara erişen her ifade kendi işlemini oluşturur.

Varsayılan ayar autocommit of transactions, SET IMPLICIT_TRANSACTION ON ayarlanarak kontrol edilir.

Daha fazla ayrıntı için Controlling Transactions'a bakın.

+0

Belki de burada aynı sorun var: http://stackoverflow.com/questions/41096727/is-there-an-implicit-transaction-in-sqlcommand-executenonquery – VansFannel

İlgili konular