如何降低在 64 位元版本的 SQL Server 的緩衝區集區記憶體的分頁

文章翻譯 文章翻譯
文章編號: 918483 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

Microsoft SQL Server 執行動態記憶體管理系統上的活動與目前載入的記憶體需求為基礎。在 Windows Server 2003 或 Windows XP 或更新版本的系統,SQL Server 可以使用所提供的 QueryMemoryResourceNotification Windows API 的記憶體通知機制。在 Microsoft Windows 2000 Server 為基礎的系統上,SQL Server 會定期使用原生 Windows API 來計算系統上的可用實體記憶體。根據這項資訊從 QueryMemoryResourceNotification Windows API 或記憶體計算,SQL Server 會回應特定的系統上目前記憶體的狀況。這會提供下列好處:
  • 系統不會不移出 SQL Server 處理序的工作組分頁。
  • 必要的資料庫頁面中可以使用的記憶體來減少實體 I/O 需求。
如需詳細資訊,請參閱 「 動態記憶體管理 」 主題和 SQL Server 線上叢書 》 中的 〈 伺服器記憶體選項 〉 主題。

徵狀

在 64 位元版本的 SQL Server,可能發生的各種問題。例如,可能會發生下列問題:
  • SQL Server 的效能突然降低。
  • 正在執行 SQL Server 的電腦停止回應一小段時間。
  • 連線到 SQL Server 的應用程式發生逾時。
  • 當您執行甚至是簡單的命令,或在系統上使用應用程式時,會發生問題。
如果您安裝 SQL Server 2005 Service Pack 2 (SP2) 或更新的版本,其中一個下列的錯誤訊息會記錄在 SQL Server 錯誤記錄檔時就會發生這些問題:
錯誤訊息 1
日期時間 已將 spid1s A 的重要部分 sql 伺服器處理序記憶體分頁移出。這可能會導致效能降低的情形。持續期間: 0 秒。工作集 (KB): 1086400,認可 (KB): 2160928,記憶體使用率: 50%。
錯誤訊息 2
日期時間 已將 spid1s A 的重要部分 sql 伺服器處理序記憶體分頁移出。這可能會導致效能降低的情形。持續期間: 315 秒數。工作集 (KB): 410156,認可 (KB): 2201296,記憶體使用率: 18%。
錯誤訊息 3
日期時間 已將 spid1s A 的重要部分 sql 伺服器處理序記憶體分頁移出。這可能會導致效能降低的情形。持續期間: 646 的秒數。工作集 (KB): 901904,認可 (KB): 2215752,記憶體使用率: 40%。

其他錯誤訊息或在 SQL Server 錯誤記錄檔,或在 Windows 事件記錄檔中記錄的警告,也已經注意到 Microsoft SQL Server 支援小組。這些訊息如下所示:
2009-05-05 15:43:56.01 Server      Resource Monitor (0x13c43) Worker 0x0412C1E8 appears to be non-yielding on Node 0. Memory freed: 34152 KB. Approx CPU Used: kernel 171 ms, user 140 ms, Interval: 125093.

2009-05-05 12:54:52.18 Server      * *******************************************************************************
2009-05-05 12:54:52.18 Server      * BEGIN STACK DUMP:
2009-05-05 12:54:52.18 Server      *   05/05/08 12:54:52 spid 0
2009-05-05 12:54:52.18 Server      * Non-yielding Resource Monitor
2009-05-05 12:54:52.18 Server      * *******************************************************************************

2009-06-10 09:13:53.44 Server      * *******************************************************************************
2009-06-10 09:13:53.44 Server      * BEGIN STACK DUMP:
2009-06-10 09:13:53.44 Server      *   06/10/09 09:13:53 spid 0
2009-06-10 09:13:53.44 Server      * Non-yielding IOCP Listener
2009-06-10 09:13:53.44 Server      * *******************************************************************************

2009-06-10 09:13:55.85 spid2s      LazyWriter: warning, no free buffers found.

2009-07-15 13:27:45.35 spid4s      AppDomain xx (SQLCLR.dbo[runtime].xx) is marked for unload due to memory pressure.
2009-07-15 13:27:45.35 spid4s      AppDomain xx (SQLCLR.dbo[runtime].xx) unloaded.

2009-07-15 13:37:51.42 Logon       Error: 17189, Severity: 16, State: 1.
2009-07-15 13:37:51.42 Logon       SQL Server failed with error code 0xc0000000 to spawn a thread to process a new login or connection. Check the SQL Server error log and the Windows event logs for information about possible related problems. [CLIENT: xx.xxx.xx.xx]

Event Type:	Error
Event Source:	SQLBrowser
Event ID:	8
Description: The SQLBrowser service was unable to process a client request. 
這些額外的錯誤訊息或警告可能會出現加上 「 sql 伺服器處理序記憶體的重要部份已分頁移出 」 錯誤訊息。在許多情況下,這些其餘的錯誤訊息或警告未出現以及錯誤訊息。

如果您發現其中一個錯誤訊息或警告,請考慮使用為一個可能的原因,但不是以唯一的原因本文所討論的設定分頁的 SQL Server。由於各種其他條件或原因,無法記錄這些額外的錯誤訊息或警告。

發生的原因

之所以發生這個問題,是因為 Windows 作業系統網頁輸出的 SQL Server 處理程序的工作集。

這些錯誤訊息會記錄當 SQL Server 處理序的工作組達到 50%或更少的已認可至 SQL Server 處理序的記憶體。您可以使用這些錯誤訊息,以判斷在 SQL Server 效能,可大幅減少因為 Windows 作業系統網頁出 SQL Server 處理序的工作組的大小寫。此外,這些錯誤訊息會記錄在前 30 分鐘期間每隔五分鐘。第一個 30 分鐘後,這些錯誤訊息的頻率會加倍,直到頻率到達一天的最大值。

發生這個問題時,您可能會注意到在系統上其他應用程式的工作集也移出大約在同一時間。
如需詳細資訊,請造訪下列 Microsoft 網站:
http://blogs.msdn.com/psssql/archive/2007/05/31/the-sql-server-working-set-message.aspx
此外,已知的問題在於,您可能會收到這個錯誤訊息的執行個體的 SQL Server。SQL Server 錯誤記錄檔中會記錄錯誤訊息,SQL Server 在啟動過程。錯誤訊息可能是假的警告。因此,它可能不會指出已實際發生修剪的工作集。如需詳細資訊,請造訪下列 Microsoft 網站:
http://blogs.msdn.com/psssql/archive/2009/05/12/sql-server-reports-working-set-trim-warning-message-during-early-startup-phase.aspx

其他可行方案

您嘗試解決這個問題之前,請執行 〈 如何疑難排解這個問題 〉 一節,以解決這個問題的步驟。

如果您仍然遇到這個問題,您可以防止 Windows 作業系統出 SQL Server 處理序的緩衝區集區記憶體的分頁鎖定在實體記憶體中緩衝區集區配置的記憶體。您藉由指定鎖定記憶體分頁使用者權限,以做為 SQL Server 服務的啟動帳戶的使用者帳戶鎖定的記憶體。

附註64 位元版本的 SQL Server,只有 SQL Server 企業版可以使用鎖定記憶體分頁使用者權限。這適用於 SQL Server 2005 [RTM、 SP1,SP2,SP3] 和 [RTM 和 SP1],SQL Server 2008年。SQL Server 2008 SP1 累積更新 2 和 SQL Server 2005 SP3 累積更新 4 介紹 SQL Server 標準版與權限使用鎖定在記憶體中的網頁使用者的支援。 如需更多有關 64 位元系統的鎖定的分頁支援的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
970070 鎖定頁面的支援和 SQL Server 2008年標準版 64 位元系統上 SQL Server 2005 標準版 64 位元系統
若要指定鎖定記憶體分頁使用者權限,請依照下列步驟執行:
  1. 按一下 [開始],按一下 [執行] 型別 gpedit.msc然後按一下[確定]

    附註群組原則] 對話方塊隨即出現。
  2. 展開軟體,然後再展開 [ Windows 設定
  3. 展開 [安全性設定],然後展開 [本機原則
  4. 按一下 [使用者權限指派],然後按兩下 [鎖定頁面 inmemory
  5. 在 [本機安全性原則設定] 對話方塊中,按一下 [新增使用者或群組]。
  6. 在 [選取使用者或群組] 對話方塊中,加入具有執行 Sqlservr.exe 檔案的權限的帳戶,然後按一下[確定]
  7. 關閉 [群組原則] 對話方塊。
  8. 重新啟動 SQL Server 服務。
您指派後鎖定記憶體分頁] 使用者權限,並重新啟動 SQL Server 服務、 Windows 作業系統不會再出緩衝區的集區記憶體,SQL Server 中的頁面處理程序。不過,Windows 作業系統可以仍然移出 SQL Server 處理序中的 nonbuffer 集區記憶體分頁。

您可以驗證使用者權限使用的 SQL Server 執行個體,藉由確認下列的訊息會寫入 SQL Server 錯誤記錄檔,在啟動時:
緩衝集區的使用鎖定的分頁
這個訊息只適用於 64 位元版本的 SQL 項有關此訊息的錯誤記錄檔的詳細資訊,請造訪下列 Microsoft 網站:
http://blogs.msdn.com/psssql/archive/2007/10/18/do-i-have-to-assign-the-lock-privilege-for-local-system.aspx
當 Windows 作業系統網頁出 nonbuffer 集區記憶體時,仍然可能會遇到效能問題。不過,「 徵狀 〉 一節所述的錯誤訊息不會記錄在 SQL Server 錯誤記錄檔中。這是因為 SQL Server 處理程序的工作集通常不會到達 50%或更少的已認可的記憶體。

其他相關資訊

如何疑難排解這個問題

如果要疑難排解這個問題,請依照下列步驟執行:
  1. 若要解決已知會導致移出 SQL Server 處理序的工作組分頁 Windows 作業系統的問題,請套用下列 「 Microsoft 知識庫 」 文件中所述的 hotfix。

    附註 Hotfix 是累計的。較新版的重要補充程式包含該 hotfix 的較早版本。
    • Microsoft 已發現問題,可能會造成 64 位元版本的 SQL Server 工作集?修剪。 如需詳細資訊,按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
      905865 當您使用終端機服務登入或登出的電腦執行 Windows Server 2003 時,可能會修剪的主控台工作階段中的所有處理程序工作集大小
    • 他們快取不乾淨的緩衝區,如果沒有執行緩衝的 I/O,例如檔案複製作業的應用程式時,執行 Windows Server 2003 的電腦可能太積極。這種行為會造成要修剪的 SQL Server 的工作集。 如需詳細資訊,按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
      920739 當您複製大於約 500 MB 在 Windows Server 2003 S,或在 Windows Server 2003 S 中的檔案,可能會遇到整體系統效能降低
    • 當系統正在使用某些進階的 TCP 功能時,可能會修剪 SQL Server 工作集。 如需詳細資訊,按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
      942861 當應用程式會連接到 SQL Server 在執行 Windows Server 2003 的伺服器上的錯誤訊息: 「 一般網路錯誤 」,「 通訊連結失敗 」 或 「 傳輸層級錯誤 」
    • 多處理器的電腦上正在執行 Windows Server 2003,系統處理程序可能消耗掉大部份的可用系統記憶體。 如需詳細資訊,按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
      942486 系統處理程序可能會耗用最多處理器的電腦執行 Windows Server 2003 上的可用系統記憶體
  2. 如果裝置驅動程式使用 MmAllocateContiguousMemory 函式,而且它會設定的值 HighestAcceptableAddress 小於 4 gb (GB) 的參數,Windows 作業系統可能會移出 64 位元 SQL Server 處理序的工作組分頁。若要解決這個問題,請連絡廠商的裝置驅動程式的驅動程式更新。發生問題的驅動程式清單,請參閱下列 「 Microsoft 知識庫 」 文件的 「 其他廠商 」 一節:
    2121098 建議的操作系統更新程式和 SQL Server 安裝的驅動程式
  3. 如果您在套用這些 hotfix 之後,還是會發生這些問題,套用 Windows 所 hotfix 會限制每個處理序的刪剪作業數目。 如需詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
    938486 在 Windows Server 2003 電腦會因為由要求大量的記憶體不確定模組所造成的記憶體管理員調整作業變成沒有回應
    956341 因為大型記憶體配置要求的 Windows Server 2003 電腦變成沒有回應
    當裝置驅動程式嘗試配置記憶體時,Windows 作業系統可能頁面的其他應用程式的工作集。此 Windows hotfix 可讓您使用事件追蹤來找出造成問題的裝置驅動程式。若要找到特定的驅動程式會使工作設定的調整行為的相關資訊,請參閱 MSDN 文件 」識別配置的連續記憶體的驅動程式."
  4. 應用程式可能太多,使用系統快取,而且可能會造成系統快取的大成長率。若要回應系統快取的成長,系統分頁外出工作集的 SQL Server 處理序或其他應用程式。如果您遇到這個問題,您可以使用應用程式中的某些記憶體管理功能。這些函式來控制檔案 I/O 作業可以在應用程式中使用的系統快取空間。例如,您可以使用 SetSystemFileCacheSize 函式, GetSystemFileCacheSize 若要控制檔案 I/O 作業可以使用的系統快取空間的函式。

    若要檢視這個物件,以判斷系統快取工作集是否使用太多的記憶體中的各種不同的計數器的值,您可以使用 [記憶體] 效能物件。例如,您可以檢視系統快取內建位元組和快取位元組計數器。如需有關這個主題的詳細資訊,請造訪下列 Microsoft 網站:
    http://blogs.msdn.com/ntdebugging/archive/2007/11/27/too-much-cache.aspx

    http://blogs.msdn.com/ntdebugging/archive/2009/02/06/microsoft-windows-dynamic-cache-service.aspx

    http://support.microsoft.com/default.aspx?scid=kb;EN-US; 976618
    您可以下載和部署 「 Microsoft Windows 動態快取服務 」 來控制由系統快取的記憶體。
  5. 如果 SQL Server 正在執行以及 SAP R/3 中,您可能會遇到分頁問題。 如需詳細資訊,按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
    931308 Windows Server 2003 電腦上執行的 SAP R/3 程式時,可能會遭遇到硬碟的增加的分頁
  6. 如果您在 Windows Server 2008 上執行 SQL Server,您必須套用修正程式可能會導致其他作業系統元件所進行的工作集修剪或不必要的過多記憶體耗用量的已知問題。如需詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:

    971442 當您嘗試透過網路將檔案複製從執行 Windows Vista 的伺服器或 Windows Server 2008 時,伺服器的系統效能變得嚴重受損

    974609 當您執行大型的應用程式隨機執行 Windows Server 2008 電腦停止回應

    971714 報告產生處理程序可能會停止回應時具有作用中的目錄診斷範本,以產生報告,以在 Windows Server 2008 為基礎的網域控制站上執行 Perfmon.exe
  7. 如果您在 Windows 服務 2008 R2 上執行 SQL Server,您必須套用修正程式可能會導致工作集調整的已知問題。如需詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
    979149 當您執行大型的應用程式執行的 Windows 7 或 Windows Server 2008 R2 的電腦就會變成沒有回應

    2155311 效能不佳,就會發生在 NUMA 為基礎的處理器且執行 Windows Server 2008 R2 或 Windows 7 如果是在第一個 4 GB 的記憶體內的記憶體中的執行緒要求大量的電腦上

    2468345 電腦間歇性地執行不良,或當 Storport 驅動程式用在 Windows Server 2008 R2 中停止回應

如何判斷所使用的 64 位元版本的 SQL Server 的記憶體

您可以使用效能監視器檢視所使用的 64 位元版本的 SQL Server 記憶體頁面。若要這樣做,請監視下列效能計數器:
效能物件: 記憶體
[Pages/Sec 計數器:
如需有關如何使用此計數器來判斷記憶體頁面的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
889654 如何判斷適當的分頁檔案大小為 64 位元版本的 Windows Server 2003 或 Windows XP
此外,您可以藉由監視下列效能計數器測量分頁在 64 位元版本的 SQL Server 的效果:
效能物件: 處理程序
計數器: 私用位元組
執行個體: sqlservr

效能物件: 處理程序
計數器: 工作集
執行個體: sqlservr
私用位元組計數器測量目前已認可的記憶體。工作集計數器測量目前所佔用的處理程序的實體記憶體。64 位元版本的 SQL Server 也會使用下列效能計數器公開 (expose) 緩衝集區配置的記憶體:
效能物件: SQL Server: 記憶體管理員
計數器: 總伺服器 Memory(KB)
附註如果具名執行個體的 64 位元版本的 SQL Server 執行個體,效能物件的名稱如下:
MSSQL $InstanceName: 記憶體管理員
如果工作集計數器的值小於總伺服器 Memory(KB) 計數器的值,至少部分是緩衝集區的一部份的記憶體已修剪從工作集的 SQL Server。

您指派之後鎖定記憶體分頁] 使用者權限,並重新啟動 SQL Server 服務,緩衝集區的 SQL Server 處理序還是能回應記憶體資源通知事件,並以動態方式增加或減少回應這些事件。不過,您無法看到鎖定在記憶體中的下列效能計數器的記憶體配置的緩衝區集區:
  • 私用位元組計數器和工作集在效能監視器計數器
  • 在 [工作管理員] 中的 [處理程序] 索引標籤上的 [記憶體使用量] 欄
這些網頁會被鎖定之後,這些效能計數器會表示在 SQL Server 處理序的記憶體配置,當這些配置不會使用緩衝集區。SQL Server: 記憶體管理員效能物件的總伺服器 Memory(KB) 計數器精確地表示緩衝區集區配置的記憶體。

重要的考量之前指派 「 將網頁鎖在記憶體中 」 的使用者權限的 64 位元版本的 SQL Server 的執行個體

您應該額外的考量之前先指派鎖定記憶體分頁使用者權限。如果您指派此使用者權限設定不正確的系統上,系統可能會變得不穩定或發生整個系統效能降低。此外,可能會在事件日誌中記錄事件識別碼 333。

若您連絡 Microsoft 客戶支援服務 」 (CSS) 這些問題時,CSS 工程師可能會要求您撤銷此使用者權利的使用者帳戶做為 SQL Server 服務的啟動帳戶。這個步驟可能需要收集必要的 SQL Server 和其他系統執行的應用程式的各種選項的組態可以使用 CSS 工程師的重要的效能資料。CSS 工程師收集效能資料之後,您可以指派鎖定記憶體分頁使用者權限給 SQL Server 服務的啟動帳戶。

指定鎖定記憶體分頁使用者權限之前,請確定您擷取的效能監視器記錄檔,以判斷記憶體需求的不同應用程式和系統安裝的服務。這些應用程式也包含 SQL Server。如果要判斷記憶體需求,請收集下列的比較基準資訊:
  • 請確定您設定最大伺服器記憶體選項和 [最小伺服器記憶體選項正確。這些選項會反映僅 SQL Server 處理序的緩衝集區記憶體需求。這些選項不會包含在 SQL Server 處理序內的其他元件的配置的記憶體。這些元件包括:
    • SQL Server 背景工作執行緒
    • 多頁配置器的 SQL Server 記憶體管理員
    • 不同的 Dll 和 SQL Server 處理序載入 SQL Server 處理序位址空間內的元件
    • 備份與還原作業
  • Dll 和元件包括各種不同的 OLE DB 提供者、 延伸預存程序、 用於sp_OACreate預存程序、 連結的伺服器,以及 SQL Server CLR 的 Microsoft COM 物件。配置這些元件的記憶體落於 SQL Server 處理序的位址空間的 nonbuffer 集區區域。若要在理想情況下決定整個 SQL Server 處理程序可以使用的記憶體最大數量,您必須減去的元件,請不要使用您想要使用的 SQL Server 處理程序的記憶體總數從緩衝集區配置的記憶體。然後,您可以使用的其餘部分值設定的最大伺服器記憶體選項。設定最大伺服器記憶體選項和 [最小伺服器記憶體選項前,您應該小心檢視 SQL Server 線上叢書 》 中的 「 手動設定記憶體選項 」 主題。
  • 判斷記憶體需求的其他應用程式和 Windows 作業系統元件。應用程式可能包含其他 SQL Server 元件,例如,SQL Server 代理程式、 SQL Server 複寫代理程式、 SQL Server 報告服務、 SQL Server 分析服務、 SQL Server 整合服務,以及 SQL Server 全文檢索搜尋。執行備份作業和檔案複製作業的應用程式可能會使用大量的記憶體。請考慮作業,例如大量複製和快照集代理程式產生檔案 IO。當您判斷值和最小伺服器記憶體選項的最大伺服器記憶體選項,您必須考慮這些所有的應用程式的記憶體需求。您可以使用私用位元組計數器,並在每個程序的程序物件下的工作集計數器來判斷特定的處理程序的記憶體需求。
  • 根據預設,[鎖定記憶體分頁] 使用者權利已指派到內建的本機系統帳戶。如需詳細資訊,請造訪下列 Microsoft 網站:
    http://blogs.msdn.com/psssql/archive/2007/10/18/do-i-have-to-assign-the-lock-privilege-for-local-system.aspx
  • 如果網域中的所有 SQL Server 處理程序中全面都使用 Windows 使用者帳戶時,決定使用群組原則設定來指派的使用者權限。32 位元 SQL Server 處理序可能會使用這個帳戶作為啟動帳戶。不過,這個帳戶需要鎖定記憶體分頁的使用者權利,才能啟用地址視窗化擴充功能 (AWE) 功能。如需詳細資訊,請參閱 SQL Server 線上叢書 》 中的 「 提供 SQL Server 最大記憶體量 」 主題。
  • 設定最大伺服器記憶體選項與多個 SQL Server 執行個體的最小伺服器記憶體選項之前,請考慮每個 SQL Server 執行個體的 nonbuffer 集區的記憶體需求。然後,設定這些選項的每個 SQL Server 執行個體。
在理想的情況下,您會收集在尖峰負載期間此比較基準資訊。因此,您可以判斷各種應用程式和元件,來支援尖峰負載的記憶體需求。到另一個系統上,視活動和系統執行的應用程式而定,從一個系統而有所不同的記憶體需求。

如何使用 SQL Server 環狀緩衝區中的資訊來決定記憶體條件,便會發生分頁時

您可以使用 SQL Server 環狀緩衝區中的資訊來判斷在伺服器上的記憶體條件時便會發生分頁。您可以使用如下列的指令碼的指令碼來取得這項資訊。
SELECT CONVERT (varchar(30), GETDATE(), 121) as runtime,
DATEADD (ms, -1 * (sys.ms_ticks - a.[Record Time]), GETDATE()) AS Notification_time,  
 a.* , sys.ms_ticks AS [Current Time]
 FROM 
 (SELECT x.value('(//Record/ResourceMonitor/Notification)[1]', 'varchar(30)') AS [Notification_type], 
 x.value('(//Record/MemoryRecord/MemoryUtilization)[1]', 'bigint') AS [MemoryUtilization %], 
 x.value('(//Record/MemoryRecord/TotalPhysicalMemory)[1]', 'bigint') AS [TotalPhysicalMemory_KB], 
 x.value('(//Record/MemoryRecord/AvailablePhysicalMemory)[1]', 'bigint') AS [AvailablePhysicalMemory_KB], 
 x.value('(//Record/MemoryRecord/TotalPageFile)[1]', 'bigint') AS [TotalPageFile_KB], 
 x.value('(//Record/MemoryRecord/AvailablePageFile)[1]', 'bigint') AS [AvailablePageFile_KB], 
 x.value('(//Record/MemoryRecord/TotalVirtualAddressSpace)[1]', 'bigint') AS [TotalVirtualAddressSpace_KB], 
 x.value('(//Record/MemoryRecord/AvailableVirtualAddressSpace)[1]', 'bigint') AS [AvailableVirtualAddressSpace_KB], 
 x.value('(//Record/MemoryNode/@id)[1]', 'bigint') AS [Node Id], 
 x.value('(//Record/MemoryNode/ReservedMemory)[1]', 'bigint') AS [SQL_ReservedMemory_KB], 
 x.value('(//Record/MemoryNode/CommittedMemory)[1]', 'bigint') AS [SQL_CommittedMemory_KB], 
 x.value('(//Record/@id)[1]', 'bigint') AS [Record Id], 
 x.value('(//Record/@type)[1]', 'varchar(30)') AS [Type], 
 x.value('(//Record/ResourceMonitor/Indicators)[1]', 'bigint') AS [Indicators], 
 x.value('(//Record/@time)[1]', 'bigint') AS [Record Time]
 FROM (SELECT CAST (record as xml) FROM sys.dm_os_ring_buffers 
 WHERE ring_buffer_type = 'RING_BUFFER_RESOURCE_MONITOR') AS R(x)) a 
CROSS JOIN sys.dm_os_sys_info sys
ORDER BY a.[Record Time] ASC

附註此查詢是適用於 SQL Server 2005 和 SQL Server 2008年。

您可以查詢所提供的動態管理檢視 sys.dm_os_process_memory,以了解系統是否發生記憶體不足情況的資訊。如需詳細資訊,請參閱 SQL Server 2008年線上叢書 》 的參考,在下列 MSDN 網站:
http://msdn.microsoft.com/en-us/library/bb510747.aspx
SQL Server 2008 R2 最佳練習分析器 (SQL Server 2008 R2 BPA)] 提供多個規則,以偵測可能會導致工作集調整的 SQL Server 處理程序的情況。SQL Server 2008 R2 BPA 支援 SQL Server 2008年,以及 SQL Server 2008 R2。

摺疊此表格展開此表格
規則軟體規則標題規則描述針對規則進行評估的產品版本
SQL Server 2008 R2 最佳練習分析器 (SQL Server 2008 R2 BPA)
SQL Server 記憶體設定不正確


如果您執行 BPA 工具,並收到警告,「 資料庫引擎的設定不正確的 SQL Server 記憶體 」 您需要檢查這個執行個體的 SQL Server 的最大伺服器記憶體設定,並遵循一節中的建議 」 之前的重要考量事項指派給 '將網頁鎖在記憶體中' 使用者對 SQL Server 是 64 位元版本的執行個體 」 這篇文章。SQL Server 2008
SQL Server 2008 R2


SQL Server 2008 R2 最佳練習分析器 (SQL Server 2008 R2 BPA)作業系統檔案和驅動程式需要更新的工作集調整如果您執行 BPA 工具,並發生錯誤,「 資料庫引擎-操作系統檔案和驅動程式需要更新的工作集修剪,「 您要檢閱本文的 〈 解決方案 〉 一節所述的所有修正程式,並將它們套用。
SQL Server 2008
SQL Server 2008 R2

SQL Server 2008 R2 最佳練習分析器 (SQL Server 2008 R2 BPA)已分頁移出的 SQL Server 記憶體重要的部分
如果您執行 BPA 工具,並發生錯誤 「 資料庫引擎-SQL Server 記憶體已分頁移出,重要的部分 」 您要檢閱這份文件的 「 解析 」 和 「 因應措施 」 區段,並採取適當動作。
SQL Server 2008
SQL Server 2008 R2


在 Windows Server 2008 中,並在 Windows Server 2008 R2 的改進


Windows Server 2008 和 Windows Server 2008 R2 改善的連續記憶體配置機制。這項改良功能可讓 Windows Server 2008 和 Windows Server 2008 R2 降低就某種程度的應用程式的工作集的分頁效果新的記憶體要求到達時。

以下是從 Microsoft 白皮書 「 往前推進的記憶體管理中視窗 」 改良的說明:

在 Windows Server 2008 中的實際連續的記憶體配置大幅增強。若要配置的連續記憶體的要求是很有可能成功,因為記憶體管理員現在動態取代網頁中,通常不需要調整工作集,或執行 I/O 作業。此外,許多其他類型的頁面 — 例如核心 」 堆疊與檔案系統中繼資料分頁,等等 — 會立即取代的對象。因此,多個連續的記憶體在任何時候是通常可使用。此外,若要取得這種配置的成本就會大幅降低。
若要檢視 「 往前推進的記憶體管理中視窗 」 (英文) 白皮書,請造訪下列 Microsoft 網站:
http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/MemMgt.docx
如需詳細資訊,請造訪下列 Microsoft 網站:
http://blogs.msdn.com/psssql/archive/2008/03/03/sql-server-working-set-trim-problems-consider.aspx
http://support.microsoft.com/kb/2001745
附註在 Windows Server 2008 為基礎的電腦上,您必須安裝 SQL Server Service Pack 2 (SP2) 或更新版本的 SQL Server 服務套件。

本文中所討論的協力廠商產品並非由 Microsoft 製造。Microsoft 不以擔保、 默示或其他方式保證這些產品的可靠性和效能。

屬性

文章編號: 918483 - 上次校閱: 2014年6月20日 - 版次: 2.0
這篇文章中的資訊適用於:
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
關鍵字:?
kbsqlsetup kbsql2005engine kbexpertiseadvanced kbinfo kbmt KB918483 KbMtzh
機器翻譯
請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。
按一下這裡查看此文章的英文版本:918483
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com