MultipleActiveResultSets = Doğru mu yoksa birden çok bağlantı mı?


86

Bir bağlantıda ( ExecuteReader) okuyucu oluşturduğum bir C # var , sonra bu okuyucudaki her satır için başka bir komut (ile ExecuteNonQuery) gerçekleştirin. Bu durumda MultipleActiveResultSets=Truebağlantımda kullanmam veya birden fazla bağlantı kullanmam daha mı iyi?

Yanıtlar:


99

Birden çok Aktif Sonuç Kümesi (MARS), özellikle bu tür bir işlem için eklenmiştir, böylece bir SqlDataReader'dan okuyabilmek VE ek yığınları yürütebilmek için aynı anda iki bağlantınızın açık olmasına gerek kalmaz.

MARS, SQL Server 2005 ve üstü ile uyumludur. MSDN belgelerinden alıntı yapmak için:

Çoklu Aktif Sonuç Kümelerinin (MARS) piyasaya sürülmesinden önce, geliştiricilerin belirli senaryoları çözmek için birden çok bağlantı veya sunucu tarafı imleçleri kullanması gerekiyordu.

Daha fazla bilgi için bkz .:

MSDN Kitaplığı - MARS'ye Genel Bakış

Verileri okuyan ve güncelleyen çalışılan örnek:

MSDN Kitaplığı - Verileri Manipüle Etme (MARS) 'MARS ile Verileri Okuma ve Güncelleme' bölümüne gidin


21

MARS'nin eklenmesinin sebebini bildiğim kadarıyla bu, bu yüzden evet, onu kullanman gerektiğini düşünüyorum.


0

Bunu test etmenin en iyi yolu, SQLServer Profiler'ı çalıştırmak ve sunucu tarafında gerçekten ne olduğunu görmektir.

Tahminimce ExecuteNonQuery () kullandığınız için daha iyi olmayacak. Yani aslında birden fazla sonuçla çalışmıyorsunuz.


6
Kodu yazarken düşündüğüm de buydu, ancak MultipleActiveResultSets = True yoksa hala "Bu Komutla ilişkilendirilmiş, ilk önce kapatılması gereken açık bir DataReader var." ExecuteNonQuery'de istisna.
Sprintstar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.