14

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();
4

1 に答える 1