を使用しTransactionScope
て複数のデータベース クエリをトランザクションにラップするのに問題がありました。バッチ サイズ 500 で SqlBulkCopy を使用しています。バッチ サイズを 1000 に増やすと、次のエラーが発生します。
現在の接続に関連付けられているトランザクションは完了しましたが、破棄されていません。接続を使用して SQL ステートメントを実行する前に、トランザクションを破棄する必要があります。
これは私が使用しているコードです:
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();
}
}