元の SQL プロジェクトを SDK スタイルのプロジェクトに変換する

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance

新しい SDK スタイルの SQL プロジェクトの作成は、クイック タスクです。 ただし、既存の SQL プロジェクトがある場合は、それらを SDK スタイルの SQL プロジェクトに変換して、新しい機能を利用できます。

プロジェクトを変換したら、次のような SDK スタイルのプロジェクトの新機能を使用できます。

  • クロスプラットフォーム ビルドのサポート
  • 簡略化されたプロジェクト ファイル形式
  • パッケージ参照

変換を慎重に完了するには、次の作業を行います。

  1. 元のプロジェクト ファイルのバックアップを作成します。
  2. 比較のために、元のプロジェクトから .dacpac ファイルをビルドします。
  3. プロジェクト ファイルを SDK スタイルのプロジェクトに変更します。
  4. 比較のために、変更したプロジェクトから .dacpac ファイルをビルドします。
  5. .dacpac ファイルが同じであることを確認します。

SDK スタイルのプロジェクトは、Visual Studio の SQL Server Data Tools (SSDT) ではサポートされていません。 変換が完了したら、次のいずれかを使用してプロジェクトをビルドまたは編集する必要があります。

  • コマンド ライン
  • Visual Studio Code の SQL Database プロジェクトの拡張機能
  • Azure Data Studio の SQL Database プロジェクトの拡張機能

前提条件

手順 1: 元のプロジェクト ファイルのバックアップを作成する

プロジェクトを変換する前に、元のプロジェクト ファイルのバックアップを作成します。 これにより、必要に応じて元のプロジェクトに戻すことができます。

エクスプローラーで、変換するプロジェクトの .sqlproj ファイルのコピーを作成し、ファイル拡張子の末尾に .original を追加します。 たとえば、MyProject.sqlprojMyProject.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 アーカイブに変換し、内容を手動で比較すると、より詳細な比較が可能になります。