服务接受SQL查询并在后台运行

时间:2019-04-20 12:48:46

标签: sql sql-server

是否有一项服务可以接受大量SQL查询并在后台使用退休和日志记录运行它们?

我有多个客户端直接针对SQL Server数据库运行大量查询,但是由于它们只是插入,因此将查询发布到某些服务上会更加有效,该服务可以在事务中离线运行它们,从而使客户端不必等待查询完成并减少与数据库的连接。

由于应用程序不需要结果,因此我想“解雇”这些SQL语句,知道它们最终将完成,即使由于超时或网络问题而需要重试。

这样的服务存在吗?

1 个答案:

答案 0 :(得分:4)

  

这样的服务存在吗?

没有现成的此类服务。如戈登·林霍夫(Gordon Linhoff)的建议,您可以将批次发送到Servcie Broker队列中,或将其插入常规表中,并让后台进程运行它们。

对于Service Broker,其设置,编程和故障排除都比较棘手,但是当消息出现在队列中时,您将获得Internal Activation来触发编写的存储过程。

使用常规表,您只需编写一个SQL Agent作业(或类似的作业),该作业将循环运行,并在目标表中查找新行,运行它找到的批处理,并将批处理删除(或标记为已完成) 。您不会获得Service Broker Activation提供的低延迟和自动横向扩展,但是实现起来要简单得多。