我希望我的 Windows 服务(用 .NET 编写)能够识别何时将新行添加到特定表中,但我想使用服务器推送模型而不是从 sql-server 中提取数据。

有人对我如何实现这一点有提示吗?
我正在使用 sql server 2005。

蒂亚

最佳答案

如果您将客户端 ADO.NET 与 C# 或 VB.NET 一起使用,还有 ADO.NET SqlDependency 机制



您基本上将 SqlDependency 与您的 SqlCommand 相关联,并提供一个事件处理程序,当构成该 SqlDependency 结果集的值发生更改时,该处理程序将被调用。

using(SqlCommand cmd = new SqlCommand(queryStatement, _conn))
{
   cmd.Notification = null;

   SqlDependency dependency = new SqlDependency(cmd);

   dependency.OnChange +=
       new OnChangeEventHandler(OnChange);

    ......
}

在事件处理程序中,您可以做任何您需要做的事情。
void OnChange(object sender, SqlNotificationEventArgs e)
{
  SqlDependency dependency = sender as SqlDependency;

  (do whatever you need to do - e.g. reload the data)

}

马克

关于.net - 是否有类似于 Sql Server 表的 FileSystemWatcher 的东西?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1311924/

10-13 06:23