使用 Microsoft 登入
登入或建立帳戶。
您好:
選取其他帳戶。
您有多個帳戶
選擇您要用來登入的帳戶。

徵狀

請試想下列案例:

  • 您的資料庫有 ALLOW_SNAPSHOT_ISOLATION ,且 READ_COMMITTED_SNAPSHOT 在 Microsoft SQL Server 2008 R2 中啟用的選項。

  • 針對資料庫中的資料表,您可以執行包含TABLOCK與UPDLOCK提示的SELECT語句。

  • SELECT語句會包裝在明確的開始事務中,但不會執行COMMIT 事務。

  • 使用相同的查詢提示所啟動的兩個相同查詢,會出現在明確的事務中。

在這種情況下,當第一份查詢提交時,其中一個查詢會成為鎖死。

原因

出現這個問題是因為 SQL Server 在下列其中一種情況下會錯誤地報告鎖死:

  • 針對資料庫啟用 ALLOW_SNAPSHOT_ISOLATION 和 READ_COMMITTED_SNAPSHOT時,如果其中一個專案完成時,可能會以不正確的方式報告多個針對相同事務的查詢。

  • 啟用 ALLOW_SNAPSHOT_ISOTION 且使用提示 TABLOCK 與 UPDLOCK 時,第二個和第三個 SELECT 語句會採用 IX 鎖,目的是轉換為 X。當您嘗試轉換成 X 時,IX 鎖會 deadlocking [結束]。

  • 當 ALLOW_SNAPSHOT_ISOLATION停用時,第二個和第三個查詢將會取得六個鎖。 在這種情況下,當六個鎖轉換為 X 時,只是封鎖案例,不是鎖死。

每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 查看 SQL Server 的最新累計更新:

狀態

Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?
按下 [提交] 後,您的意見反應將用來改善 Microsoft 產品與服務。 您的 IT 管理員將能夠收集這些資料。 隱私權聲明。

感謝您的意見反應!

×