是否有类似于Sql Server表的FileSystemWatcher?

mar*_*c.d 4 .net sql-server sql-server-2005

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

有人提示我如何实现这一目标吗?我正在使用sql server 2005.

TIA

mar*_*c_s 12

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

SqlDependency对象可以与SqlCommand关联,以便检测查询结果何时与最初检索的结果不同.您还可以将委托分配给OnChange事件,该事件将在关联命令的结果更改时触发.在执行命令之前,必须将SqlDependency与命令关联.SqlDependency的HasChanges属性还可用于确定自首次检索数据以来查询结果是否已更改.

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

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

   SqlDependency dependency = new SqlDependency(cmd);

   dependency.OnChange += 
       new OnChangeEventHandler(OnChange);

    ......
}
Run Code Online (Sandbox Code Playgroud)

在事件处理程序中,您可以执行您需要执行的操作.

void OnChange(object sender, SqlNotificationEventArgs e)
{
  SqlDependency dependency = sender as SqlDependency;

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

}
Run Code Online (Sandbox Code Playgroud)

  • @Marc:ODBC和OleDB客户端实际上也可以使用查询通知:http://msdn.microsoft.com/en-us/library/ms130764.aspx (2认同)