文章編號: 918483 - 上次校閱: 2011年7月27日 - 版次: 1.0

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

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

結論

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
日期時間 sql server 處理序記憶體的 spid1s a 重要部分已移出。這可能會導致效能降低的情形。工期: 0 秒。工作集 (KB): 1086400,認可 (KB): 2160928,記憶體使用率: 50%。
錯誤訊息 2
日期時間 sql server 處理序記憶體的 spid1s a 重要部分已移出。這可能會導致效能降低的情形。持續時間: 315 的秒數。工作集 (KB): 410156,認可 (KB): 2201296,記憶體使用率: 18%。
錯誤訊息 3
日期時間 sql server 處理序記憶體的 spid1s a 重要部分已移出。這可能會導致效能降低的情形。持續時間: 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 server 處理序記憶體的重要部份已被移出 」 錯誤訊息。在許多情況下,這些其他錯誤訊息或警告沒有不與圖片一起顯示的錯誤訊息。

如果您注意到其中一個錯誤訊息或警告,請考慮使用這篇文章,於 [可能的原因,但不是唯一的原因討論的設定分頁 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 (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 (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 企業版 鎖定記憶體分頁 使用者權限。這只適用於 [RTM、 SP1,SP2,SP3],SQL Server 2005 和 SQL Server 2008 [RTM 和 SP1]。SQL Server 2008 SP1 累積更新 2 和 SQL Server 2005 SP3 累積更新 4 介紹使用 SQL Server 標準版本的支援 鎖定記憶體分頁 使用者權限。 如需有關鎖定頁面的支援在 64 位元系統上,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
970070? (http://support.microsoft.com/kb/970070/ ) 鎖定頁面的支援和 SQL Server 2008年標準版 64 位元系統上 SQL Server 2005 標準版 64 位元系統
若要指派 鎖定記憶體分頁 使用者權限,請依照下列步驟執行:
  1. 按一下 [ 開始按一下 執行,型別 gpedit.msc然後按一下 [確定].

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

您可以驗證使用者權限的 SQL Server 執行個體所使用藉由確認在啟動時,SQL Server 錯誤記錄檔中寫入下列訊息:
緩衝集區的使用鎖定的頁面
此訊息僅適用於 64 位元版的 SQL Server。如需有關在錯誤記錄檔中此訊息的詳細資訊,請造訪下列 Microsoft 網站:
http://blogs.msdn.com/psssql/archive/2007/10/18/do-i-have-to-assign-the-lock-privilege-for-local-system.aspx (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. 若要解決造成 Windows 作業系統的 SQL Server 程序的工作集] 頁面的已知的問題,請套用下列 「 Microsoft 知識庫 」 文件中所述的 hotfix。

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

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

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

    971442? (http://support.microsoft.com/kb/971442/ ) 當您嘗試透過網路複製檔案執行 Windows Vista 的伺服器或 Windows Server 2008 伺服器的系統效能變得嚴重降低

    974609? (http://support.microsoft.com/kb/974609/ ) 隨機執行 Windows Server 2008 的電腦停止回應時執行大型應用程式

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

    2155311? (http://support.microsoft.com/kb/2155311/ ) 效能不佳,就會發生在 NUMA 架構處理器且執行 Windows Server 2008 R2 或 Windows 7 如果執行緒的要求相當多記憶體內第一個 4 GB 記憶體的電腦上

    2468345? (http://support.microsoft.com/kb/2468345/ ) 電腦會間歇性執行不良,或當 Storport 驅動程式用在 Windows Server 2008 R2 停止回應

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

您可以使用效能監視器來檢視的記憶體頁使用 64 位元版的 SQL Server。若要執行這項操作,監視下列效能計數器:
效能物件: 記憶體
[Pages/Sec 計數器:
如需有關如何使用此計數器來判定記憶體頁面上,按一下下面的文件編號,檢視中的文件Microsoft 知識庫 」:
889654? (http://support.microsoft.com/kb/889654/ ) 如何判斷適當的頁檔案大小為 64 位元版本的 Windows Server 2003 或 Windows XP
此外,您可以測量在 64 位元版本的 SQL Server 藉由監看下列分頁的效果效能計數器:
效能物件: 處理程序
計數器: 私用位元組
執行個體: sqlservr

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

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

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

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

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

指派之前 鎖定記憶體分頁 使用者權限,請確定您擷取效能監視器記錄檔來判斷記憶體需求的不同應用程式和系統已安裝的服務。這些應用程式也包含了 SQL Server。若要判斷記憶體需求,請收集下列的比較基準資訊:
  • 請確定您設定 最大伺服器記憶體 選項及 最小伺服器記憶體 正確選項。這些選項會反映只有 SQL Server 處理程序的緩衝區集區記憶體需求。這些選項不包含配置給 SQL Server 處理程序中的其他元件的記憶體。這些元件包括下列各項:
    • SQL Server 的背景工作執行緒
    • 多頁配置器的 SQL Server 記憶體管理員
    • 各種 Dll 和 SQL Server 處理程序載入 SQL Server 處理程序的位址空間內的元件
    • 備份與還原作業
  • Dll 和元件包含各種不同的 OLE DB 提供者,延伸預存程序,Microsoft COM 物件所使用的 sp_OACreate 預存程序、 連結的伺服器,以及 SQL Server CLR。配置這些元件的記憶體耙梳 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 (http://blogs.msdn.com/psssql/archive/2007/10/18/do-i-have-to-assign-the-lock-privilege-for-local-system.aspx)
  • 如果您使用全域 Windows 使用者帳戶網域中的所有 SQL Server 處理程序,決定使用群組原則設定來指派使用者權限。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 所提供的資訊。如需詳細資訊,請參閱下列 MSDN 網站位於 SQL Server 2008年線上叢書 》 的參考:
http://msdn.microsoft.com/en-us/library/bb510747.aspx (http://msdn.microsoft.com/en-us/library/bb510747.aspx)

SQL Server 2008 R2 BPA 資訊

SQL Server 2008 R2 最佳練習分析器 (SQL Server 2008 R2 BPA) 提供多個規則,以偵測可能會導致工作集調整 SQL Server 程序的情況。SQL Server 2008 R2 BPA 支援 SQL Server 2008年和 SQL Server 2008 R2。

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

如果您執行 BPA 工具,並遇到錯誤,「 資料庫引擎-操作系統檔案和驅動程式需要更新的工作集修剪 」 您需要檢閱本文 〈 解決方案 〉 一節中所討論的所有修正程式,並將其套用。

如果您執行 BPA 工具,但發生錯誤 「 資料庫引擎-記憶體已移出,SQL Server 的很大部分"您要檢閱本文的 〈 解決方案 〉 和 〈 解決方法 〉 章節,並採取適當的動作。

參考

摺疊此表格展開此表格
規則軟體規則標題規則識別碼
SQL Server 2008 R2 BPA 規則SQL Server 的記憶體設定不正確RID3804
SQL Server 2008 R2 BPA 規則 作業系統檔案及驅動程式需要更新的工作集修剪 RID0059
SQL Server 2008 R2 BPA 規則SQL Server 記憶體的重要部分已移出RID0049

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


Windows Server 2008 和 Windows Server 2008 R2 改善的連續記憶體配置機制。這項改良功能可讓 Windows Server 2008 和 Windows Server 2008 R2 減少某一程度的應用程式的工作集的分頁影響新的記憶體要求抵達時。

下列是從 Microsoft 白皮書 」 往前推進中記憶體管理在 Windows 「 改進的說明:

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

本文將告訴您的協力廠商產品製造所公司 Microsoft 無關。Microsoft 會使任何擔保、 默示或其他有關這些產品的可靠性。

這篇文章中的資訊適用於:
  • 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 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:918483? (http://support.microsoft.com/kb/918483/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。