2009-09-06 71 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