TransactionScope内でADO.NETを使用して、Oracleデータベースに10万以上のアイテムをバッチ挿入しようとしています。このような:
using (TransactionScope transaction = new TransactionScope())
{
while(/* Pagination logic - send insertion command on every 250 items */)
{
using (OracleCommand command = new OracleCommand(query, connection))
{
command.ArrayBindCount = 250;
//Add parameters
command.Parameters.Add(":BLAH", OracleDbType.Long);
command.Parameters[0].Value = LUC.ToArray();
command.ExecuteNonQuery(); //Error occurs here after N-times inside while
}
}
transaction.Complete();
}
これより低いアイテム (10k-30k) の場合、トランザクションは正常に完了します。ただし、より高い項目 (100k など)の場合は、 ORA-00604: エラーが再帰 SQL レベル %s で発生しました。
TransactionScope を完全に削除すると、アイテムのサイズにエラーは発生せず、機能します。
TransactionScope を膨大な数のアイテムで動作させるにはどうすればよいですか?