Hayır, işlem tanıtımı özelliğini veya özelliğini kullanarak devre dışı bırakamazsınız. İşlem tanıtımını devre dışı bırakmanın tek yolu, işlemin dağıtılmış bir işleme yükseltilmesine neden olan koşullardan kaçınmaktır.
transaction management escalation önlemek için yapmanız gerekenler:
SQL Server 2005 veya daha yüksek olarak senin veritabanına sahip
SQL Server 2005 için tek bir veritabanı bağlantısını işlem ömrünü kullanmak
eğer . (SQL Server 2008 tanıtım meydana olmadan bir işlem içinde birden çok bağlantı kullanmanızı sağlayacak.)
sadece erişmek bir veritabanı
uygulama alanları
genelinde işleminizi geçemedi Kuralların nedeni, işlemin ACID properties olmasını sağlamaktır. Örnek olarak
, Diyelim ki
(Kod snippet'inizde gibi) bir işlem teşvik etmek değil belirleyebildiğinde bir dakika düşünelim ancak kod iki veritabanları (biliyorum - kodunuzu yalnızca bir veritabanını kullanır) erişir. Artık, dağıtılmış işlemleri kullanmamaya karar verdiniz, bir işlem başlattınız ve iki veritabanının her iki iş biriminde olması gerektiğini belirttiniz. İşlemin ACID özellikleri ile dağıtılmış bir işlemden kaçınma isteği arasında bir çelişki vardır. Bana öyle geliyor ki, bunu halletmenin iki yolu vardır: ya işlemi dağıtılmış bir işleme (ki bunu yapmak istemediğini söylemiştin!) Teşvik et ya da bir istisna at. işlem).
Bu nedenle, bir DisablePromotion özelliğinin kullanımı, işlemin tanıtımını yapmaması için hala yükseltme kuralları'u izlemeniz gerekeceğinden çok fazla değere sahip olmaz.
Gerçekten istiyorsan, DistributedTransactionStarted olayını halledebilir ve dağıtılmış bir işlem başlatıldığında bir istisna atarsın. Bu, başvurunuzun dağıtılmış işlemler kullanmadığını garanti eder, ancak muhtemelen sizin istediğinizi değil.
Tanıtımı devre dışı bırakmak istediğinizde ne gibi sorunlar yaşıyorsunuz? –
İki Sql Sunucusu bağlamak için bağlantılı bir sunucu kullanıyorum. Bağlı sunucu mantığı için açık işlemler kullandım, bu yüzden bütünlük iyi. Ama ben bağlantılı sunucu ile bittiğinde, SQL Server iç bağlantıyı serbest bırakmaz. Uygulamam devam ettiğinde ve örtülü işlemler kullanıyorsa (basitlik için), her zaman ONE veritabanına karşı çalışırlar. Ancak, bağlanan sunucu bağlantısı hala açık olduğu için tanıtım gerçekleşir. – andreas