我有一个应用程序,我将 Sql Compact 3.5 与 VS2008 一起使用。我在应用程序中运行多个线程来联系紧凑数据库并访问行。它以某种方式选择并删除这些行,即选择并向应用程序提供 5 行,然后从表中删除这些行。它在单线程中工作得很好,但如果我使用多个线程,即如果有 3 个或更多线程正在运行,我经常会收到超时错误!我增加了连接字符串中的超时属性,但它没有给我预期的结果。错误日志如下:
SQL Server Compact 等待锁超时。设备的默认锁定时间为 2000 毫秒,台式机的默认锁定时间为 5000 毫秒。可以使用 ssce:default lock timeout 属性在连接字符串中增加默认锁定超时。 [ session id=5,线程id=4204,进程id=4808,表名=XXX,冲突类型=x锁(s block ),资源=TAB]
我用来检索的查询如下:
” select Top(5) * from TableName order by id; 从 TableName where id in 中删除(从 TableName order by id 中选择 top(5) id); ”
有什么办法可以避免这个超时异常吗??????
上面的查询我在 VS2008 中作为事务使用,一个使用 SQLCECommand,另一个使用 SqlCEDataAdapter。
有什么想法吗!!!!!! 回复
最佳答案
我也遇到过同样的问题。我知道这是一个老问题,但对于任何在谷歌上搜索答案的人来说,当我完成它时,我通过在我的 dataReader 上调用 Reader.Close() 来修复它。
该应用程序是单线程的,但如果我太快发出太多请求,我就会一直收到此消息。
希望对您有所帮助!
关于timeout - SQL Server Compact 等待锁超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1420582/