Microsoft 將 Microsoft SQL Server 2008 Service Pack 2 (SP2)或 Microsoft SQL Server 2008 R2 修正為一個可下載的檔案。 因為修正程式是累加的,所以每個新發行版本本都包含舊版 SQL Server 2008 SP2 或 SQL Server 2008 R2 更新版本中所包含的所有熱修復程式和安全性更新。
徵狀
請試想下列案例:
-
您在執行 Microsoft SQL Server 2008 或 Microsoft SQL Server 2008 R2 的電腦上建立連結伺服器。 連結伺服器指向遠端伺服器上的 OLE DB 資料來源。
-
您執行的分散式查詢使用連結伺服器上的某些資料物件。
-
您在遠端伺服器上執行一些作業,而這些作業會在資料物件上造成超過五個架構版本更新。 例如,您在遠端伺服器上重建資料表的索引,以更新連結伺服器上之資料表的架構版本。注意: 您會在下一次執行查詢之前執行這些作業。
-
您可以在連結伺服器上再次執行分散式查詢。
在這種情況下,不會重新編譯查詢,而且您會收到類似以下的錯誤訊息:
伺服器: Msg 7359,階層等級編號,狀態狀態編號,行號連結伺服器「連結伺服器名稱」的 OLE DB 提供者「提供者名稱」已在編譯時間("編譯時間")和執行時間("執行時間")之間,報告 [連結資料表名稱] 的架構版本的變更。
注意事項
-
[提供者名稱] 是 OLE DB 提供者名稱的預留位置。
-
[連結資料表名稱] 是在連結伺服器上查詢的資料表名稱的預留位置。
-
下列語句通常可以變更架構版本:
-
ALTER TABLE
-
建立索引
-
刪除索引
-
DBCC 重新編制索引
-
原因
之所以會發生此問題,是因為已達到針對查詢重新編譯的限制。 對架構進行變更時,會將快取中的部分物件刪除,且查詢需要重新編譯的操作。 不過,如果有超過五個更新架構版本的變更,就會達到重新編譯的上限。 因此,在「症狀」一節中提到的問題就會發生。
解決方案
累積更新資訊
SQL Server 2008 R2
此問題的修正程式是在累積更新11中第一次發行。如需有關如何取得 SQL Server 2008 R2 累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2633145 SQL Server 2008 R2 的累積更新套件11 注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 R2 修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
981356 在發行 SQL Server 2008 R2 之後發行的 SQL Server 2008 R2 組建
SQL Server 2008 R2 Service Pack 1
此問題的修正程式是在 SQL Server 2008 R2 Service Pack 1 的累積更新4中第一次發行。如需如何取得此累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2633146 SQL Server 2008 R2 Service Pack 1 的累積更新套件4注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 R2 修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2567616 在發行 SQL Server 2008 R2 Service Pack 1 之後發行的 SQL Server 2008 R2 組建
SQL Server 2008 Service Pack 3
此問題的修正程式會在 SQL Server 2008 Service Pack 3 的累積更新1中首次發行。如需此累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2617146 SQL Server 2008 的累積更新套件 1 Service Pack 3注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 修正版本中所包含的所有修復程式及所有安全性修正程式。 Microsoft 建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2629969 在發行 SQL Server 2008 Service Pack 3 之後發行的 SQL Server 2008 組建 Microsoft SQL Server 2008 修復程式是針對特定的 SQL Server service pack 建立的。 您必須將 SQL Server 2008 Service Pack 3 修復程式套用至 SQL Server 2008 Service Pack 3 的安裝。 根據預設,SQL Server service pack 中提供的任何熱修復程式都包含在下一個 SQL Server service pack 中。
SQL Server 2008 SP2 累積更新套件6
此問題的修正程式是在累積更新套件6中第一次發行。如需有關如何取得 SQL Server 2008 SP2 累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2582285 SQL Server 2008 的累積更新套件 6 Service Pack 2注意: 因為組建是累加的,所以每個新的更新版本都包含舊版 SQL Server 2008 SP2 更新發行版本中所包含的所有修復程式和安全性更新。 我們建議您考慮套用包含此熱修復程式的最新更新版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2402659 在發行 SQL Server 2008 SP2 之後發行的 SQL Server 2008 組建
因應措施
若要解決這個問題,請使用下列其中一個方法:
-
執行 DBCC FREEPROCCACHE("Plan_Handle")語句。如需 Plan_Handle 參數的詳細資訊,請造訪下列 MSDN 網站:
-
執行 sp_refreshView 的 [ViewName] 儲存程式。注意: 如果已安裝 SQL Server 2008 SP2 的累積更新套件3,此方法則無法運作。
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。