Sql server 暂时挂起sqldependency通知以进行更新

Sql server 暂时挂起sqldependency通知以进行更新,sql-server,sqldependency,Sql Server,Sqldependency,我有一个正在使用SQLDependency监视的SELECT查询。一切正常,但我希望在更新查询正在监视的数据集时暂时挂起依赖关系,我知道该数据集将从数据库发出更改通知 目前,我设置了一个标志来标记我正在进行更新的事实,让依赖项触发,然后我重置它,以便继续监视查询 必须有一种更优雅的方法来实现这一点。使用类时要小心-它具有内存泄漏的风险。您可以使用SqlDependency类的开源实现-。它使用数据库触发器和本机ServiceBroker通知来接收有关表更改的事件。这是一个使用示例: int ch

我有一个正在使用SQLDependency监视的SELECT查询。一切正常,但我希望在更新查询正在监视的数据集时暂时挂起依赖关系,我知道该数据集将从数据库发出更改通知

目前,我设置了一个标志来标记我正在进行更新的事实,让依赖项触发,然后我重置它,以便继续监视查询

必须有一种更优雅的方法来实现这一点。

使用类时要小心-它具有内存泄漏的风险。您可以使用SqlDependency类的开源实现-。它使用数据库触发器和本机ServiceBroker通知来接收有关表更改的事件。这是一个使用示例:

int changesReceived=0;
使用(SqlDependencyEx SqlDependencyEx=new SqlDependencyEx(
测试\连接\字符串、测试\数据库\名称、测试\表\名称)
{
sqlDependency.TableChanged+=(o,e)=>changesReceived++;
sqlDependency.Start();
//更改表格。
MakeTableInsertDeleteChanges(changesCount);
//请稍等,以接收所有更改。
睡眠(1000);
}
断言.AreEqual(changesCount,changesReceived);

使用SqlDependecyEx,您可以只监视插入或删除,避免更新。希望这有帮助。

更新后,您是否可以停止侦听器并启动它?