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 網站: