Applies ToSQL Server 2008 R2 Service Pack 1 SQL Server 2008 R2

Microsoft 將 Microsoft SQL Server 2008 R2 發佈為一個可下載的檔案。 因為修正程式是累加的,所以每個新發行版本本都包含舊版 SQL Server 2008 R2 修正程式版本中所包含的所有修復程式及所有安全性修正程式。

徵狀

當您使用並存執行方案嘗試在 Microsoft SQL Server 2008 R2 中建立已分區的非叢集索引時,會發生下列問題:

  • [SQL Server 錯誤記錄] 中記錄下列錯誤訊息:

    <日期時間> spid<n> 錯誤:17066、嚴重性:16、State: 1. <日期時間> spid<n> SQL Server Assertion: File: <sobuild. c>、line = 3392 失敗斷言 = ' CompareRow (rightPageRow、* m_pSEBindings、keyCnt、* pHobtAccess、PAGE_LEAF_LEVEL)」。 此錯誤可能是與時間有關的。 如果在重新執行語句後發生錯誤,請使用 DBCC CHECKDB 來檢查資料庫的結構完整性,或重新開機伺服器以確保記憶體中資料結構未損毀。

  • 並存執行方案不會建立索引。

  • 傳送 CREATE INDEX 語句的用戶端應用程式可能會收到 SQL Server 例外狀況。

  • 用戶端與伺服器之間的連線是關閉的。

注意:

  • 並存執行方案可能會在下列情況中使用:

    • 您將 MAXDOP 查詢提示選項設定為大於 1的值。

    • 您將 [ 最大並行度 ] 選項設定為 [ 0 ],或設定為 [伺服器設定] 中大於 1 的值。

  • 這個問題不會發生在 Microsoft SQL Server 2008。

原因

之所以發生這個問題,是因為兩個或多個 SQL Server 平行線程會針對重疊的分區範圍執行索引建立。

解決方案

累積更新資訊

SQL Server 2008 R2 Service Pack 1

此問題的修正程式是在 SQL Server 2008 R2 Service Pack 1 的累積更新1中第一次發行。如需如何取得此累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

2544793 SQL Server 2008 R2 Service Pack 1 的累積更新套件1注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 R2 修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

2567616 在發行 SQL Server 2008 R2 Service Pack 1 之後發行的 SQL Server 2008 R2 組建

SQL Server 2008 R2

此問題的修正程式是在累積更新8中第一次發行。如需有關如何取得 SQL Server 2008 R2 累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

2534352 SQL Server 2008 R2 的累積更新套件8 注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 R2 修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

981356 在發行 SQL Server 2008 R2 之後發行的 SQL Server 2008 R2 組建

因應措施

若要解決這個問題,請使用下列其中一個方法:

  • 在建立索引前,請先在伺服器設定中將 [ 最大並行度 ] 選項設定為 1 。

  • 當您建立索引時,請將 MAXDOP 查詢提示選項設定為 1

狀態

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

其他相關資訊

如需 建立索引 語句的詳細資訊,請造訪下列 MSDN 網站:

建立索引語句的一般資訊如需 建立分區函數 語句的詳細資訊,請造訪下列 MSDN 網站:

建立 PARTITION 函數語句的一般資訊

需要更多協助嗎?

想要其他選項嗎?

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

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