我对我们的 SQL Server 2000 数据库进行了很长的查询,我正在返回结果以供我的 C# 应用程序进一步处理。
考虑这个查询:
declare @sn varchar(20)
select distinct serial_number
from manufacturingData
where '7/19/2012'<date_time
order by serial_number
while (0 < (select count(serial_number) from #sn)) begin
select top 1 @sn=serial_number from #sn
exec sp_GetSnData @sn
delete from #sn where serial_number=@sn
end
drop table #sn
我正在写这个查询07/19/2012
,所以它只返回今天的记录。
上面的查询(今天的一半)返回了 119 个不同的序列号,并使用伴随它的 while 循环执行了 52 秒。
通常,此报告的执行期限为 30 天,大约有 3500 个部件号。
有没有办法“挂钩”结果集,以便我可以在生成结果时访问它们?
现在的情况是,没有人知道查询是否需要 2 分钟或 2 天......或者它是否还在做任何事情!经理是关闭他的电脑并回家休息一天,还是这个报告查询即将完成?
返回单个表后,我需要单独处理每个表。
如果可以的话就好了
- 找出退回了多少不同的物品,
- 当前正在查询什么项目,以及
- 在等待下一张表进来时,让结果表可用于处理。
这可能吗?
仅供参考:我目前在我的 Windows 窗体中通过向我们的服务器发送单独的请求来执行此操作,但这会使服务器陷入困境并耗尽所有可用的连接。