如何在SQL Server中编写轮询服务?

时间:2019-04-19 06:03:49

标签: sql sql-server

我必须有两个表employeedepartment

员工

Id, Name, JoiningDate, SpecialRegistrationDone, DepartmentId

部门

DepartmentId, Name

有一个专门的部门,拥有DepartmentId = 2Name = "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中甚至可能吗?

1 个答案:

答案 0 :(得分:1)

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

步骤1: How to run a stored procedure in sql server every hour?

步骤2:在存储过程中编写业务逻辑以检查数据

第3步:如所讨论的here

所示,通过CLR集成调用/发布到Web服务

或使用SQL Server Service Broker

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

相反,您应该有一个CRON服务来定期命中您的应用程序。然后从应用程序中查询数据库并根据需要发布到Web服务。

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