SQL プロジェクト パッケージ参照の概要
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
SQL プロジェクトのパッケージ参照を使用すると、他のプロジェクトまたは NuGet パッケージからデータベース オブジェクトを参照できます。 パッケージ参照を使用してプロジェクトに追加されるデータベース オブジェクトは、同じデータベース、同じサーバーにある別のデータベース、別のサーバーにある別のデータベースの一部になることがあります。
Note
パッケージ参照は、新しい開発でデータベース オブジェクトを参照するために推奨される方法です。 NuGet パッケージの参照は、SDK スタイルの SQL プロジェクト (プレビュー) でのみサポートされます。
データベース オブジェクトのパッケージ参照
パッケージ参照は、データベース参照として SQL プロジェクトにデータベース オブジェクトを追加するいくつかの方法の 1 つです。 パッケージ参照には、同じデータベース、同じサーバーにある別のデータベース、別のサーバーにある別のデータベースのオブジェクトを含めることがあります。 パッケージ参照はデータベースを小さくて管理しやすいプロジェクトに分割するために使用できます。これにより、反復的なローカル開発時にプロジェクトをビルドするために必要な時間を短縮できます。
SQL プロジェクト ファイルのサンプルと構文
C# プロジェクトと同様に、パッケージ参照は .sqlproj
ファイル内のエントリを介して SQL プロジェクトに追加されます。 パッケージ参照が同じサーバーにある別のデータベースにあると、<DatabaseSqlCmdVariable>
要素がパッケージ参照に含まれます。 パッケージ参照が別のサーバーにある別のデータベースにあると、<ServerSqlCmdVariable>
要素もパッケージ参照に含まれます。 同じデータベースへのパッケージ参照には、<ServerSqlCmdVariable>
または <DatabaseSqlCmdVariable>
の要素が含まれません。
次の例には、パッケージ内のオブジェクトが SQL プロジェクトのデータベース モデルの一部になる場合、同じデータベースのデータベース参照として Contoso.AdventureWorks.SalesLT
パッケージへのパッケージ参照が含まれています。
...
<ItemGroup>
<PackageReference Include="Contoso.AdventureWorks.SalesLT" Version="1.1.0" />
</ItemGroup>
</Project>
システム データベース
SQL システム データベース (master
、msdb
) は、データベース参照パッケージとして NuGet.org に公開されます。 これらのパッケージにはシステム データベースのスキーマが含まれており、SQL プロジェクトでパッケージ参照として使用できます。 システム データベース パッケージは、関連付けられている SQL Server のバージョンに合わせてバージョン管理されます。 たとえば、SQL Server 2022 の master
システム データベース パッケージは Microsoft.SqlServer.Dacpacs.Master
バージョン 160.2.1
であり、パッケージ参照として SQL プロジェクトに追加できます。
...
<ItemGroup>
<PackageReference Include="Microsoft.SqlServer.Dacpacs.Master" Version="160.2.1" />
</ItemGroup>
</Project>
マイナー バージョンの変更には、SQL Server バージョン内のスキーマに対するバグ修正と軽微な変更が反映されます。
利用可能なシステム データベース パッケージは次のとおりです。
- SQL Server
master
システム データベース - SQL Server
msdb
システム データベース - Azure SQL データベース
master
システム データベース - Azure Synapse Analytics
master
システム データベース - Azure Synapse Analytics のサーバーレス プール
master
システム データベース
パッケージ dacpac NuGet パッケージ
データベース参照パッケージは、.dacpac
ファイルを含む NuGet パッケージです。 NuGet パッケージは、SQL プロジェクトで使用するために NuGet フィード (Azure Artifacts など) に発行できます。 このパッケージの作成は、他の種類のプロジェクト用に NuGet パッケージを作成する場合と同じプロセスに従います。 詳細については、「dotnet CLI を使用してパッケージの作成」を参照してください。
.sqlproj
ファイルを NuGet パッケージとしてパッケージ化するには、コマンド ラインから dotnet pack
コマンドを使用します。 既定では、dotnet pack
コマンドは bin/Debug
フォルダー内の .sqlproj
ファイルから NuGet パッケージを作成します。
パッケージ メタデータは、.sqlproj
ファイル内の <PropertyGroup>
要素内のプロパティで指定することができます。 たとえば、次のプロパティはパッケージ ID、バージョン、説明、作成者、会社を指定します。
<PackageId>Contoso.AdventureWorks.SalesLT</PackageId>
<Version>1.0.0</Version>
<Description>AdventureWorks database SalesLT objects</Description>
<Authors>DevTeam</Authors>
<Company>Contoso Outdoors</Company>
dotnet pack
コマンドによって作成された .nupkg
ファイルは、SQL プロジェクトで使用するために NuGet フィードに発行できます。 このデータベース オブジェクトは、パッケージにアクセスできるすべてのユーザーに表示できるため、パブリックフィードまたはプライベート フィードの場所を選択する際に検討する必要があります。 詳細については、「プライベート パッケージ フィードでホスティング」を参照してください。