TransactionScope
を使用して複数のデータベースクエリをトランザクションにラップするのに問題が発生しました。バッチサイズ500のSqlBulkCopyを使用しています。 connection
ブロック外エラー - 現在の接続に関連付けられたトランザクションは完了しましたが、処理されませんでした
using (var scope = new TransactionScope())
{
using (var connection = (SqlConnection)customerTable.OpenConnection())
{
var table1BulkCopy = new SqlBulkCopy(connection)
{
BatchSize = BATCH_SIZE,
DestinationTableName = TableName1
};
table1BulkCopy.WriteToServer(table1DataTable);
var table2BulkCopy = new SqlBulkCopy(connection)
{
BatchSize = BATCH_SIZE,
DestinationTableName = TableName2
};
table2BulkCopy.WriteToServer(table2DataTable);
var table3BulkCopy = new SqlBulkCopy(connection)
{
BatchSize = BATCH_SIZE,
DestinationTableName = TableName3
};
table1BulkCopy.WriteToServer(table3DataTable);
var table4BulkCopy = new SqlBulkCopy(connection)
{
BatchSize = BATCH_SIZE,
DestinationTableName = TableName4
};
table4BulkCopy.WriteToServer(table4DataTable);
scope.Complete();
}
}
詳細理由:
これは良いarcticleありますか?呼び出しをusingブロックの最後のステートメントとするのは、非常に良い方法です。 [方法の詳細](https://msdn.microsoft.com/es-es/library/system.transactions.transactionscope.complete(v = vs.110).aspx) – Angel
これは役に立ちました。ありがとうございます –