適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric 内の SQL データベース
既存の SQL プロジェクトを SDK スタイルのプロジェクトに変換するプロセスは、.sqlproj
ファイルを手動で編集して、Microsoft.Build.Sql SDK スタイルのプロジェクト形式を含めます。 変換を開始する前に、プロジェクト ファイルをバックアップし、プロジェクトの .dacpac
をアーカイブすることをお勧めします。 プロジェクトからビルドされた "before" と "after" .dacpac
を比較することで、変換プロセスが正しく完了したことを確認できます。
DacpacVerify CLI (プレビュー) は、2 つの.dacpac
ファイルを比較し、ファイル間の違いを出力するコマンド ライン ツールです。 このツールは、変換の前後に .dacpac
ファイルを比較することで、プロジェクトの変換が成功したことを確認するのに役立ちます。
[前提条件]
SqlPackage コマンド ライン ツールと同様に、DacpacVerify CLI (プレビュー) は dotnet ツールとして使用できます。 DacpacVerify は Windows、macOS、Linux にインストールでき、 コンピューターに .NET SDK をインストールする必要があります。 DacpacVerify CLI をインストールするには、次のコマンドを実行します。
dotnet tool install --global Microsoft.DacpacVerify --prerelease
DacpacVerify ツール
DacpacVerify ツールの基本的な使用方法には、 dacpacverify
コマンドを実行した後、比較する 2 つの .dacpac
ファイルへのパスが含まれます。
dacpacverify before.dacpac after.dacpac
このツールは、2 つのファイル間の違いの概要を出力します。 .dacpac
ファイルの検証には、次のものが含まれます。
- デプロイ前スクリプト
- デプロイ後のスクリプト
- SQLCMD 変数
- データベース参照
- データベースのプロパティ/オプション
- データベース オブジェクト (テーブル、ビュー、ストアド プロシージャなど)
変換されたプロジェクトを確認する
この例では、SQL プロジェクト変換の前後に .dacpac
ファイルを比較して、プロジェクト変換を検証します。 変換の前に、プロジェクトをビルドし、 .dacpac
ファイルを作成します。既定では、 bin/Debug
フォルダーになります。 後で別のフォルダーにbefore.dacpac
名前と比較するために、.dacpac
ファイルのコピーを作成します。
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<Name>ConversionTest</Name>
<SchemaVersion>2.0</SchemaVersion>
<ProjectVersion>4.1</ProjectVersion>
<ProjectGuid>{<unique identifier>}</ProjectGuid>
<DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
<OutputType>Database</OutputType>
<RootPath>
</RootPath>
<RootNamespace>ConversionTest</RootNamespace>
<AssemblyName>ConversionTest</AssemblyName>
<ModelCollation>1033, CI</ModelCollation>
<DefaultFileStructure>BySchemaAndSchemaType</DefaultFileStructure>
<DeployToDatabase>True</DeployToDatabase>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<TargetLanguage>CS</TargetLanguage>
<AppDesignerFolder>Properties</AppDesignerFolder>
<SqlServerVerification>False</SqlServerVerification>
<IncludeCompositeObjects>True</IncludeCompositeObjects>
<TargetDatabaseSet>True</TargetDatabaseSet>
</PropertyGroup>
<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>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">11.0</VisualStudioVersion>
<!-- Default to the v11.0 targets path if the targets file for the current VS version isn't 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>
<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" />
<ItemGroup>
<Folder Include="Properties" />
</ItemGroup>
<ItemGroup>
<Build Include="Table1.sql" />
<Build Include="View1.sql" />
<Build Include="View2.sql" />
</ItemGroup>
<ItemGroup>
<SqlCmdVariable Include="EnvironmentName">
<DefaultValue>
</DefaultValue>
<Value>$(SqlCmdVar__1)</Value>
</SqlCmdVariable>
</ItemGroup>
</Project>