【发布时间】:2013-11-12 14:30:41
【问题描述】:
在您需要提交之前或在 Access/Jet 引发错误之前,您可以在 Access 事务中执行的插入数量是否有限制?
我目前正在运行以下代码,希望确定这个最大值是多少。
OleDbConnection cn =
new OleDbConnection(
@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\temp\myAccessFile.accdb;Persist Security Info=False;");
try
{
cn.Open();
oleCommand = new OleDbCommand("BEGIN TRANSACTION", cn);
oleCommand.ExecuteNonQuery();
oleCommand.CommandText =
"insert into [table1] (name) values ('1000000000001000000000000010000000000000')";
for (i = 0; i < 25000000; i++)
{
oleCommand.ExecuteNonQuery();
}
oleCommand.CommandText = "COMMIT";
oleCommand.ExecuteNonQuery();
}
catch (Exception ex)
{
}
finally
{
try
{
oleCommand.CommandText = "COMMIT";
oleCommand.ExecuteNonQuery();
}
catch{}
if (cn.State != ConnectionState.Closed)
{
cn.Close();
}
}
当我在单个未提交事务中达到 2,333,920 次插入时,我在生产应用程序上收到的错误是:“超出文件共享锁计数。增加 MaxLocksPerFile 注册表项”。禁用事务解决了这个问题。
【问题讨论】:
-
这个问题中没有足够的信息。有什么错误?真正的代码在哪里?你是如何连接到 Jet 的?
-
添加了更多信息。 Tnx。
标签: c# transactions limit ms-access-2010