SQL プロジェクトをビルドして、TeamCity で DacPac を作成しています。結果の DacPac には、展開時またはバージョン番号で作成される前に更新したい展開後スクリプトがあります。このパラメーターを TeamCity または DacPac のデプロイ時に設定することはできますか?
sqlpackage.exe コマンド ラインは次のようになります。
C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe" /Action:Publish /Sourcefile:#{SourceFolder} /TargetDatabaseName:DBName /TargetServerName:#{SqlServer}
「#{}」は octopus デプロイ サーバーのパラメーターです。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」をバージョン番号に置き換えることですが、この方法は理想的ではありません。これにより、別の開発者が、ファイル コンテンツ置換ビルド機能で使用される正規表現に適合しない別のパラメーターを使用してファイルをチェックインした場合、将来エラーが発生する可能性があります。