2009-09-06 74 views
0

我有一些在事务内部创建表的SQL Compact查询。这主要是因为我需要模拟SQL Compact不支持的临时表。我通过创建一个真正的表,然后在交易结束时删除它。Sql Compact和__sysobjects

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

对于普通表格,我可以使用“with(rowlock)”提示来解决这个问题。然而,因为我没有写查询插入__sysobjets(SQL服务器是否响应“创建表”)我不能这样做。

有没有人知道我可以解决这个问题的方法?

我想过把表创建从事务中拉出来,但是这开辟了我需要定期清理的幻影临时表的可能性。理想情况下,如果可能,我想避免这种情况。

回答

-1

我想你一定会在创建常规表而不是#temp表时遇到并发问题。

我不知道SQL Server Compact Edition不会让您创建#Temp表。

如何使用表变量来代替?这对你有用吗?

+0

不幸的是没有。 SQL compact不支持表变量。 – 2009-09-06 04:29:06