sql - 接受 SQL 查询并在后台运行的服务
问题描述
是否有服务可以接受大量 SQL 查询并在后台运行它们并退出和记录?
我有多个客户端直接针对 SQL Server 数据库运行大量查询,但是因为它们只是插入,所以将查询发布到某些服务会更有效,这些服务可以在事务中脱机运行它们,从而使客户端不必等待完成查询并减少与数据库的连接。
因为应用程序不需要结果,所以我想“触发并忘记” SQL 语句,因为它们知道它们最终会完成,即使它们由于超时或网络问题需要重试。
有这样的服务吗?
解决方案
有这样的服务吗?
没有这种开箱即用的服务。正如 Gordon Linhoff 所建议的,您可以将批次发送到 Servcie Broker队列中,或者将它们插入到常规表中,并让后台进程运行它们。
在 Service Broker 的情况下,设置、编程和故障排除有点棘手,但是当消息出现在队列上时,您会获得内部激活来触发您编写的存储过程。
使用常规表,您只需编写一个循环运行的 SQL 代理作业(或类似作业)并在目标表中查找新行,运行它找到的批次,并将批次删除(或标记)为完成。您无法获得 Service Broker Activation 提供的低延迟和自动横向扩展,但实现起来要简单得多。
推荐阅读
- linux - 为什么可以嵌套 pid_namespaces?
- javascript - 使用多下拉菜单时获取反应选择选择的选项
- linux - 如何在vim中搜索没有前导字符的行
- import - 通过使用 Lotuscript 代码代理将 DB2 数据库中的表中的记录导入 IBM Lotus Notes 文档的字体解码问题
- web-scraping - 无法使用 scrapy 或 Beautifulsoup 抓取网页
- c - 使用 c 从 url(server) 作为客户端获取图片
- java - OpenCSV CSVWriter adds blank line to end of file
- regex - 正则表达式:仅匹配 = 而不是 == 中的第一个字符
- c++ - What is the advantage of storing a lambda in a `std::function` as opposed to an `auto variable`?
- neo4j - Neo4j - How to group all nodes between path by distance