如何清理SQL Server中已过期的SqlDependency
对象?在接收到SqlDepedency
对象的事件后,我需要创建一个新的对象才能获取新的事件。但是,SQL Server进程的内存使用会不断上升,直到用尽允许的内存(SQL Server Express)。如何摆脱旧查询?
代码:
// 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