【问题标题】:Sql queries not 'reporting' back until all queries have finish executing在所有查询完成执行之前,Sql 查询不会“报告”回来
【发布时间】:2011-06-08 11:37:41
【问题描述】:

我正在运行一组 sql 查询,并且在所有查询都运行之前,它们不会报告行影响。无论如何我可以获得增量反馈。

例子:

   DECLARE @HowManyLastTime int

SET @HowManyLastTime = 1

WHILE @HowManyLastTime <> 2400000
 BEGIN

      SET @HowManyLastTime = @HowManyLastTime +1
    print(@HowManyLastTime)
 END

在循环完成之前不会显示计数。如何让它在运行时显示计数?

【问题讨论】:

  • 当我在 sql2008 上运行时,您的查询会在消息选项卡中显示计数。
  • 你/你能在你的陈述之间加上GO吗?但是,如果您放入 GO,您的变量将超出范围,所以要小心。

标签: sql sql-server


【解决方案1】:

要将记录计数和其他数据刷新到客户端,您需要将 RaisError 与 NOWAIT 结合使用。相关问题和链接:

在 SSMS 中,这将按预期工作。对于其他客户端,在查询执行完成之前,您可能无法从 客户端 获得响应。

【讨论】:

  • 我试过RAISERROR ('Your message', 0, 1) WITH NOWAIT,但还是一样
  • 你用的是什么客户端?这是来自您的应用程序(例如 ASP.Net)、SSMS 还是其他环境?
  • 如果您使用的是 SSMS,您的 UI 是否可能设置为“结果到网格”,而您只是没有切换到 UI 中的“消息”选项卡? (如果没有结果集,SSMS 会在查询完成时自动切换到“消息”选项卡,但之前不会)
【解决方案2】:

SQL 往往是“基于集合的”,您正在按程序思考并试图使其系统地采取行动。在 SQL 中这样做真的没有意义。

我想问你这样做的动机,还有什么更好的可以尝试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 2014-01-03
    • 1970-01-01
    相关资源
    最近更新 更多