次の方法で共有


SQL プロジェクト パッケージ参照の概要

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

SQL プロジェクトのパッケージ参照を使用すると、他のプロジェクトまたは NuGet パッケージからデータベース オブジェクトを参照できます。 パッケージ参照を使用してプロジェクトに追加されるデータベース オブジェクトは、同じデータベース、同じサーバーにある別のデータベース、別のサーバーにある別のデータベースの一部になることがあります。

Note

パッケージ参照は、新しい開発でデータベース オブジェクトを参照するために推奨される方法です。 NuGet パッケージの参照は、SDK スタイルの SQL プロジェクト (プレビュー) でのみサポートされます。

データベース オブジェクトのパッケージ参照

パッケージ参照は、データベース参照として SQL プロジェクトにデータベース オブジェクトを追加するいくつかの方法の 1 つです。 パッケージ参照には、同じデータベース、同じサーバーにある別のデータベース、別のサーバーにある別のデータベースのオブジェクトを含めることがあります。 パッケージ参照はデータベースを小さくて管理しやすいプロジェクトに分割するために使用できます。これにより、反復的なローカル開発時にプロジェクトをビルドするために必要な時間を短縮できます。

データベース参照用の 2 つのパッケージと 1 つのプロジェクトを参照する SQL プロジェクトの例のスクリーンショット。

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 システム データベース (mastermsdb) は、データベース参照パッケージとして 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 バージョン内のスキーマに対するバグ修正と軽微な変更が反映されます。

利用可能なシステム データベース パッケージは次のとおりです。

パッケージ dacpac NuGet パッケージ

データベース参照パッケージは、.dacpac ファイルを含む NuGet パッケージです。 NuGet パッケージは、SQL プロジェクトで使用するために NuGet フィード (Azure Artifacts など) に発行できます。 このパッケージの作成は、他の種類のプロジェクト用に NuGet パッケージを作成する場合と同じプロセスに従います。 詳細については、「dotnet CLI を使用してパッケージの作成」を参照してください。

SQL プロジェクト プロセスのパッケージ 参照の概要におけるスクリーンショット。

.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 フィードに発行できます。 このデータベース オブジェクトは、パッケージにアクセスできるすべてのユーザーに表示できるため、パブリックフィードまたはプライベート フィードの場所を選択する際に検討する必要があります。 詳細については、「プライベート パッケージ フィードでホスティング」を参照してください。