元の SQL プロジェクトを SDK スタイルのプロジェクトに変換する
適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric SQL Database
新しい 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 プロジェクトの拡張機能
- SQL Server Data Tools、Visual Studio 2022 では SDK スタイル (プレビュー)
前提条件
手順 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
ビルド プロセスでは、既定でプロジェクトの .dacpac
フォルダーに bin\Debug
ファイルが作成されます。 エクスプローラーを使用して、ビルド プロセスによって作成された .dacpac
を見つけ、 original_project.dacpac
としてプロジェクト ディレクトリの外部にある新しいフォルダーにコピーします。 この .dacpac
ファイルを比較して、後で変換を検証します。
手順 3: プロジェクト ファイルを SDK スタイルのプロジェクトに変更する
プロジェクト ファイルの変更は手動プロセスであり、テキスト エディターで最適に実行されます。 テキスト エディターの .sqlproj
ファイルを開き、次の変更を加えます。
必須: SDK 参照を追加する
プロジェクト要素内に、Microsoft.Build.Sql を参照する Sdk
項目と、次のスニペットに #.#.#
が含まれている https://www.nuget.org/packages/Microsoft.build.sql の最新バージョンを追加します。
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0">
<Sdk Name="Microsoft.Build.Sql" Version="#.#.#" />
...
必須: 不要なビルド ターゲットのインポートを削除する
元の 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>
必須: 既定で含まれているビルド項目を削除する
元の SQL プロジェクトでは、プロジェクト ファイル内のデータベース オブジェクトを明示的に表す .sql
ファイルがすべて <Build Include="..." />
項目として一覧表示されます。 SDK スタイルの SQL プロジェクトでは、プロジェクト フォルダー ツリー (**/*.sql
) 内のすべての .sql
ファイルが既定で含まれているため、ビルド パフォーマンスの問題を回避するには、それらのファイルの <Build Include="...." />
項目を削除する必要があります。
プロジェクト ファイルから削除する必要がある行。次に例を示します。
<Build Include="SalesLT/Products.sql" />
<Build Include="SalesLT/SalesLT.sql" />
<Build Include="SalesLT/Categories.sql" />
<Build Include="SalesLT/CategoriesProductCount.sql" />
これらのノードは、これらのファイルの特定の動作 指示するため、<PreDeploy Include="..." />
または <PostDeploy Include="..." />
項目を削除しないでください。 また、SQL プロジェクト フォルダー ツリーに含まれていないファイルの <Build Include="..." />
項目も削除しないでください。
省略可能: 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 プロジェクトの拡張機能
- SQL Server Data Tools、Visual Studio 2022 では SDK スタイル (プレビュー)
プロジェクト ファイルは SDK 形式になりましたが、Visual Studio 2022 で開くには、SQL Server Data Tools SDK スタイル (プレビュー) がインストールされている必要があります。 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
ビルド プロセスでは、既定でプロジェクトの .dacpac
フォルダーに bin\Debug
ファイルが作成されます。 エクスプローラーを使用して、ビルド プロセスによって作成された .dacpac
を見つけて、プロジェクト ディレクトリの外部にある新しいフォルダーにコピーします。 この .dacpac
ファイルを比較して、後で変換を検証します。
手順 5: .dacpac
ファイルが同じであることを確認する
変換が成功したことを確認するには、元のプロジェクトと変更されたプロジェクトから作成された .dacpac
ファイルを比較します。 SQL プロジェクトの スキーマ比較 機能を使用すると、2 つの .dacpac
ファイル間のデータベース モデルの違いを視覚化できます。 または、DacpacVerify コマンド ライン ユーティリティを使用して、配置前/配置後のスクリプトやプロジェクト設定など、2 つの .dacpac
ファイルを比較することもできます。
DacpacVerify は、dotnet ツールとしてインストールできます。 ツールをインストールするには、次のコマンドを実行します。
dotnet tool install --global Microsoft.DacpacVerify --prerelease
DacpacVerify の構文は、2 つの .dacpac
ファイルへのファイルパスを dacpacverify <source DACPAC path> <target DACPAC path>
として指定することです。 2 つの .dacpac
ファイルを比較するには、次のコマンドを実行します。
DacpacVerify original_project.dacpac modified_project.dacpac
Visual Studio または Azure Data Studio のスキーマ比較ツールを使用して、.dacpac
ファイル内のオブジェクトを比較できます。
プロジェクトを読み込まずに 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
ファイル内で同じデータベース モデルを生成します。
注記
スキーマ比較による .dacpac
ファイルの比較では、配置前/配置後スクリプト、refactorlog、またはその他のプロジェクト設定は検証されません。 データベース モデルのみを検証します。 DacpacVerify コマンド ライン ユーティリティを使用して、2 つの .dacpac
ファイルが同等であることを検証することをお勧めします。