【发布时间】:2009-09-14 09:44:54
【问题描述】:
我有一个应用程序,我将 Sql Compact 3.5 与 VS2008 一起使用。我在我的应用程序中运行多个线程,这些线程与紧凑型数据库联系并访问该行。它以一种方式选择和删除这些行,即选择并向应用程序提供 5 行并从表中删除这些行。它适用于单个线程,但如果我使用多个线程,即如果 3 个或更多线程正在运行,我经常会收到超时错误!!!我增加了连接字符串中的 Time out 属性,但它没有给我预期的结果。错误日志如下:
SQL Server Compact 在等待锁定时超时。设备的默认锁定时间为 2000 毫秒,台式机的默认锁定时间为 5000 毫秒。可以使用 ssce: default lock timeout 属性在连接字符串中增加默认锁定超时。 [会话id = 5,线程id = 4204,进程id = 4808,表名=XXX,冲突类型=x锁(s块),资源=TAB]
我用来检索的查询如下:
" select Top(5) * from TableName order by id; 从 TableName 中删除 id in(select top(5) id from TableName order by id); "
有什么方法可以避免这个超时异常??????
上面的查询我在VS2008中作为一个事务使用SQLCECommand,另一个使用SqlCEDataAdapter。
任何想法!!!!!! 回复
【问题讨论】:
标签: timeout locking sql-server-ce