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%
在命令行上指定了该值
我想捕获 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%