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

徵狀

當您在 SQL Server 2016 中執行 DDL 作業(例如 [建立索引] 或 [截斷資料表])時,如果有另一個 DDL 事務在相同的資料庫上執行,則可能會封鎖該作業。

解決方案

這個問題首先是在下列 SQL Server 累積更新中修正:

每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 我們建議您下載並安裝最新的 SQL Server 累積更新:

其他相關資訊

當 DDL 建立或刪除資料表或索引時,它需要從 sysrowsets插入或刪除資料表或索引的列集合識別碼,而這需要在專案上保留列層級 X 鎖。 在交易內完成時,會在交易期間保留 X 鎖。當元組移動器發現 flushable 刪除緩衝區時,必須逐一查看 sysrowsets 來探索現有的資料表或索引。 若要讀取 sysrowsets 中的每個資料列,他必須在它目前讀取的專案上保留列級 S 鎖。 探索程式會在元組移動器找出它可以執行的第一個 rowset 時停止運作。 此時,元組移動移動器將會執行清除刪除緩衝區的實際工作,但若要確保探索到的行集合仍有效,它將會在探索程式中針對評估的所有行集保留 SCH 鎖,直到完成其工作為止。Sysrowsets 是依列集識別碼來排序,因此,元組移動器掃描了多個現有的未執行動作的集合,但仍會保留 SCH-s 鎖,而且它會在無法取得列層級 S 鎖的長時間執行事務中受到修改,因為它目前是由長時間執行的事務所變更,該事務在資料行上保留 X 鎖。 此時,涉及到 rowset 識別碼變更的 DDLs 會封鎖在元組移動器的 SCH S 鎖後。

狀態

Microsoft 已確認<適用於>一節中所列的 Microsoft 產品確實有上述問題。

參考

瞭解 Microsoft 用於描述軟體更新的 詞彙

需要更多協助嗎?

想要其他選項嗎?

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

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

這項資訊有幫助嗎?

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

感謝您的意見反應!

×