T-SQL后台处理

时间:2008-12-12 00:14:10

标签: sql-server tsql

我找不到措辞,但是可以向MS SQL服务器提供SQL查询并异步检索结果吗?

我想从Web请求提交查询,但我希望在SQL服务器继续处理查询时将Web进程终止,并将结果转储到我稍后可以检索的临时表中。

或者是否有一些常见修饰符可以附加到查询中以使其后台处理结果(如bash中的“&”)。

更多信息

我管理的网站允许受信任的用户在非常大的数据集上运行任意选择查询。我目前正在使用Java守护进程来检查“作业”表并运行结果,我只是希望可能有更原生的解决方案。

5 个答案:

答案 0 :(得分:1)

根据您的澄清,我认为您可能会考虑为这些类型的查询设计的派生OLAP数据库。因为它们似乎对企业具有战略意义。

答案 1 :(得分:0)

看到这个问题 Start stored procedures sequentially or in parallel

实际上,您可以让网页开始工作。该作业将异步执行。

答案 2 :(得分:0)

这实际上取决于您与数据库的通信方式。使用ADO.NET,您可以异步运行命令执行。如果您希望在某些库的范围之外执行此操作,则可以将记录插入作业表,然后让SQL Agent轮询该表,然后将您的工作作为存储过程或其他内容运行。

尽管我猜猜你的网页请求是由asp.net接收的,但你可以使用ADO.NET类。

答案 3 :(得分:0)

由于http是无连接的,因此将检索与查询相关联的唯一方法是使用会话。那么你有所有这些答案等着有人要求他们,并且无法知道连接(不存在)是否已被破坏。

在网页中,它几乎可以使用它或者输掉它。

其他一些答案可能会付出很多努力,但我并不认为你正在寻找一种优势,高科技的选择。

答案 4 :(得分:-1)

能够执行存储过程然后异步检索结果是一个复杂的主题。这对于胆小的人来说并不是真的,我的第一个建议是重新检查你的设计,并确保你实际上需要在数据层中异步处理你的请求。

根据您正在做的事情,您应该看看2种技术...... SQL Service Broker,它基本上允许您对请求进行排队并接收异步响应。它是在SQL 2005中引入的,听起来它可能是你提出问题的最好方法。

在MSDN上查看相同数据库服务代理对话的教程:http://msdn.microsoft.com/en-us/library/bb839495(SQL.90).aspx

对于长时间运行或更大的处理任务,我可能会看到像Biztalk或Windows Workflow这样的东西。这些框架(它们大致相同,它们来自MS的同一团队)允许您启动异步工作流程,这些工作流程可能无法返回数小时,数天,数周甚至数月。