発行プロファイルは、SQL プロジェクトの配置構成を格納するファイルです。 発行プロファイルでは、再利用可能な .publish.xml ファイルに、ターゲット接続情報、デプロイ オプション、および SQLCMD 変数の値をカプセル化できます。 発行プロファイルは、展開で特定のオブジェクトの種類を除外したり、ターゲット プラットフォームの違いを無視したりするなど、特定の設定が必要な場合に特に便利です。 デプロイするたびにこれらのオプションを指定する代わりに、発行プロファイルに保存して再利用します。
SQL プロジェクトを使用する場合は、複数の発行プロファイルを作成して格納できます。 展開中に、複数のオプションを手動で選択せずに、一貫性のある設定を適用する発行プロファイルを選択します。
発行プロファイルのファイル形式
発行プロファイルは、 .publish.xml 拡張子を持つ XML ファイルです。 このファイルには、XML パス /Project/PropertyGroup での配置動作を定義するプロパティと項目が含まれています。
発行プロファイルには、次の情報を含めることができます。
- ターゲット接続文字列 - ターゲット データベース サーバーの接続文字列
- ターゲット データベース名 - デプロイ先のデータベースの名前
- 展開オプション - ソースに存在しないオブジェクトを削除するか、データ損失の可能性をブロックするかなど、展開の動作を制御する設定
- SQLCMD 変数の値 - デプロイ時に適用される SQL プロジェクトで定義された SQLCMD 変数の値
発行プロファイルのサンプル
次の例は、ローカル SQL Server インスタンスを対象とする発行プロファイルを示しています。 2 つのデプロイ オプションを設定し、1 つの SQLCMD 変数の値を提供します。
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IncludeCompositeObjects>True</IncludeCompositeObjects>
<TargetDatabaseName>AdventureWorks</TargetDatabaseName>
<AllowIncompatiblePlatform>True</AllowIncompatiblePlatform>
<ProfileVersionNumber>1</ProfileVersionNumber>
</PropertyGroup>
<ItemGroup>
<SqlCmdVariable Include="EnvironmentName">
<Value>staging</Value>
</SqlCmdVariable>
</ItemGroup>
</Project>
プロジェクト ファイルにプロファイル エントリを発行する
発行プロファイルを SQL プロジェクトに追加すると、発行プロファイル ファイルへのパスを含むエントリがプロジェクト ファイル (.sqlproj) に追加されます。
<ItemGroup>
<None Include="Staging.publish.xml" />
</ItemGroup>
sqlPackage で /Profile: パラメーターを使用して任意の発行プロファイルを指定できますが、プロジェクト ファイルに含まれる発行プロファイルは、SQL プロジェクト ツールのソリューション エクスプローラーまたはデータベース プロジェクト ビューに表示されます。 この機能により、デプロイ時の管理と選択が容易になります。
発行プロファイルの展開オプション
デプロイ オプションは、ターゲット データベースに変更を適用するときのデプロイ エンジンの動作を制御します。 これらのオプションは、 SqlPackage 発行 アクションで使用できるプロパティと、DacFx API の DacDeployOptions クラスに対応します。
一般的に使用される展開オプションは次のとおりです。
| オプション | デフォルト | 説明 |
|---|---|---|
AllowIncompatiblePlatform |
False |
プラットフォームの互換性の違いがある場合でも、デプロイを試みます。 |
BlockOnPossibleDataLoss |
True |
変更によってデータが失われる可能性がある場合は、デプロイを停止します。 |
DropObjectsNotInSource |
False |
ソース プロジェクトに存在しないターゲット データベース内のオブジェクトを削除します。 |
IgnoreColumnOrder |
False |
ソースとターゲットの間の列の順序の違いを無視します。 |
ScriptDatabaseOptions |
True |
デプロイ時の互換性レベルなど、データベース レベルのオプションをスクリプト化します。 |
展開オプションとその既定値の完全な一覧については、「 SqlPackage 発行プロパティ」を参照してください。
発行プロファイルの SQLCMD 変数
SQL プロジェクトで定義されている SQLCMD 変数の値は、発行プロファイルで設定できます。 発行プロファイルをデプロイに使用すると、プロファイルの SQLCMD 変数の値によって、プロジェクト内の既定値がオーバーライドされます。
発行プロファイルでは、SQLCMD 変数が <SqlCmdVariable> 項目として格納されます。
<ItemGroup>
<SqlCmdVariable Include="EnvironmentName">
<Value>staging</Value>
</SqlCmdVariable>
<SqlCmdVariable Include="FirstHistoricalYear">
<Value>2005</Value>
</SqlCmdVariable>
</ItemGroup>
/v:コマンド ラインで指定した値は、プロジェクトの既定値と発行プロファイルの両方の値をオーバーライドします。
ツールで発行プロファイルを使用する
発行プロファイルは、SQL プロジェクト ツールと SqlPackage コマンド ライン インターフェイスでサポートされています。
Visual Studio (SSDT) で、Publish ダイアログから発行プロファイルを作成して読み込みます。 展開設定を構成し、[ 名前を付けてプロファイルを保存] を選択すると、設定は .publish.xml ファイルに保存されます。 以前に保存したプロファイルを読み込むには、[発行] ダイアログで [プロファイルの読み込み] を選択します。 発行プロファイルは、SQL プロジェクトの項目として格納され、Solution Explorer に表示されます。
[新しい アイテムの追加 ] ダイアログを使用して新しい発行プロファイルをプロジェクトに追加し、[ 発行プロファイル ] 項目テンプレートを選択します。 [既存のアイテムの追加]
Solution Explorer から発行プロファイルをダブルクリックすると、プロファイルの設定が適用された Publish ダイアログが開きます。 デプロイの前に、これらの設定を確認または変更できます。
Visual Studioの SDK スタイルの SQL プロジェクトで、Publish ダイアログから発行プロファイルを作成して読み込みます。 展開設定を構成し、[ 名前を付けてプロファイルを保存] を選択すると、設定は .publish.xml ファイルに保存されます。 以前に保存したプロファイルを読み込むには、[発行] ダイアログで [プロファイルの読み込み] を選択します。
SQL Database Projects 拡張機能を使用したVisual Studio Codeで、Publish ダイアログから Save As オプションを使用して発行プロファイルを作成します。 発行プロファイルは、プロジェクトに追加できる .publish.xml ファイルとして保存されます。 以前に保存したプロファイルを読み込むには、[発行] ダイアログで [プロファイルの選択] から選択します。
プロジェクトのコンテキスト メニューから [発行プロファイルの追加] オプションを選択して、新しい 発行プロファイル をプロジェクトに追加します。 既存の発行プロファイル ファイルをプロジェクトに追加します。 [既存のアイテムの追加]...
SQL Database Projects 拡張機能を使用したVisual Studio Codeでは、発行プロファイルは Database Projects ビューのプロジェクト ノードの下に表示されます。 プロジェクトを発行する場合は、既存の発行プロファイルを選択するか、1 つなしで続行できます。
発行プロファイルは現在、SQL Server Management Studio (SSMS) ではサポートされていません。
SqlPackage コマンド ライン インターフェイスを使用して、 /Profile: (または /pr:) パラメーターを使用して発行プロファイルを指定します。
sqlpackage /Action:Publish /SourceFile:AdventureWorks.dacpac /Profile:production.publish.xml
コマンド ラインで指定したプロパティと SQLCMD 変数の値は、発行プロファイルの値をオーバーライドします。 詳細については、「 SqlPackage の発行」を参照してください。