Как очистить SQL Server, чтобы избавиться от истекших объектов SqlDependency
? После того, как я получаю событие от объекта SqlDepedency
, мне нужно создать новый, прежде чем я смогу получить новое событие. Тем не менее, использование SQL Server процессом памяти увеличивается, пока не закончится разрешенная память (SQL Server Express). Как мне избавиться от старых запросов?Как очистить SqlDependency от памяти SQL Server?
Код:
// 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
Я обновляю свой комментарий с кодом, когда буду работать завтра. Sudo: SqlDependency dep = new SqlDependency (cmd); dep.OnChange + = забава; SqlDependency не реализует IDisposable – JeremyK
Я обновил код. Даже когда я запускаю только один экземпляр SqlDepdency и каждый раз нажимаю Stop и Start, память поднимается. Я не знаю, что происходит. – JeremyK