元の SQL プロジェクトを SDK スタイルのプロジェクトに変換する
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
新しい SDK スタイルの SQL プロジェクトの作成は、クイック タスクです。 ただし、既存の SQL プロジェクトがある場合は、それらを SDK スタイルの SQL プロジェクトに変換して、新しい機能を利用できます。
プロジェクトを変換したら、次のような SDK スタイルのプロジェクトの新機能を使用できます。
- クロスプラットフォーム ビルドのサポート
- 簡略化されたプロジェクト ファイル形式
- パッケージ参照
変換を慎重に完了するには、次の作業を行います。
- 元のプロジェクト ファイルのバックアップを作成します。
- 比較のために、元のプロジェクトから
.dacpac
ファイルをビルドします。 - プロジェクト ファイルを SDK スタイルのプロジェクトに変更します。
- 比較のために、変更したプロジェクトから
.dacpac
ファイルをビルドします。 .dacpac
ファイルが同じであることを確認します。
SDK スタイルのプロジェクトは、Visual Studio の SQL Server Data Tools (SSDT) ではサポートされていません。 変換が完了したら、次のいずれかを使用してプロジェクトをビルドまたは編集する必要があります。
- コマンド ライン
- Visual Studio Code の SQL Database プロジェクトの拡張機能
- Azure Data Studio の SQL Database プロジェクトの拡張機能
前提条件
手順 1: 元のプロジェクト ファイルのバックアップを作成する
プロジェクトを変換する前に、元のプロジェクト ファイルのバックアップを作成します。 これにより、必要に応じて元のプロジェクトに戻すことができます。
エクスプローラーで、変換するプロジェクトの .sqlproj
ファイルのコピーを作成し、ファイル拡張子の末尾に .original
を追加します。 たとえば、MyProject.sqlproj
が MyProject.sqlproj.original
になります。
手順 2: 比較のために、元のプロジェクトから .dacpac
ファイルをビルドする
Visual Studio 2022 でプロジェクトを開きます。 .sqlproj
ファイルは元の形式のままであるため、元の SQL Server Data Tools で開きます。
Visual Studio でプロジェクトをビルドするには、ソリューション エクスプローラーのデータベース ノードを右クリックし、[ビルド] を選択します。
元のプロジェクトから .dacpac
ファイルをビルドするには、Visual Studio で元の SQL Server Data Tools (SSDT) を使用する必要があります。 元の SQL Server Data Tools がインストールされている Visual Studio 2022 でプロジェクト ファイルを開きます。
Visual Studio でプロジェクトをビルドするには、ソリューション エクスプローラーのデータベース ノードを右クリックし、[ビルド] を選択します。
VS Code または Azure Data Studio でプロジェクト フォルダーを開きます。 VS Code または Azure Data Studio の [データベース プロジェクト] ビューで、プロジェクト ノードを右クリックし、[ビルド] を選択します。
SQL データベース プロジェクトは、dotnet build
コマンドを使用してコマンド ラインからビルドできます。
dotnet build
# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj
ビルド プロセスでは、既定でプロジェクトの bin\Debug
フォルダーに .dacpac
ファイルが作成されます。 エクスプローラーを使用して、ビルド プロセスによって作成された .dacpac
を見つけ、 original_project.dacpac
としてプロジェクト ディレクトリの外部にある新しいフォルダーにコピーします。 この .dacpac
ファイルを比較して、後で変換を検証します。
手順 3: プロジェクト ファイルを SDK スタイルのプロジェクトに変更する
プロジェクト ファイルの変更は手動プロセスであり、テキスト エディターで最適に実行されます。 テキスト エディターの .sqlproj
ファイルを開き、次の変更を加えます。
必須: SDK 参照を追加する
プロジェクト要素内に、Microsoft.Build.Sql と https://www.nuget.org/packages/Microsoft.build.sql の最新バージョンを参照する Sdk
項目を追加します。
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0">
<Sdk Name="Microsoft.Build.Sql" Version="0.2.0-preview" />
...
必須: 不要なビルド ターゲットのインポートを削除する
元の SQL プロジェクトは、インポート ステートメントで複数のビルド ターゲットとプロパティを参照します。 明示的に追加した <Import/>
項目 (一意で意図的な変更) を除き、<Import ...>
で始まる行を削除します。
.sqlproj
に存在する場合に削除する例:
...
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<Import Condition="..." Project="...\Microsoft.Data.Tools.Schema.SqlTasks.targets"/>
<Import Condition="'$(SQLDBExtensionsRefPath)' != ''" Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
<Import Condition="'$(SQLDBExtensionsRefPath)' == ''" Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
...
必須: プロパティ フォルダーを削除する
元の SQL プロジェクトには、ソリューション エクスプローラーのプロジェクト プロパティへのアクセスを表した Properties
フォルダーのエントリがあります。 この項目は、プロジェクト ファイルから削除する必要があります。
.sqlproj
に存在する場合に削除する例:
<ItemGroup>
<Folder Include="Properties" />
</ItemGroup>
省略可能: SSDT 参照を削除する
元の SQL Server Data Tools (SSDT) では、Visual Studio のインストールを検出するために、プロジェクト ファイルに追加のコンテンツが必要です。 これらの行は、SDK スタイルの SQL プロジェクトでは不要であり、削除できます。
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">11.0</VisualStudioVersion>
<!-- Default to the v11.0 targets path if the targets file for the current VS version is not found -->
<SSDTExists Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets')">True</SSDTExists>
<VisualStudioVersion Condition="'$(SSDTExists)' == ''">11.0</VisualStudioVersion>
</PropertyGroup>
省略可能: 既定のビルド設定を削除する
元の SQL プロジェクトには、リリースとデバッグのビルド設定に 2 つの大きなブロックが含まれていますが、SDK スタイルの SQL プロジェクトでは、これらのオプションの既定値が SDK によって認識されます。 ビルド設定のカスタマイズがない場合は、次のブロックを削除することを検討してください。
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
手順 4: 比較のために、変更したプロジェクトから .dacpac
ファイルをビルドする
SQL プロジェクトは Visual Studio 2022 と互換性がなくなりました。 プロジェクトをビルドまたは編集するには、次のいずれかを使用する必要があります。
- コマンド ライン
- Visual Studio Code の SQL Database プロジェクトの拡張機能
- Azure Data Studio の SQL Database プロジェクトの拡張機能
プロジェクト ファイルは SDK 形式になりましたが、Visual Studio 2022 で開くには、SQL Server Data Tools、SDK スタイル (プレビュー) がインストールされていて、プロジェクトのファイル拡張子が .sqlprojx
である必要があります。 SQL Server Data Tools、SDK スタイル (プレビュー) がインストールされている Visual Studio 2022 でプロジェクトを開きます。
VS Code または Azure Data Studio でプロジェクト フォルダーを開きます。 VS Code または Azure Data Studio の [データベース プロジェクト] ビューで、プロジェクト ノードを右クリックし、[ビルド] を選択します。
SQL データベース プロジェクトは、dotnet build
コマンドを使用してコマンド ラインからビルドできます。
dotnet build
# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj
ビルド プロセスでは、既定でプロジェクトの bin\Debug
フォルダーに .dacpac
ファイルが作成されます。 エクスプローラーを使用して、ビルド プロセスによって作成された .dacpac
を見つけて、プロジェクト ディレクトリの外部にある新しいフォルダーにコピーします。 この .dacpac
ファイルを比較して、後で変換を検証します。
手順 5: .dacpac
ファイルが同じであることを確認する
変換が成功したことを確認するには、元のプロジェクトと変更されたプロジェクトから作成された .dacpac
ファイルを比較します。 SQL プロジェクトのスキーマ比較機能を使用すると、データベース モデルの違いを視覚化できます。
Visual Studio、Visual Studio Code、または Azure Data Studio の Schema Compare ツールを使用して、.dacpac
ファイルを比較できます。 DacFx .NET ライブラリに基づくコミュニティ ツールも利用できます。
プロジェクトを読み込まずに Visual Studio を起動します。 [ツール]>[SQL Server]>[新しいスキーマ比較] に移動します。 ソースとして元の .dacpac
ファイルを選択し、変更した .dacpac
ファイルをターゲットとして選択します。 Visual Studio で Schema Compare を使用する方法の詳細については、「スキーマ比較を使用してさまざまなデータベース定義を比較する」を参照してください。
Visual Studio の SDK スタイルの SQL プロジェクト プレビューでは、グラフィカル スキーマの比較はまだ使用できません。 Azure Data Studio を使用してスキーマを比較します。
スキーマの比較は Visual Studio Code では使用できません。 Azure Data Studio または Visual Studio を使用してスキーマを比較します。
Azure Data Studio で、SQL Server Schema Compare 拡張機能がまだインストールされていない場合はインストールします。 Ctrl/Cmd+Shift+P
でコマンド パレットを開き、「Schema Compare
」と入力して、コマンド パレットから新しいスキーマ比較を起動します。
ソースとして元の .dacpac
ファイルを選択し、変更した .dacpac
ファイルをターゲットとして選択します。
グラフィカル スキーマの比較は、Visual Studio と Azure Data Studio で使用できます。
スキーマ比較を実行すると、結果は表示されません。 違いの欠如は、元のプロジェクトと変更されたプロジェクトが同等であることを示し、.dacpac
ファイル内で同じデータベース モデルを生成します。
Note
スキーマ比較による .dacpac
ファイルの比較では、配置前/配置後スクリプト、refactorlog、またはその他のプロジェクト設定は検証されません。 データベース モデルのみを検証します。 .dacpac
を .zip
アーカイブに変換し、内容を手動で比較すると、より詳細な比較が可能になります。