Sql Compact和__sysobjects

时间:2009-09-06 00:49:19

标签: sql-server sql-server-ce

我有一些SQL Compact查询在事务中创建表。这主要是因为我需要模拟SQL Compact不支持的临时表。我这样做是通过创建一个真实的表,然后在事务结束时删除它。

这大部分都有效。但是,有时,在创建表时,Sql Compact将尝试获取__sysobjects表上的PAGE级别锁。如果有多个并发查询在运行时创建“临时”表,则获取页锁的尝试可能导致死锁,然后是SqlLockTimeout异常。

对于普通表我可以使用“with(rowlock)”提示修复此问题。但是,因为我没有编写要插入__sysobjets的查询(SQL服务器执行该操作以响应“create table”),所以我不能这样做。

有谁知道我可以解决这个问题?

我考虑过将表创建从事务中拉出来,但这开启了幻像临时表的可能性,然后我需要定期清理它。理想情况下,如果可能,我想避免这种情况。

1 个答案:

答案 0 :(得分:-1)

我认为你必须在创建常规表而不是#temp表时遇到并发问题。

我不知道SQL Server Compact版本不允许您创建#Temp表。

如何使用Table变量?这对你有用吗?

相关问题