Sign in with Microsoft
Sign in or create an account.
Hello,
Select a different account.
You have multiple accounts
Choose the account you want to sign in with.

徵狀

請試想下列案例:

  • 您的資料庫有 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 產品確實有上述問題。

Need more help?

Want more options?

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

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

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?
By pressing submit, your feedback will be used to improve Microsoft products and services. Your IT admin will be able to collect this data. Privacy Statement.

Thank you for your feedback!

×