首页 > 解决方案 > 接受 SQL 查询并在后台运行的服务

问题描述

是否有服务可以接受大量 SQL 查询并在后台运行它们并退出和记录?

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

因为应用程序不需要结果,所以我想“触发并忘记” SQL 语句,因为它们知道它们最终会完成,即使它们由于超时或网络问题需要重试。

有这样的服务吗?

标签: sqlsql-server

解决方案


有这样的服务吗?

没有这种开箱即用的服务。正如 Gordon Linhoff 所建议的,您可以将批次发送到 Servcie Broker队列中,或者将它们插入到常规表中,并让后台进程运行它们。

在 Service Broker 的情况下,设置、编程和故障排除有点棘手,但是当消息出现在队列上时,您会获得内部激活来触发您编写的存储过程。

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


推荐阅读