我有一个简单的多线程 .NET 应用程序,它使用 ACE 将行插入 MS Access 2010 DB。它只做INSERT
操作。因为 MS Access 对插入进行页面级锁定,所以我有时会被锁定。
有没有办法改变这种锁定类型?或者是否有一种“危险模式”,我可以告诉它完全忽略锁,如果它找到锁定的页面,则可能会创建新页面?
编辑:这里根本没有办法控制锁定吗?到目前为止,我所拥有的技巧是为这些事务维护一个单一的共享连接,然后连接对象只是将插入排队。这可行,但我不喜欢这种连接只是漂浮。
我有一个简单的多线程 .NET 应用程序,它使用 ACE 将行插入 MS Access 2010 DB。它只做INSERT
操作。因为 MS Access 对插入进行页面级锁定,所以我有时会被锁定。
有没有办法改变这种锁定类型?或者是否有一种“危险模式”,我可以告诉它完全忽略锁,如果它找到锁定的页面,则可能会创建新页面?
编辑:这里根本没有办法控制锁定吗?到目前为止,我所拥有的技巧是为这些事务维护一个单一的共享连接,然后连接对象只是将插入排队。这可行,但我不喜欢这种连接只是漂浮。
您使用什么接口来更新数据库?OLEDB?如果是这样,这篇文章似乎回答了这个问题:
这似乎是设置连接对象的属性的问题:
将 Connection 对象的动态 Properties("Jet OLEDB:Database Locking Mode") 设置为 1。
对于它的价值,我不认为 Jet/ACE 是非常适合这种事情的数据存储,但这取决于插入的频率。
10个一小时,没问题。
10 一分钟,我会切换到不同的数据库。
顺便说一句,使用单个连接是使用 Jet/ACE 数据存储的首选方法,因为每次重新打开连接时都需要重新创建锁定文件。