__SysObjects上的SQL Compact锁超时

时间:2011-01-18 03:38:43

标签: locking timeout sql-server-ce

我正在使用SQL Compact 3.5 SP2。我的应用程序是多线程的,但它不共享跨线程的连接。相反,我使用自定义对象池来确保每个线程都有自己的连接。也就是说,连接可能会在不同的时间在不同的线程上重用...换句话说,我假设连接没有线程关联。此外,不确定它是否重要,但我在.NET 3.5 SP1中使用实体框架。

无论如何,当我遇到高负载情况(8个线程)时,我会遇到锁定超时异常(无论超时设置的长度如何),并且异常总是说锁定在__SysObjects表上。

我没有做任何DDL,所以我不明白为什么我会在该表上锁定超时。想法?

1 个答案:

答案 0 :(得分:0)

我通过确保每次使用后关闭我的连接(而不是池化打开的连接)来解决这个问题,但是如果我让代码运行很长一段时间,我就开始获得OutOfMemoryException和AccessViolation异常。

这有点像SqlCeConnection类具有某种线程亲和性依赖性。要不然,或者它有某种内存泄漏。

无论如何,我已经放弃了试图汇集这些物品。

编辑:这实际上似乎是Cummulative Update 2发布的地址。由于更新了我对新库的引用,我没有看到这个问题。请参阅:http://support.microsoft.com/kb/983516