首先,這裏是我們的設置:如何明確解決此錯誤:由於內存不足,.NET Framework執行被升級策略中止?
- 的SQL Server 2014 SP2標準版64位
- 的128GB RAM(最大通過標準版允許的),其中120GB被分配給SQL Server
- 服務器目前擁有〜5000個數據庫,這些都是相似的(相同的表,存儲過程等),總共690GB的數據(MDF文件只)
現在發生了什麼:
飄飛,服務器已經運行了一段時間後,我們收到了一些數據庫執行查詢時,此錯誤:
.NET Framework execution was aborted by escalation policy because of out of memory
這個錯誤發生更多的時候,當我們執行的所有客戶端數據庫的更新(當我們啓動一個功能時)使用Red Gate SQL Multi Script。在〜5000 DBS中,我們有70個錯誤。再次運行更新腳本,錯誤發生在一個部分上,依此類推,直到我們正確更新所有數據庫。這只是煩人的。
我們有這個錯誤很長一段時間。我們的服務器有64GB的內存,所以我們只是增加了更多的內存來最大限度地使用SQL Server標準編輯器,但是仍然在幾天後出現錯誤。我們認爲這個錯誤可能是其他問題的症狀。
幾件事情,可能有助於得到一個答案:
- 我們的SQL Server的版本是64位的,所以我們認爲我們沒有對付Virtual Address Space Reservation
- 錯誤還發生當從用PHP/Linux編寫的客戶端應用程序運行時,所以我們不是在談論.NET框架的客戶端代碼
- 在我們的數據庫中,我們製作的.NET框架的唯一用法是GROUP_CONCAT,一個.NET CLR程序集用戶定義函數幫助我們模擬MySQL GROUP_CONCAT聚合。我們在每個5000客戶端數據庫中都有一個程序集的副本。
- 我們已經試圖降低
max server memory
設置(以96GB),但我們仍然得到這些錯誤
如果需要更多的信息,我會更新我的問題。
我認爲CLR沒有足夠的內存。這裏是很好的文章,希望它有幫助:https://www.johnsansom.com/sql-server-memory-configuration-determining-memtoleave-settings/ –