有可能不足夠的虛擬記憶體當在 SQL Server 中有大量的資料庫

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

徵狀

可能是可用的虛擬位址空間不足,無法在 Microsoft SQL Server 處理序中如果下列條件全部成立時您正在執行 SQL Server 使用預設設定值:
  • 伺服器具有 2 GB 以上的 RAM。
  • 有大一些 (例如,超過 500 個) 系統上的資料庫。
  • 大部分的資料庫會更新 (比方說資料庫沒有 「 唯讀 」 的狀態)。
  • 沒有使用大部分的 255 個 SQL Server 背景工作執行緒不足,無法同時使用中的使用者連線。
整個 2 GB 的虛擬位址空間用完之後,SQL Server 可能會產生下列錯誤訊息 (或整個 3 GB 虛擬位址空間會使用與 SQL Server 企業版上後 / 3GB 切換 Boot.ini 檔案中)。

訊息 1

錯誤: 17802,嚴重性: 18 狀態: 3
無法建立伺服器事件的執行緒。

訊息 2

SQL Server 無法產生 process_loginread 執行緒。

訊息 3

警告: 清除程序快取,以釋放連續的記憶體。

緩衝區散發: 遭竊 = 3454 免費 = 2540年程序 = 138
Inram = 0 Dirty = 1108 保留 = 35
我 / O = 0 Latched = 0,其他 = 214821
緩衝計數: 認可 = 222096 目標 = 雜湊 222096 = 215964
InternalReservation = 547 ExternalReservation = 0 最小可用 = 512
程序快取: TotalProcs = 8 TotalPages = 138 InUsePages = 138
動態記憶體管理員: 偷 = 3556
OS = 497 一般 = 1706年
查詢計劃 = 755 最佳化器 = 0
公用程式 = 9 連線 = 1583年
全域記憶體的物件: 資源 = 1119年鎖定 = 163 XDES = 1 SQLCache = 90 複寫 = 5 LockBytes = 2 ServerGlobal = 20
查詢記憶體管理員: 授與 = 0 等候 = 0 的最大值 = 164370 可用 = 164370

發生的原因

為每個更新資料庫 SQL Server 會配置至少一個 64 KB 區塊,以用於格式設定記錄檔資料錄之前會寫入至磁碟。在第一個記錄檔資料錄的資料庫例如期間產生 INSERT、 UPDATE 或 DELETE 陳述式時,會發生這項配置。取決於該活動及產生記錄檔資料錄大小,後續的修改可能會觸發其他 64 KB 配置的配置。SQL Server 7.0 會配置不能超過三個 54 KB 區塊。 在 SQL Server 2000,配置上方的數量為每個資料庫是處理器數目的函式的 SQL Server 被設定為使用中。

其他可行方案

使用 -g 離開可用額外、 未保留虛擬記憶體,對於這些資料庫配置的啟動參數。-g 參數被記載在 Readme.txt 的 SQL Server 7.0 的服務套件和 SQL Server 2000 線上叢書 》 中。在 < 其他相關資訊 > 本文中的一節包含 Microsoft 建議您使用來決定適當的值對此設定的設定。

其他相關資訊

與 2 GB 或更多的 RAM、 SQL Server 會保留所有但 256 MB (SQL Server 7.0) 或 384 MB (SQL Server 2000),在啟動程序,以供緩衝集區使用的虛擬位址空間的電腦上此外,儲存資料和程序快取,SQL Server 會使用來服務小於 8 KB 的 SQL Server 處理程序是從其他大部分的記憶體要求緩衝區集區記憶體。剩餘的未保留的記憶體被為了與其他配置無法從緩衝集區服務使用。這些配置包括,但不是限於):
  • 牌堆,SQL Server 會建立任何執行緒在關聯性的執行緒環境區塊。SQL Server 會建立所有 255 的工作者執行緒之後這會是大約 140 MB。
  • 配置其他的 DLL 所做或處理,正在執行 SQL Server 位址空間 (其中變化的系統),例如:
    • 從任何連結伺服器的 OLE DB 提供者。
    • 使用 sp_OA 系統所載入的 COM 物件的預存程序或延伸預存程序。
  • 任何圖像 (.exe 或.dll) 載入位址] 空間中的這通常當您使用 [連結的伺服器,sp_OA,使用 20 到 25 MB 但可能更多或擴充預存程序。
  • 處理序堆積,SQL Server 可能會建立任何其他堆積。在啟動過程這通常是 10 MB,但是可能更多,如果您使用連結的伺服器、 sp_OA 或延伸預存程序。
  • 從 SQL Server 處理程序是大於例如那些大型查詢計劃所需的 8 KB 的配置傳送和接收緩衝區,如果 網路封包大小 的組態選項是接近到 8 KB 依此類推。若要讓這個數字尋找 OS 保留 值,報告中 DBCC MEMORYSTATUS 並且,被回報為 8 KB 分頁數目。這個典型的值是 5 MB。
  • 追蹤緩衝區集區中每一個緩衝區的狀態資訊的陣列。這通常是大約 20 MB 除非 SQL Server 正在執行已與地址視窗化擴充功能 () 啟用 AWE,在這種情況下,它可以明顯較高。
在有大量的資料庫的系統上 64 KB 配置所需的格式設定的記錄檔可能會佔用所有剩餘的虛擬記憶體。在該點後續的配置可能會失敗,導致一或多個錯誤,會列在 < 徵狀一"本文中的一節。

藉由使用 -g 啟動參數可以指示 SQL Server,以保留額外的虛擬記憶體可用,如此這些記錄檔相關的配置和其他一般配置的組合不會執行的虛擬位址空間不足。

下列表格的列出一些建議的起點將 -g 資料庫和伺服器版本數目而定的值:
摺疊此表格展開此表格
資料庫SQL Server 7.0SQL Server 2000
250-g134N/A
500-g185N/A
750-g237N/A
1000-g288-g288
1250-g340-g340
1500-g392-g392
此資料表已使用一般所列的值來計算,且它也根據未連結的伺服器活動、 sp_OA 或延伸預存程序正在使用中的假設。它也根據假設您不使用 AWE,並且該 SQL Profiler 不在使用中。任何這些狀況可能需要您增加的值 -g

Microsoft 建議您採取嚴重的考量,因為所需的系統上有這個數量的資料庫的額外負荷遠離緩衝集區可能會導致效能不佳系統整體花大量虛擬記憶體,使用比這更多資料庫執行伺服器之前。

此外,建立大量的資料庫有虛擬記憶體最大顯著性的效果。也有可能會造成緩衝區集區記憶體不足狀況的每個資料庫記憶體配置。比方說,您可能會收到下列的錯誤訊息:
錯誤: 701 嚴重性: 17,狀態: 123。
沒有系統記憶體不足,無法執行此查詢。
這類的記憶體不足狀況可能是在 SQL Server 2005 中較常見的因為 SQL Server 2005 追蹤比舊版 SQL Server 的多個每個資料庫中繼資料。

當您藉由使用 sys.dm_db_index_usage_stats 預存程序追蹤索引使用狀況時,作業可能需要大量的記憶體。 作業需要大量的記憶體,如果每個資料庫中有大量的索引。

屬性

文章編號: 316749 - 上次校閱: 2007年2月28日 - 版次: 11.1
這篇文章中的資訊適用於:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard Edition
關鍵字:?
kbmt kberrmsg kbtshoot kbnofix kbprb KB316749 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:316749
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