修正︰ 記憶體不足的錯誤時可用的記憶體非常低的 SQL Server 處理程序的虛擬位址空間

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:3074434
注意事項
套用此更新之後,您必須新增追蹤旗標-T8075作為啟動參數,若要啟用這項變更。
徵狀
當您在 64 位元版本的 Microsoft SQL Server 2014年或 Microsoft SQL Server 2012年中執行查詢時,您會收到類似下列的 SQL Server 錯誤記錄檔中的記憶體不足錯誤訊息︰

無法配置頁面︰ FAIL_PAGE_ALLOCATION 513

查詢會花很長的時間完成執行,卻在遇到 SOS_MEMORY_TOPLEVELBLOCKALLOCATOR 等待。

當您檢查下列的資訊點時,您會發現已極低的可用虛擬位址空間︰

  • DBCC MEMORYSTATUS-處理程序/系統計算的節-可用的虛擬記憶體
  • DMV: sys.dm_os_process_memory-virtual_address_space_available_kb 資料行
這些值開始大約 8 tb 在 x64 上處理,並繼續往下爬並達到數 gb。

當您在階段是其中的可用虛擬位址空間是非常低時,查詢,請試著執行記憶體配置也可能會遇到的 CMEMTHREAD 等待類型。

下列的資料點會繼續增加一段時間︰
  • DMV: sys.dm_os_process_memory 和 sys.dm_os_memory_nodes-virtual_address_space_reserved_kb 資料行
  • DBCC MEMORYSTATUS-記憶體管理員節-VM 保留

通常,這些值會增加到幾乎 8 TB 「 最大伺服器記憶體 」 值的倍數。
發生的原因
當 SQL Server 處理序已經到達狀態其中總伺服器記憶體 = 目標伺服器記憶體 = 最大伺服器記憶體中,讓新的配置要求成功暫時的多個 8 KB 分頁的 SQL Server 記憶體管理員有原則。之記憶體區塊的分散以及消耗的虛擬位址空間,可能會造成這種條件下的重複的配置模式。如果多次重複此程序,將會耗盡 SQL Server 的虛擬位址空間,,,您會注意到先前提及的徵狀。
解決方案

Hotfix 資訊

如果要解決這個問題,請安裝 [從 hotfix 當您的預存程序呼叫另一個預存程序,在 SQL Server 2014年的連結伺服器上的修正程式︰ 錯誤.

先決條件

您必須擁有 累積更新 3 SQL Server 2014 Service Pack 1,若要套用此 hotfix 的安裝。

請注意

套用此更新之後,您必須新增追蹤旗標-T8075作為啟動參數,若要啟用這項變更。

累積更新資訊

下列的累積更新 SQL Server 的第一次修正問題。

建議︰ 安裝最新的 SQL Server 累積更新
每個新的累積更新的 SQL Server 包含的所有 hotfix 與安全性修正,全都包含在先前的累積更新。我們建議您下載並安裝最新的累積更新 SQL Server 的︰


此 hotfix 可避免記憶體不足] 與 [可用的虛擬位址空間,您可能會遇到的連續的降低。
狀況說明
Microsoft 已確認這是<套用>一節所列出的 Microsoft 產品的問題。
其他相關資訊
  • Windows 2012 R2 允許成長和 128 TB 一樣大的虛擬位址空間。因此,您可能會注意到這個問題,在 Windows 2012 R2 的環境中。如需詳細資訊,請參閱下列主題中的 Windows 開發人員中心︰

    Windows 和 Windows Server 版本更新的記憶體限制
  • 如果您看到持續的成長,虛擬位址空間中,即使在您套用修正程式之後,您可以判斷哪一個查詢或作業會要求使用大量的記憶體區塊 Page_allocated 延伸的事件。範例指令碼看起來像這樣︰

    CREATE EVENT SESSION [memory_tracking] ON SERVERADD EVENT sqlos.page_allocated(    ACTION(package0.callstack,sqlos.cpu_id,sqlos.task_address,sqlos.worker_address,sqlserver.database_id,sqlserver.query_hash,sqlserver.request_id,sqlserver.session_id,sqlserver.sql_text)    WHERE ([number_pages]>(1)))ADD TARGET package0.event_file(SET filename=N'E:\Data\MSSQL11.MSSQLSERVER\MSSQL\Log\memory_tracking.xel')WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=PER_CPU,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)GO
    這些通常是記錄檔備份與索引的維護作業,就會經常發生。

警告:本文為自動翻譯

內容

文章識別碼:3074434 - 最後檢閱時間:10/10/2016 02:01:00 - 修訂: 9.0

Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Service Pack 1

  • kbqfe kbsurveynew kbexpertiseadvanced kbfix kbmt KB3074434 KbMtzh
意見反應