MSDTCの設定には一定の問題があり、現在は に置き換えるSystemTransactions
ことを検討していSqlTransactions
ます。
上記の違いと、それによって発生する可能性のある問題に興味があります。
MSDTCの設定には一定の問題があり、現在は に置き換えるSystemTransactions
ことを検討していSqlTransactions
ます。
上記の違いと、それによって発生する可能性のある問題に興味があります。
Massimilianoによって引用および参照された記事は、参照された時点で7年前のものであるため、.NET2.0とSQLServer 2000および2005のみを参照しています。ただし、重要なポイントは、それ以降のバージョンでも有効であると思います。それ以降のバージョンでの変更について、直接適用できる解説を見つけるのに苦労しています。
SQL Server 2008以降では、単一のデータベースに対するSystem.TransactionScopeトランザクションは、古いバージョンよりもDTCにプロモートされる可能性が低いようです。
関連:SqlClient、System.Transactions、SQL Server 2008、およびMARS
したがって、SQL Serverのバージョンによっては、単一のデータベースに対してSystem.Transactionsを使用するDTCで多かれ少なかれ問題が発生します。
System.TransactionsのコードはSqlTransactionsのコードよりも軽量ですが、処理のオーバーヘッドが高く、明示的な制御が少なくなります。
System.Transactions
の代替品ではありませんSqlTransaction
。
ただし、単一のデータベースを考慮する限り、ADO.NET 2.0 System.Transactions ベースのトランザクションと通常の SqlTransaction の最大の違いは「分離レベル」です。しかし、それは大きな違いです。すぐに分離レベルについて説明しますが、その前に、Sql 2k では、単一のデータベースが関係している場合でも、トランザクションは MSDTC によって管理されることを認識しておく必要があります。Sql2k5 の場合、別のデータベースに接続された 2 番目の SqlConnection が現れるまで、トランザクションは LTM によって管理されます。それが発生すると、トランザクションは LTM から MSDTC にバンプアップされます。
http://dotnetslackers.com/SQL/re-3463_SqlTransaction_vs_System_Transactions.aspx