SqlDependency通知sql server 2005不会在多个插入上触发
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SqlDependency通知sql server 2005不会在多个插入上触发相关的知识,希望对你有一定的参考价值。
我正在使用sqlServer 2005上的sqlDependency。问题是:
- 如何有效地重新初始化sqlDependency以便它可以多次触发?
这是我的reregistring sqlDependency通知的实现:
SqlCommand command = new SqlCommand(sqlCommandString, openedConnection);
SqlDependency sqlDependency = new SqlDependency(Command);
sqlDependency.OnChange += this.OnChangeHandler;
command.ExecuteNonQueryAsync();
- 但是这种方法的问题在于,如果我同时在数据库中运行多个插入操作,那么onChange Handler只运行一次。为什么会这样?
Edit1:同时说我的意思是一个接一个地运行sql命令,这样它们之间的延迟非常小。
例如:
INSERT...;
INSERT...;
INSERT...;
在这些命令之后我只收到一个通知,而如果我逐个运行所有这些命令,我会收到所有3个通知
这是我称之为OnChangeHndler的函数:
public void RegisterSqlDependency(string sqlCommandString, EventHandler eventHandler)
{
SqlCommand command = new SqlCommand(sqlCommandString, this.connection);
SqlDependency sqlDependency = new SqlDependency(command);
sqlDependency.OnChange += this.OnChangeHandler;
command.ExecuteNonQueryAsync();
}
答案
这里描述了实现SQL依赖关系的有效方法,请查看 -
http://www.codeproject.com/Articles/12335/Using-SqlDependency-for-data-change-events
另请参阅以下讨论 -
SQLDependency_OnChange-Event fires only one single Time
以上是关于SqlDependency通知sql server 2005不会在多个插入上触发的主要内容,如果未能解决你的问题,请参考以下文章
如何从 SQL Server 内存中清除 SqlDependency?
SQL Server 通知 - 我的 OnChange 没有触发
使用SqlDependency实时监听SQL server数据库变化并执行事件
sql server 启用数据库的 Service Broker