Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用C#连续查询数据库?_C#_Sql Server - Fatal编程技术网

如何用C#连续查询数据库?

如何用C#连续查询数据库?,c#,sql-server,C#,Sql Server,我想写一个C#代码来帮助我连续查询数据库 如果某个源向数据库输入了一个条目(不确定何时输入),则应该由我的代码处理。(简单地说,我的代码应该始终监视数据库中的条目)。基本上有两个主要选项 首先,您可以向表中添加一个额外的列,该列是一个位字段,可能称为“HasBeenProcessed”。然后,您可以安排检查HasBeenProcessed为0的任何列。已处理,然后将列更新为1 或者,它描述了在结果集以不同方式显示时使用SqlDependency类引发事件。如果您使用的是SQL Server 20

我想写一个C#代码来帮助我连续查询数据库


如果某个源向数据库输入了一个条目(不确定何时输入),则应该由我的代码处理。(简单地说,我的代码应该始终监视数据库中的条目)。

基本上有两个主要选项

首先,您可以向表中添加一个额外的列,该列是一个位字段,可能称为“HasBeenProcessed”。然后,您可以安排检查HasBeenProcessed为0的任何列。已处理,然后将列更新为1


或者,它描述了在结果集以不同方式显示时使用SqlDependency类引发事件。

如果您使用的是SQL Server 2008 R2或SQL Server 2012,则可以使用来针对数据更改和模式设置事件。如果您使用的是早期版本>2005,则可以使用NotificationServices(尽管StreamInsight远远优于NotificationServices,并且基本上取代了NotificationServices)

向代码中添加Web服务。
向表中添加插入和更新触发器。
创建可以从触发器调用的CLR函数。
在该CLR函数中,使用所有必要的数据调用webservice。
在webservice中,根据传递的参数执行任何需要执行的操作。
添加配置表,然后输入webservice URL
将url作为参数传递给CLR函数。
您应该异步调用webservice,以便将延迟降至最低

注意:

我认为也可以从纯SQL调用web服务,因此不需要CLR。

您想实现什么?如果它在缓存中保持相对静态但仍可能更改的数据集(例如供应商列表)是最新的,Simon Whitehead关于SqlDependency的建议将很好地为您服务。如果它正在处理更类似于请求(例如订单)的内容,那么具有内部或外部激活功能的ServiceBroker应该是一个不错的选择。不管怎样,关键是不要让你的代码不断地进入数据库,说“有适合我的东西吗?”。相反,让db告诉你的应用程序什么时候有事情要做,并采取相应的行动。

这个问题有点广泛,所以我投票决定结束——在撰写本文时,这可能是可以接受的,但从那时起,这里的指导方针已经收紧了一点。很遗憾,我投了反对票,因为下面有很多好的答案,但你没有回复或接受。这很有帮助。非常感谢Stefan。让我试试这个选项