Isu:
A .NET Application menggunakan mempamerkan tingkah laku yang tidak konsisten mengenai peningkatan MSDTC. Pada sesetengah mesin pemaju, urus niaga secara automatik meningkat kepada Microsoft Distributed Transaksi Penyelaras (MSDTC), yang memerlukan MSDTC diaktifkan. Pada yang lain, kod yang sama berfungsi dengan betul tanpa MSDTC. TransactionScope
Konteks:
TransactionScope
TransactionScope
Penyiasatan:
Andaian awal mengenai percanggahan versi SQL Server (2005 vs 2008) terbukti salah. Sebab akar terletak pada batasan SQL Server 2005: ia tidak menyokong pelbagai sambungan dalam satu, tanpa mengira urutan pembukaan mereka. Mencuba peningkatan kuasa kedua. SQL Server 2008, sebaliknya, membenarkan pelbagai sambungan dalam TransactionScope
, dengan syarat mereka tidak dibuka secara serentak. Penutupan dan pembukaan semula sambungan pramatang, berpotensi melalui lapisan penyatuan dan lapisan akses data (seperti TransactionScope
), juga boleh mencetuskan peningkatan dalam SQL Server 2005. SqlTableAdapter
Resolusi:
Untuk SQL Server 2005, mengekalkan sambungan terbuka tunggal, global, terbuka sepanjang transaksi menghalang peningkatan MSDTC. Walau bagaimanapun, ini menyimpang dari amalan terbaik yang menganjurkan pengurusan sambungan yang cekap (pembukaan dan penutupan seperti yang diperlukan). Menaik taraf ke SQL Server 2008 atau lebih baru adalah penyelesaian yang disyorkan untuk mengelakkan batasan ini dan mengekalkan amalan terbaik.Atas ialah kandungan terperinci Mengapa TransactionScope Meningkat kepada MSDTC pada Beberapa Mesin tetapi Bukan Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!