Я создаю DacPac в TeamCity, создав проект sql. В результате DacPac имеет сценарий пост-развертывания, который я хотел бы обновить либо при развертывании, либо до его создания с номером версии. Можно ли установить этот параметр либо в TeamCity, либо при развертывании DacPac?Параметры после развертывания в DacPac
sqlpackage.exe командная строка выглядит
C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe" /Action:Publish /Sourcefile:#{SourceFolder} /TargetDatabaseName:DBName /TargetServerName:#{SqlServer}
Где "# {}" является параметром на осьминога развертывания сервера. Сценарий развертывания поста в проекте SQL выглядит следующим образом:
declare @version varchar(10)
set @version = 'z'
IF EXISTS (SELECT * FROM tVersion)
UPDATE VersionTable SET Version = @version
ELSE
INSERT INTO VersionTable VALUES (@version)
образом я делал это с помощью файл контент заменителя на TeamCity, чтобы заменить «Z» с номером версии, но этот метод не является идеальным. Это может привести к ошибкам в будущем, если другой разработчик должен был проверить файл с другим параметром, который не соответствовал регулярному выражению, используемому в функции создания компоновщика содержимого содержимого.
Привет Эд, Спасибо за предложения, я использую sqlpackage.exe, как указано в вопросе. Я дам переменные SQLCMD маршрутом, так как моя самая большая проблема со вторым вариантом заключается в том, как открыть dacpac и отредактировать файл после развертывания. Это достаточно просто, чтобы вручную отредактировать файл в .zip, а затем отредактировать файл postdeploy.sql, но, похоже, это будет несколько сложнее при использовании развертывания octopus. Чтобы уточнить: «v: variable_name =», если я поместил это в свою sqlpackage, в командной строке exe, он изменит переменную при развертывании? Еще раз спасибо! Adam –
yes that is right/v: variable_name = value :) –
Thanks Ed. Это отлично работает. –