首页 > 解决方案 > 如何在 SQL Server 中编写轮询服务?

问题描述

我有两张桌子employeedepartment

员工

Id, Name, JoiningDate, SpecialRegistrationDone, DepartmentId

部门

DepartmentId, Name

DepartmentId = 2和有一个特殊的部门Name = "AI"

有一个 Java 服务将数据推送到表中EmployeeDepartment

现在,我必须编写一个满足条件的轮询服务(轮询频率为 15 分钟一次)

select e.* 
from Employee e
inner join Department d on e.DepartmentId = d.DepartmentId
                        and e.DepartmentId = 2
                        and e.JoiningDate > cast(GetDate() as date)
                        and e.specialRegistrationDone = 0

如果获取了任何记录,则调用 Web 服务,例如http://specialdepartmentregistration/register并在那里传递员工详细信息。

一种编写方法是编写一个 Java 服务,该服务轮询数据库并执行此查询,获取结果并调用 Web 服务以获取结果集。

我正在寻找一种在 SQL Server 端创建服务的方法,该服务仅执行查询并调用 Web 服务。我该怎么写?在 SQL Server 2014 中甚至有可能吗?

标签: sqlsql-server

解决方案


这是一种实现您想要实现的目标的方法:

Step-1: 如何每小时在sql server中运行一个存储过程?

Step-2:在存储过程中编写业务逻辑,检查数据

步骤 3:调用/发布到具有 CLR 集成的 Web 服务,如此处所述

或使用SQL Server 服务代理

不建议按照您计划的方式实施。数据库应该只专注于存储数据。

相反,您应该让 CRON 服务定期访问您的应用程序。然后从应用程序查询数据库并根据需要发布到 Web 服务。

或者,在您的应用程序中运行计划服务,您的应用程序可以如上所述检查数据库。Quartz是一个可以用于此目的的库。


推荐阅读