mar*_*ark 2 sql-server sqlcmd sql-server-2012
这是命令行:
sqlcmd -S localhost -U myuser -P mypwd -b -r0 -Q "raiserror('hello',10,1) with nowait;waitfor delay '00:00:10';raiserror('world!',10,1) with nowait"
Run Code Online (Sandbox Code Playgroud)
它应该立即输出hello,然后在 10 秒后输出world!. 不幸的是,它会在 10 秒后输出两个字符串。
sqlcmd 可以做对吗?如何?
聚苯乙烯
我不想为此使用 LinqPad 或任何 GUI。
小智 5
我意识到这是一篇旧帖子,很有可能没有人会看到我的答案,但我会提供我们在我的组织中所做的一些事情。我将是第一个承认这有点混乱的人,但它对我们来说一直运作良好。
我们有通过 SQLCMD 调用的进程,它们使用 Raiserror 来指示进度条目。显然,当我们很久以前升级到 Sql 2012 时,这不再有效。
我最终在 C 驱动器上创建了一个名为 c:\Sql2008_SQLCMD 的新目录,并将以下两个文件从 Sql Server binn 文件夹的 Sql 2008 安装复制到该文件夹。
然后我修改了我的进程(在 bat 文件中)以使用这样的 dos 变量
SET SQLCMD="C:\Sql2008_SQLCMD\sqlcmd"
Run Code Online (Sandbox Code Playgroud)
然后我用 bat 文件替换了任何普通的 SQLCMD 命令行
%SQLCMD% -S 等等...
而不是正常的
SQLCMD -S 等等
这种技术使我能够调用 SQLCMD 的 SQL 2008 版本,对我的 bat 文件脚本进行最少的更改。
这让我可以继续查看 Raiserror 的输出,以便我可以查看进程的进度。
我目前仍在 Sql 2016 CU3 下使用此技术 - 我不确定当我们最终转到 Sql 2017 或以后是否会遇到任何问题
| 归档时间: |
|
| 查看次数: |
645 次 |
| 最近记录: |