SQLCMD - захватить вывод команды операционной системы как переменную - PullRequest
0 голосов
/ 29 мая 2018

Я хотел бы захватить вывод sqlcmd !!(команда операционной системы) вызвать переменную, которую я могу использовать в операторе вставки.Или просто прочитайте содержимое файла в переменную.

Общая идея примерно такая:

:SETVAR version !! "type version.txt"

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

Но, похоже, я не могу связать вызовы SQLCMD в этомпуть.Есть идеи?

type version.txt просто выводит содержимое файла version.txt на консоль, например cat в linux.

1 Ответ

0 голосов
/ 29 мая 2018

Лучшее, что я смог найти, был этот подход, который казался действительно глупым.

: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, и я не вижу способа ссылаться на файл version.txt извне из dacpac.Поэтому вместо этого я добавил переменную в проект dacpac и указал это значение в командной строке, используя sqlpackage ... /Variables:Version=%someValueReadFromBatFile%

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...