SqlDependency通知sql server 2005不会在多个插入上触发

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SqlDependency通知sql server 2005不会在多个插入上触发相关的知识,希望对你有一定的参考价值。

我正在使用sqlServer 2005上的sqlDependency。问题是:

  1. 如何有效地重新初始化sqlDependency以便它可以多次触发?

这是我的reregistring sqlDependency通知的实现:

SqlCommand command = new SqlCommand(sqlCommandString, openedConnection);
SqlDependency sqlDependency = new SqlDependency(Command);
sqlDependency.OnChange += this.OnChangeHandler;
command.ExecuteNonQueryAsync();
  1. 但是这种方法的问题在于,如果我同时在数据库中运行多个插入操作,那么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

使用SqlDependency与表的定期轮询(对性能的影响)

在作为 Windows 服务托管的 WCF 类库项目中使用 SqlDependency