FIX: 已編譯的查詢計劃的記憶體使用量可能會意外地增加在 SQL Server 2005 中

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:919636
Bug #: 810 (SQL Hotfix)
注意事項
Microsoft 為一個可下載檔案散佈 Microsoft SQL Server 2005 的修正程式。因為修正程式是累積,每個新版本包含所有 Hotfix 及先前的 SQL Server 2005 隨附所有安全性修正程式都修正發行。
本文已封存。本文係以「現狀」提供且不會再更新。
本文將告訴您下列關於此 Hotfix 版本:
  • 此 Hotfix 套件所修正的問題
  • 安裝 Hotfix 套件的先決條件
  • 是否之後,您必須重新啟動電腦安裝 Hotfix 套件的相關資訊
  • 是否 Hotfix 套件就會取代任何其他 Hotfix 套件的相關資訊
  • 您必須在是否做任何登錄變更的相關資訊
  • 包含在 Hotfix 套件中的檔案
徵狀
當您檢查查詢的已編譯的查詢計劃時,可能會注意到 complied 的查詢計劃的記憶體使用量可能會意外地增加相較於 Microsoft SQL Server 2000 的 SQL Server 2005 中。

其中一種下列條件時,可能就會發生這個問題:
  • 條件 1:查詢參考使用計算資料行的資料表。
  • 條件 2:查詢中包含 nvarchar 資料行的值與 ANSI 字串之間的字串作業。比方說字串作業比較 nvarchar 的資料行,以 ANSI 字串的值。
  • 條件 3:查詢中包含有計算資料行的資料表的參考。計算資料行根據一個 nvarchar 資料行。不過,電腦資料行運算式中使用 ANSI 字串常數。
條件 2 和 3 會導致明顯的增加中已編譯的查詢計劃的記憶體使用量。

比方說,您有具有 nvarchar 資料行的資料表。資料表名稱為 MyTable,且 nvarchar 資料行名稱為 MyCol.然後,使用下列語法來定義查詢:
SELECT CASE MyCol          WHEN 'Value1' THEN 'NewValue1'          WHEN 'Value2' THEN 'NewValue2'          ELSE MyCol       ENDFROM MyTable
在此範例字串"Value1 value2"]、 [Value2"]、 ["NewValue1"] 及 [NewValue2 」 都是 ANSI 字串。與 ANSI 字串"Value1 value2"和 Value2"第一次比較 MyCol nvarchar 資料行的值。然後,"NewValue1",NewValue2"對應值所選擇的 ANSI 字串或 MyCol 資料行的原始值。

您可以藉由檢查 pagesused 或欄的 sys.syscacheobjects 系統資料表 sys.dm_exec_cached_plans 動態管理檢視來檢視已編譯的計劃記憶體使用量。

complied 的查詢計劃的這個增加的大小可以也會導致 RESOURCE_SEMAPHORE_QUERY_COMPILE 等待類型的等候時間增加。
解決方案
Microsoft 提供支援的 Hotfix。不過,此 Hotfix 旨在修正本文中所述隨問題。只會發生此特定問題的系統套用此 Hotfix。這個 Hotfix 可能會接受額外的測試。因此,如果您不會嚴重影響這個問題,我們建議您等候下一個包含此 Hotfix 的軟體更新。

如果此 Hotfix 可供下載,您可在本知識庫文件的頂端找到「 可用的 Hotfix 下載 」區段。如果本節 Does Not Appear 請連絡[ Microsoft 客戶服務 ] 和 [ 支援 ] 以取得此 Hotfix。

附註如果發生其他問題,或如果需要任何疑難排解,您可能必須建立個別的服務要求。和此 Hotfix 無關的額外支援問題適用一般的支援費用。如需 Microsoft 客戶服務支援部門電話號碼的完整清單或要建立個別的服務要求,請造訪下列 Microsoft 網站:附註「 下載 Hotfix 」 表單會顯示此 Hotfix 會出現,以供使用的語言。如果您沒有看到您的語言,是因為此 Hotfix 是不適用您的語言。

必要條件

您必須有 SQL Server 2005 Service Pack 1 (SP1) 安裝若要套用此 Hotfix。如需有關如何取得 SQL Server 2005 Service Pack 1,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
913089如何取得最新的 Service Pack,SQL Server 2005 的

重新啟動資訊

您沒有套用此 Hotfix 之後重新啟動電腦。然而,如果您已經有受此問題,您必須套用這個 Hotfix,以還原資料庫檔案到健全的狀態之後,依照 Workground > 一節中的步驟。

登錄資訊

您沒有變更登錄。

Hotfix 檔案資訊

此 Hotfix 包含只需修正本文所列問題的那些檔案。此 Hotfix 並未包含必須將產品完整更新至最新版組建的所有檔案。

此 Hotfix 的英文版在檔案屬性 (或更新版本的檔案屬性) 如下列表格中所列。這些檔案的日期和時間為 Coordinated Universal Time (UTC)。當您檢視檔案資訊時,會將它轉換為當地時間。若要到 UTC 與當地時間差異使用在 [日期及時間中項目控制台中的 [時區] 索引標籤]。
SQL Server 2005 32年位元版本
檔案名稱檔案版本檔案大小日期時間平台
Microsoft.sqlserver.sqlenum.dll9.0.2164.0908,0642006 年六月 14 日12: 32x86
Microsoft.sqlserver.mgdsqldumper.dll2005.90.2164.075,5522006 年六月 14 日12: 29x86
Msgprox.dll2005.90.2164.0197,9202006 年六月 14 日12: 29x86
Replprov.dll2005.90.2164.0547,6162006 年六月 14 日12: 31x86
Replrec.dll2005.90.2164.0782,1122006 年六月 14 日12: 32x86
Msmdlocal.dll9.0.2164.015,661,8562006 年六月 14 日12: 33x86
Sqlaccess.dll2005.90.2164.0347,9362006 年六月 14 日12: 31x86
Sqlservr.exe2005.90.2164.028,950,8722006 年六月 14 日12: 33x86
SQL Server 2005 x x64 為主版
檔案名稱檔案版本檔案大小日期時間平台
Microsoft.sqlserver.sqlenum.dll9.0.2164.0875,2962006 年六月 14 日13: 12x86
Microsoft.sqlserver.mgdsqldumper.dll2005.90.2164.091,4242006 年六月 14 日12: 29x64
Msgprox.dll2005.90.2164.0259,3602006 年六月 14 日13: 10x64
Replprov.dll2005.90.2164.0745,2482006 年六月 14 日13: 12x64
Replrec.dll2005.90.2164.01,008,4162006 年六月 14 日13: 12x64
Msmdlocal.dll9.0.2164.015,661,8562006 年六月 14 日12: 33x86
Sqlaccess.dll2005.90.2164.0355,1042006 年六月 14 日13: 11x86
Sqlservr.exe2005.90.2164.039,251,2322006 年六月 14 日13: 13x64
SQL Server 2005 Itanium 架構版本
檔案名稱檔案版本檔案大小日期時間平台
Microsoft.sqlserver.sqlenum.dll9.0.2164.0875,2962006 年六月 14 日12: 29x86
Microsoft.sqlserver.mgdsqldumper.dll2005.90.2164.0163,1042006 年六月 14 日12: 29IA 64
Msgprox.dll2005.90.2164.0542,4962006 年六月 14 日12: 28IA 64
Msmdlocal.dll9.0.2164.048,733,9842006 年六月 14 日12: 30IA 64
Replprov.dll2005.90.2164.01,617,1842006 年六月 14 日12: 29IA 64
Replrec.dll2005.90.2164.02,141,4722006 年六月 14 日12: 29IA 64
Sqlaccess.dll2005.90.2164.0349,4722006 年六月 14 日12: 28x86
Sqlservr.exe2005.90.2164.072,208,6722006 年六月 14 日12: 30IA 64
其他可行方案
若要解決這個問題,新增問題內容中的所有字串的前面是大寫字母"N"。您可以變更使用下列語法來 < 徵狀 > 一節中描述的範例:

狀況說明
Microsoft 已確認<適用於>一節所列之 Microsoft 產品確實有此問題。
其他相關資訊
您可以藉由檢查 pagesused 或欄的 sys.syscacheobjects 系統資料表 sys.dm_exec_cached_plans 動態管理檢視來檢視已編譯的計劃記憶體使用量。

如需有關 sys.syscacheobjects 系統資料表的詳細資訊,請造訪下列 Microsoft 開發 o 人 h 員 û 工 u 具 ã 網路 (MSDN) 網站]:如需有關 sys.dm_exec_cached_plans 動態管理檢視的詳細資訊,請造訪下列 MSDN 網站:如 Microsoft SQL Server 更新命名的結構描述的更多有關,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
822499Microsoft SQL Server 軟體更新套件的新命名結構描述
如需有關軟體更新術語的詳細資訊,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
824684用來描述 Microsoft 軟體更新標準術語的說明

警告:本文為自動翻譯

內容

文章識別碼:919636 - 最後檢閱時間:01/17/2015 14:52:27 - 修訂: 1.9

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems, Microsoft SQL Server 2005 Standard X64 Edition

  • kbnosurvey kbarchive kbmt kbautohotfix kbsql2005engine kbhotfixserver kbexpertiseadvanced kbqfe kbfix kbpubtypekc KB919636 KbMtzh
意見反應