徵狀
在 Microsoft SQL Server Compact 3.5 中,請考慮下列案例:
-
您有兩個可序列化隔離的事務。
-
兩個事務都嘗試在包含 TABLOCK 鎖定提示或 XLOCK 鎖定提示的同一個資料表上執行 DML 運算(query/DML)。
在這種情況下,您會遇到鎖死。
原因
之所以發生這個問題,是因為兩個事務都彼此都等候 XLOCK。 當查詢經過編譯時,兩個事務都會取得資料表上的共用鎖,然後保留可串列隔離的鎖。 當兩個事務都嘗試執行執行時,同一個資料表上包含 XLOCK 鎖定提示的查詢,然後兩個事務都彼此等待 XLOCK。 因此,會發生鎖死。注意當兩個事務在包含 TABLOCK 鎖定提示的同一個資料表上執行 DML 運算時,也會發生這個問題。
解決方案
SQL Server Compact 3.5 Service Pack 2
此問題的修正程式是在累積更新2中第一次發行。 如需有關如何取得 SQL Server 2008 R2 累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2289547 SQL Server Compact 3.5 Service Pack 2 的累積更新2
狀態
Microsoft 已確認<適用於>一節中所列的 Microsoft 產品確實有上述問題。
其他相關資訊
如需有關鎖死的詳細資訊,請造訪下列 Microsoft 開發人員網路(MSDN)網站:
出現如需 DML 的詳細資訊,請造訪下列 MSDN 網站:
DML如需軟體更新術語的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
824684 描述 Microsoft 軟體更新所使用的標準術語說明