我正在尝试使用TransactionScope中的ADO.NET批量插入100k +项目到我的Oracle数据库。像这样:
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使用大量项目?
答案 0 :(得分:0)
原来,这是一个事务超时问题。
在我增加超时后,我已成功插入列表:
using (TransactionScope transaction =
new TransactionScope(TransactionScopeOption.Required,
new TimeSpan(0, 30, 0))) //30 minute timeout limit