2012-10-04 16 views
0

我們有一個Windows窗體應用程序,應用程序的後端是SQL Server Express 2005/2008。我們的應用程序可以安裝在Windows XP SP3/Windows Vista/Windows 7上。SQL Server數據庫引擎內存泄漏

我們觀察到SQL Server Express中存在大量內存泄漏。

通常情況下,有即使應用程序沒有被用戶運行兩個過程:

  1. 輪詢進程,以檢查文件的可用性。 (如果文件不可用,那麼只有一個查詢被觸發以檢查一些配置設置)

  2. A調度過程。 (這個過程觸發查詢每分鐘來檢查任何計劃任務)

我們觀察到,在SQL Server(sqlsrvr.exe)的內存使用量不斷增加。在大約一個小時內,內存使用量達到1GB,並且永遠不會下降。

我們也注意到,如果輪詢過程的間隔增加,那麼內存使用量會逐漸增加,但是它確實增加了。

SQL Server的內存使用率越高,機器性能和機器上運行的所有其他應用程序的性能就越低。

在這種情況下,請提供建議來控制SQL Server的內存使用情況。

PFB細節:

  1. 軟件引起的問題:的SQL Server 2005/2008速成版(命名實例)

  2. 操作系統上可以模擬問題:的Windows XP SP3/Windows Vista中/ Windows 7的

問候,

Abhineet

回答

1

SQL Server旨在獲取系統上的所有內存並將其用於其內部高速緩存。你不應該在與SQL Server相同的機器上運行其他任何東西。這不是泄漏,是預期的和期望的行爲。通過設計。請參閱Memory Manager Architecture

作爲特殊情況,SQL Server Express版將​​其內部緩衝池大小限制爲1Gb。雖然緩衝池並不是SQL Server唯一使用的內存。您可以通過指定max server memory的值來進一步限制SQL Server緩衝池大小。

+0

感謝您的回覆。我已經嘗試將最大服務器內存設置爲1GB。但即使我的機器閒置,sqlsrvr.exe使用的內存也不斷增加。 – Abhineet

+0

將SQL Server Express設置爲1GB是無操作的,正如我所解釋的,1Gb是Express的默認值。 –