代码之家  ›  专栏  ›  技术社区  ›  Joshua

通过Ajax开始并监视长时间运行的SQL查询的进度

  •  1
  • Joshua  · 技术社区  · 15 年前

    是否可以启动一个将花费大量时间并通过Ajax从UI监视进度的查询?

    我考虑将该进程作为计划立即运行的“运行一次”作业启动。我可以将结果存储在一个临时表中,以便在完成后快速检索。我还可以记录报告的运行时间,并对其进行平均,以估计进度条的运行时间。

    我现在使用的是Microsoft SQL 2005,但如果需要,我愿意使用其他DBMS,如SQL 2008、MySQL等。

    1 回复  |  直到 15 年前
        1
  •  0
  •   gbn    15 年前

    一个想法是,如果长时间运行的作业填充另一个表。

    您有第二个数据库连接来监视从源行中处理了多少行,并每隔几秒钟显示一个简单的“X行已处理”。

    SELECT COUNT(*) FROM TargetTable WITH (NOLOCK)
    

    如果您也有一个源表:

    SELECT COUNT(*) FROM SourceTable WITH (NOLOCK)
    

    …然后您可以使用“处理的Y行中的X行”

    基本上,您必须使用第二个连接来监视第一个连接。然而,你也需要一些东西来测量…