適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric の SQL データベース
配置前スクリプトと配置後スクリプトは、配置中に実行されるプロジェクトに含まれる SQL スクリプトです。 配置前/配置後スクリプトは .dacpac に含まれていますが、データベース オブジェクト モデルにコンパイルまたは検証されません。 配置前スクリプトは配置プランが実行される前に実行されますが、配置プランはスクリプトの実行前に計算されます。 配置後スクリプトは配置プランの完了後に実行されます。
SQL プロジェクト ファイルのサンプルと構文
SQL プロジェクト ファイルには、1 つの配置前スクリプトと 1 つの配置後スクリプトを指定できます。
SQL プロジェクト ファイルの次の例では、配置前スクリプトとして prep-db.sql ファイルを追加します。
...
<ItemGroup>
<PreDeploy Include="prep-db.sql" />
</ItemGroup>
SQL プロジェクト ファイルの次の例では、配置後スクリプトとして populate-app-settings.sql ファイルを追加します。
...
<ItemGroup>
<PostDeploy Include="populate-app-settings.sql" />
</ItemGroup>
</Project>
各ファイルを順番に呼び出す SQLCMD スクリプトを使用して、配置前または配置後のスクリプトの一部として複数のファイルを実行できます。
:r .\scripts\script1.sql
:r .\scripts\script2.sql
これらのファイルは Build Action プロパティを Visual Studio のファイル プロパティで Remove に設定するか、.sqlproj 属性が Build に設定された Remove ファイル内のファイルにエントリを追加することにより、データベース モデル ビルドから除外する必要があります。 SQL プロジェクトがビルドされると、追加のファイルが、.dacpac プロジェクト SDK によってMicrosoft.Build.Sql内の参照先の配置前または配置後スクリプトに結合されます。
...
<ItemGroup>
<Build Remove="scripts\script1.sql" />
<Build Remove="scripts\script2.sql" />
</ItemGroup>
</Project>
SDK スタイルの SQL プロジェクトでは、 Build Remove="path\file.sql" エントリを追加すると、プロジェクトからファイルが完全に削除され、Visual Studio Code プロジェクト ビューに表示されなくなります。 モデルコンパイルからファイルを除外したままファイルを表示するには、 None 項目として再度追加します。
...
<ItemGroup>
<Build Remove="scripts\script1.sql" />
<None Include="scripts\script1.sql" />
<Build Remove="scripts\script2.sql" />
<None Include="scripts\script2.sql" />
</ItemGroup>
</Project>
これにより、プロジェクトでファイルを表示したまま、データベース モデルの一部としてファイルがコンパイルされなくなります。
Tip
.dacpacファイル拡張子を.zipに変更し、.zipをフォルダーにアーカイブ解除することで、プロジェクトビルド後に配置前スクリプトと配置後スクリプトを検証できます。 単一の .sql ファイルは、配置前スクリプトと配置後スクリプト用に存在し、元の SQL プロジェクト内のすべての参照ファイルの Transact-SQL コンテンツ全体を含む必要があります。
デプロイ前と配置後のスクリプトを追加する
ソリューション エクスプローラーでプロジェクトを右クリックし、[追加]>[スクリプト] を選択します。 [配置前スクリプト] または [配置後スクリプト] を選択します。
スクリプト ファイルがプロジェクトに追加されてクエリ エディターで開かれ、スクリプトを完了できます。 このスクリプトは、プロジェクトが配置されるたびに、配置計画が実行される前または後に実行されます。
ソリューション エクスプローラーで、プロジェクト ノードを右クリックし、[追加>新しい項目] を選択します。 [ 新しい項目の追加] ダイアログが表示され、[ すべてのテンプレートの表示>Table] を選択し、[ 配置前スクリプト ] または [ 配置後スクリプト] を選択します。
スクリプト ファイルがプロジェクトに追加されてクエリ エディターで開かれ、スクリプトを完了できます。 このスクリプトは、プロジェクトが配置されるたびに、配置計画が実行される前または後に実行されます。
Visual Studio Code または Azure Data Studio の [データベース プロジェクト] ビューで、プロジェクトを右クリックし、[ 配置前スクリプトの追加 ] または [ 配置後スクリプトの追加] を選択します。 ファイル拡張子を付けずにスクリプト名を指定します。
スクリプト ファイルがプロジェクトに追加されてクエリ エディターで開かれ、スクリプトを完了できます。 このスクリプトは、プロジェクトが配置されるたびに、配置計画が実行される前または後に実行されます。
.sqlproj ファイルを直接編集して、デプロイ前または配置後のスクリプトを追加します。
<PreDeploy> ファイルの <PostDeploy> セクションに <ItemGroup> または .sqlproj を追加します。
たとえば、配置前スクリプトとしてスクリプト scripts\before-script.sql をプロジェクトに追加するには、次の操作を行います。
...
<ItemGroup>
<PreDeploy Include="scripts\before-script.sql" />
</ItemGroup>
このスクリプト scripts\before-script.sql は、プロジェクトが配置されるたびに、配置計画が実行される前に実行されます。