需要将 sqlcmd 输出分配给变量

Posted

技术标签:

【中文标题】需要将 sqlcmd 输出分配给变量【英文标题】:need to assign sqlcmd output to a variable 【发布时间】:2018-03-13 13:31:39 【问题描述】:
Dim testvar

testvar = ""sqlcmd.exe -S SERVERNAME\INSTANCENAME -U USERNAME -P PASSWORD -r1 -W -Q "select * from Event.dbo.ALL_EVENTS where (POLICY_TYPE!='LOGFILE' and state='OPEN' and Category like 'Windows-High' and not (POLICY_NAME like 'Level 2 and 3 alerts%') and not (TITLE like '%Level 2 :%') and not (TITLE like :%')₀and not (TITLE like :%')%'严重性 = 'MAJOR' or severity = 'MINOR' or severity = 'CRITICAL'))"" wscript.echo 命令

【问题讨论】:

几个问题.. 1) VBS 不允许您一次声明和分配。您需要将其分为 2 个步骤 2) sqlcmd 不会自行运行 - 您可以查看 .Exec 感谢@pankaj 的回复...按照建议编辑了命令...仍然无法正常工作...“脚本已完成,错误代码为 1” 您将字符串分配给 testvar 而不是命令的输出。正如我在之前的评论中提到的,使用 sheel.exec 来实际执行命令并从控制台窗口读取任何输出(我假设 sqlcmd 将输出到控制台) 哦,我的错...当然我会尝试并告诉你结果 【参考方案1】:

Hey Sahil,您是否尝试过使用函数返回结果

参考:How to save the result of a SQL query into a variable in VBA?

【讨论】:

当然,我也会试试的【参考方案2】:

我就是这样做的。谢谢大家的帮助。

Dim printRes, queryErr Set cmdExec = CreateObject("WScript.Shell")

Set messages = cmdExec.Exec("sqlcmd -S ******** -U **** -P ***** -i C:\file\fullpath\mssql.sql")

Set queryRes = messages.StdOut

'Set queryErr = messages.StdErr 

printRes = queryRes.ReadAll 'printerr = queryErr.ReadAll

WScript.Echo "Result is " & printRes 'WScript.Echo "Error is " & printErr

【讨论】:

以上是关于需要将 sqlcmd 输出分配给变量的主要内容,如果未能解决你的问题,请参考以下文章

如何将命令的输出分配给 Makefile 变量

Liquid:如何将运算符的输出分配给变量?

如何将 exe 输出分配给 gitlab ci 脚本中的变量?

如何执行 shell 命令,并将输出分配给 configure.ac 中的 AC_DEFINE 变量

如何将字符串列分配给变量并在 Bash 脚本的输出中引用它

将shell命令的输出分配给变量[重复]