Msg 701, Level 17, State 123, Line 1
There is insufficient system memory to run this query.
我有一個使用表值函數的查詢。我正在多次調用該函數。 這個錯誤是否意味着我的堆棧空間不足?或者我可以調整我的SQL框內存設置來解決這個問題?有任何想法嗎?SQL Server 2005錯誤,沒有足夠的系統內存來運行此查詢
Msg 701, Level 17, State 123, Line 1
There is insufficient system memory to run this query.
我有一個使用表值函數的查詢。我正在多次調用該函數。 這個錯誤是否意味着我的堆棧空間不足?或者我可以調整我的SQL框內存設置來解決這個問題?有任何想法嗎?SQL Server 2005錯誤,沒有足夠的系統內存來運行此查詢
我已通過重新設計我的查詢使用'多語句函數'來解決此問題 這種類型的TVF顯然會在磁盤上創建臨時表,因此不會因內存不足而受到影響。
感謝
如果這是一個龐大的查詢,並且/或者有很多用戶使用系統,每個用戶都運行大量查詢,這是不可避免的。
不幸的是,即使工作負載與以前相同,SQL Server中也存在一個已知的問題,即發生此錯誤。停止/重新啓動服務器雖然完全荒謬,但通常可以解決問題。
您可以考慮的另一件事是運行dbcc free*cache
語句清除緩存佔用的內存。
Reference taken from this blog !
有不同的替代方案來解決這個問題。
首先,檢查您的SQL Server設置「最小服務器內存」和「最大服務器內存」。如果您發現這兩個值的差異很小,請增加「最大服務器內存」。
二,找到長時間運行的查詢及其內存使用情況信息,如果此查詢處於空閒狀態,請驗證並終止此進程。數據庫性能優化對於內存使用來說是一件重要的事情。
第三,找到長時間運行查詢的索引用法,因爲沒有正確索引您的系統磁盤I/O增加並直接影響到您的內存。
四,檢查虛擬內存頁面文件的大小並增加此文件的大小。
五,檢查「每個查詢最小內存」的大小,實際上它默認爲1024 KB,但在極少數情況下可以減小此參數的大小。其實,這不是可取的,但你可以嘗試。
六,嘗試執行此DBCC命令,並且這不是可取的,因爲它可能會影響到服務器的整體性能。但你可以試試這個。