我可以立即打印循环中的每次迭代吗?

2023-12-06

我的部署服务器为每个新的数据库构建运行一个部署脚本。

部分脚本会阻塞以等待另一个异步操作完成。

阻塞代码如下所示:

DECLARE @i INT = 0;
DECLARE @laststatus NVARCHAR(MAX) = N'';

WHILE @i < 5
BEGIN
  -- the real delay is longer
  WAITFOR DELAY '00:00:01';

  -- poll async operation status here
  SET @i = @i + 1;

  SET @laststatus = N'status is ' + CAST(@i AS NVARCHAR(MAX));
  RAISERROR(@laststatus, 0, 1) WITH NOWAIT;
END;

它使用WITH NOWAIT的条款RAISERROR代替PRINT因为它应该为每次迭代打印状态更新。

部署服务器使用以下命令在 sqlcmd 中运行脚本:

sqlcmd.exe -i print_test.sql

输出同时出现,如下所示:

状态为 1
状态为 2
状态为 3
状态为 4
状态为 5

它应该在一秒钟后打印:

状态为 1

再过一秒它应该打印这个

状态为 2

等等。

有没有办法在 sqlcmd 中做到这一点?


有没有办法在 sqlcmd 中做到这一点?

据我所知还没有。

Connect 上已经对此进行了报道。看SQLCMD11 中不支持 RAISERROR WITH NOWAIT

SQLCMD 在 SQL 2012 中被重写以使用 ODBC。这里有一个小 似乎已经潜入的回归错误。如果您使用脚本 它使用 RAISERROR WITH NOWAIT,但输出仍然被缓冲。 这可以与 SQL 2008 中的 OSQL 和 SQLCMD 正常配合使用。

但目前尚未修复。

我想你可以添加一个SELECT作为解决方法,您可以调整网络数据包大小(或增加现有消息大小)来刷新缓冲区。

例如

DECLARE @i INT = 0;

WHILE @i < 5
  BEGIN
      -- poll async operation status here
      SET @i = @i + 1;

      PRINT 'status is ' + CAST(@i AS VARCHAR(10)) + SPACE(4000);

      WAITFOR DELAY '00:00:01';
  END; 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以立即打印循环中的每次迭代吗? 的相关文章

随机推荐

  • 在各州之间共享 $Scope 数据

    我正在尝试从孩子访问父状态 我尝试过这个 但它不起作用 angular module myApp controller compareCtrl scope function scope scope test scope parent ser
  • 尝试了解 REPL 上声明的类在内部是如何处理的

    我试图了解 REPL 中范围界定的工作原理 我尝试按照 Joshua Suereth 的 Scala 深入 一书的第 5 1 1 节进行操作 这是在 Windows XP Java 7 和 Scala 2 9 1 上进行的 我声明一个类Di
  • 如何使用 JFileChooser 查找文件位置

    有没有一种方法可以用来简单地查找文件位置 我试图允许用户选择一个文件并打开它 但我必须让 JFileChooser 选择文件并将位置发送到另一个方法 最好的方法是什么 中的例子javadoc显示执行此操作 JFileChooser choo
  • 生成随机订单号但阻止在 WooCommerce 中重新生成

    我试图在创建订单号时添加一个随机字符串 因为默认的序列号很容易被猜到 我尝试了这个片段 function generate random string length 16 return substr str shuffle str repe
  • bcrypt 不是 azure 应用服务上的有效 win 32 应用程序

    为了使用 Node 库 Sharp 进行一些图像处理 我必须将 Azure 应用服务上的节点可执行文件升级到 64 位 我通过手动下载可执行文件然后将其路径设置为IISNode yml 不幸的是 当我启动应用程序时 它会抛出以下错误 应用程
  • 将 .obj 转换为 .js 文件

    我已经浏览了不同的 Three js 示例 某些示例使用 js 或 bin 文件而不是 obj 文件 例如用于 webgl materials cars html 示例 如何获取 obj 文件的 js 文件 The 三 js编辑器 转换器
  • 将 jquery 函数应用于 ajax 内容

    我想将此功能应用于由ajax加载的内容 问题是 该功能不适用于此类内容 这个每个功能有某种解决方法吗 liquidcam each function index if this width this height this parent p
  • 跳跃扭曲的光标

    我正在尝试使用 Objective C 沿着任何 UI 元素外部的路径移动 Mac 光标的位置 不仅仅是在某些窗口上 而是在整个屏幕上 与鼠标悬停的位置无关 我不想直接将鼠标扭曲到某个位置 而是逐步将其移动到那里 即迭代循环 并在每次迭代中
  • gets.chomp 而不移动到新行

    我了解自动在末尾的 nputs and gets 以及如何处理这些问题 但是有没有办法在按 Enter 进行输入后保持显示点 光标位置 如果愿意的话 移动到新行gets e g print Hello my name is a gets c
  • 如何在Python中使用nosetest/unittest断言输出?

    我正在为下一个函数编写测试 def foo print hello world 所以当我想测试这个函数时 代码将是这样的 import sys from foomodule import foo def test foo foo outpu
  • Web 应用程序问题(web.config 错误) 使用 IIS7.5 和 ASP.NET v2 的 HTTP 500.19

    这让整个团队都快疯了 IIS 或我们的 Web 服务器肯定有一些简单的错误配置部分 但每次我们尝试在 IIS 7 5 上运行 ASP NET Web 应用程序时 我们都会收到以下错误 这是完整的错误 HTTP Error 500 19 In
  • .NET NetworkStream.EndWrite() 写入的字节数

    MSDN文档明确指出 获取到NetworkStream后 可以调用EndWrite方法 成功完成发送操作并返回数量 发送的字节数 强调我的 但是 它什么也不返回 void public override void EndWrite IAsy
  • PHP,一个奇怪的变量范围?

    这更多的是一个关于 为什么 然后 如何做 的问题 但它已经困扰我好几天了 目前 我正在使用 CodeIgniter 进行一些工作 并暂时从 Ruby 返回到 PHP 这让我对以下作用域魔法感到困扰
  • 使用可重用图表更新 d3.js 中的 HTML 表格

    我有这个可重复使用的模式来创建一张桌子 灵感来自http bl ocks org 3687826 我对此有两个问题 这是函数 d3 table function config var columns var tbl function sel
  • ggplotly 从单个方面删除数据

    我正在尝试为闪亮的应用程序创建一个绘图 我遇到了有关多面图的某些布局的问题 每当有四个小平面并且它们位于 2x2 网格中时 左下小平面不会显示任何数据 即使数据存在于ggplot数字 当 3x2 网格中有 6 个面且左下角再次被丢弃时 也会
  • 类型同义词与类型类约束是否可能?

    请随意更改标题 我只是经验不足 不知道到底发生了什么 所以 我正在松散地编写一个程序this 并写下了这个 与原文一样 type Row a a type Matrix a Row a 那里没什么特别的 然而 我发现自己编写了几个具有如下类
  • 在宏运行结束时打开 NUMLOCK

    什么代码的作用 我有一个代码可以在屏幕上移动鼠标 打印屏幕并将其粘贴到 Excel 中 Problem 由于某种原因 我的代码总是 绝对没有例外 在每次运行后关闭 NUMLOCK 键 到目前为止我尝试过的 我四处搜寻 发现了 SendKey
  • 查询为空 PHP 错误

    我正在尝试使用 MySQL 构建一个购物车 当我运行此代码时 我不断收到此错误 查询为空 请帮助我尝试了几种方法 例如将变量放入字符串中而不是连接它
  • HTML 链接不会转到外部网站

    我在构建网站时一直使用react js运行本地主机网站 当我尝试链接到外部网站 例如youtube 时 它最终会转到如下链接 http localhost 3000 www youtube com 当我试图去时 https www yout
  • 我可以立即打印循环中的每次迭代吗?

    我的部署服务器为每个新的数据库构建运行一个部署脚本 部分脚本会阻塞以等待另一个异步操作完成 阻塞代码如下所示 DECLARE i INT 0 DECLARE laststatus NVARCHAR MAX N WHILE i lt 5 BE