SQLCMD - 将操作系统命令的输出捕获为变量

时间:2018-05-29 17:20:14

标签: sql-server sqlcmd

我想捕获sqlcmd的输出!! (操作系统命令)调用我可以在insert语句中使用的变量。或者,只需将文件内容读入变量即可。

一般的想法是这样的:

:SETVAR version !! "type version.txt"

insert into dbo.DeployVersion ([Version],[Date],[User]) values ('$(version)',getdate(),'$(SQLCMDUSER)')

但似乎我不能以这种方式链接SQLCMD调用。有什么想法吗?

type version.txt只是将version.txt文件的内容打印到控制台,如linux中的cat

1 个答案:

答案 0 :(得分:0)

我能找到的最好的方法就是这种做法,看起来真的很傻。

:setvar quot "'"
declare @versionString nvarchar(300)
set @versionString =
$(quot)
:r .\version.txt
$(quot)

insert into dbo.DeployVersion ([Version],[Date],[User]) values ('$(version)',getdate(),'xyz')

这纯粹是在SQLCMD中工作,是对原始问题的回答。

但是,这是在sqlpackage部署中使用的,我没有看到从dacpac外部引用version.txt文件的方法。所以我在dacpac项目中添加了一个变量,并使用sqlpackage ... /Variables:Version=%someValueReadFromBatFile%

在命令行上指定了该值