如何清理SQL Server以擺脫過期的SqlDependency
對象?在我收到來自SqlDepedency
對象的事件後,我需要創建一個新對象,然後才能獲得新事件。但是,SQL Server進程的內存使用量會一直攀升,直到耗盡允許的內存(SQL Server Express)。我如何擺脫舊的查詢?如何從SQL Server內存中清理SqlDependency?
代碼:
// Func: RegisterTableListener
using (SqlConnection cn = new SqlConnection(Properties.Settings.Default.DatabseEventConnectionString))
{
if (cmd == null)
{
cmd = cn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT HostName, LastStatus, LastDetails, xml FROM dbo.[SystemTable]";
}
lock (cmd)
{
cmd.Connection = cn;
cn.Open();
cmd.Notification = null;
// creates a new dependency for the SqlCommand
if (dep == null)
dep = new SqlDependency(cmd);
// creates an event handler for the notification of data
// changes in the database.
dep.OnChange += new OnChangeEventHandler(dependency_OnChange);
using (SqlDataReader reader = cmd.ExecuteReader())
{
// code here to read
}
}
}
// Func dependency_OnChange
//SqlDependency dep = sender as SqlDependency;
dep.OnChange -= dependency_OnChange;
RegisterTableListener();
你是如何創建`SqlDependency`對象的?請發佈您的代碼。你正確地處理它們嗎? – Oded 2011-12-14 21:27:22
我明天上班時,用代碼更新我的評論。 Sudo: SqlDependency dep = new SqlDependency(cmd); dep。OnChange + =樂趣; SqlDependency不執行IDisposable – JeremyK 2011-12-15 00:19:54
我已更新代碼。即使我只運行一個SqlDepdency實例並每次調用Stop和Start時,內存都會攀升。至於發生了什麼,我無能爲力。 – JeremyK 2011-12-15 14:35:46