我想捕获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
。
答案 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%