是否有一项服务可以接受大量SQL查询并在后台使用退休和日志记录运行它们?
我有多个客户端直接针对SQL Server数据库运行大量查询,但是由于它们只是插入,因此将查询发布到某些服务上会更加有效,该服务可以在事务中离线运行它们,从而使客户端不必等待查询完成并减少与数据库的连接。
由于应用程序不需要结果,因此我想“解雇”这些SQL语句,知道它们最终将完成,即使由于超时或网络问题而需要重试。
这样的服务存在吗?
答案 0 :(得分:4)
这样的服务存在吗?
没有现成的此类服务。如戈登·林霍夫(Gordon Linhoff)的建议,您可以将批次发送到Servcie Broker队列中,或将其插入常规表中,并让后台进程运行它们。
对于Service Broker,其设置,编程和故障排除都比较棘手,但是当消息出现在队列中时,您将获得Internal Activation来触发编写的存储过程。
使用常规表,您只需编写一个SQL Agent作业(或类似的作业),该作业将循环运行,并在目标表中查找新行,运行它找到的批处理,并将批处理删除(或标记为已完成) 。您不会获得Service Broker Activation提供的低延迟和自动横向扩展,但是实现起来要简单得多。