-2

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

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

4

4 回答 4

1

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

于 2012-07-18T13:18:19.640 回答
1

你基本上有两个主要选择。

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

或者,您可以查看这篇 StackoverFlow 帖子,该帖子描述了使用 SqlDependency 类在结果集出现不同时引发事件。

于 2012-07-18T04:17:13.620 回答
1

如果您使用的是 SQL Server 2008 R2 或 SQL Server 2012,则可以使用StreamInsight针对数据更改和模式设置事件。如果您使用的是以前的版本 > 2005,则可以使用 Notification Services(尽管 StreamInsight 要优越得多,并且基本上取代了 Notification Services)。

于 2012-07-18T04:28:07.443 回答
1

将 WebService 添加到您的代码中。
向表中添加插入和更新触发器。
创建一个可以从触发器调用的 CLR 函数。
在该 CLR 函数中,使用所有必要的数据调用 Web 服务。
在 web 服务中,根据传递的参数做任何你需要做的事情。
添加配置表,并输入 Web 服务 URL。
将 url 作为参数传递给您的 CLR 函数。
您应该异步调用 Web 服务,以便将延迟降到最低。

注意:
我认为也可以从纯 SQL 调用 Web 服务,因此不一定需要 CLR。

于 2012-07-18T08:48:33.443 回答