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

SQLCMD - Capture output from Operating System Command as variable

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

大体思路是这样的:

:SETVAR version !! "type version.txt"

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

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

type version.txt 只是将 version.txt 文件的内容打印到控制台,就像 linux.[= 中的 cat 13=]

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

: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%

在命令行上指定了该值