基于计时器的事件触发器

Zom*_*eep 15 sql service triggers web-services timer

我目前正在开发一个具有特定要求的项目.这些简要概述如下:

  • 从外部Web服务检索数据
  • 数据存储在SQL 2005中
  • 数据通过Web GUI进行操作
  • 与Web服务通信的Windows服务与我们的内部Web UI没有耦合,除了通过数据库.
  • 与Web服务的通信需要基于时间,并且通过Web UI上的用户干预来触发.

用于Web服务通信触发的当前(预生产前)模型是通过存储从手动干预生成的触发请求的数据库表.我真的不想拥有多个触发机制,但希望能够根据调用时间使用触发器填充数据库表.我认为有两种方法可以实现这一目标.

1)调整触发表以存储两个额外参数.一个是"这是基于时间还是手动添加?" 和可空字段来存储时序细节(确切的格式).如果它是一个手动创建的触发器,则在触发器触发时将其标记为已处理,但如果它是定时触发器则不会.
或者
2)创建第二个Windows服务,以定时间隔即时创建触发器.

第二种选择对我来说似乎是一种软糊涂,但是选项1的管理可能很容易变成编程噩梦(你怎么知道表的最后一次轮询是否返回了需要触发的事件,你怎么能阻止它重新触发下次投票)

我很感激,如果有人可以花几分钟时间来帮我决定哪条路线(这两条路线中的一路,或者可能是第三条,未列出的路线).

bre*_*dan 3

为什么不使用 SQL 作业而不是 Windows 服务?您可以将所有数据库“触发”代码封装在存储过程中。然后,您的 UI 和 SQL 作业可以调用相同的存储过程并以相同的方式创建触发器,无论是手动还是按时间间隔。