Freigeben über


Übersicht über SQL-Projekte-Paketverweise

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

Paketverweise in SQL-Projekten ermöglichen Ihnen das Verweisen auf Datenbankobjekte aus anderen Projekten oder NuGet-Paketen. Die Datenbankobjekte, die einem Projekt über Paketverweise hinzugefügt werden, können Teil derselben Datenbank, einer anderen Datenbank auf demselben Server oder einer anderen Datenbank auf einem anderen Server sein.

Hinweis

Paketverweise sind die empfohlene Methode zum Verweisen auf Datenbankobjekte in der neuen Entwicklung. Das Verweisen auf NuGet-Pakete wird nur in SQL-Projekten im SDK-Stil (Vorschau) unterstützt.

Verweise auf Datenbankobjektpakete

Paketverweise sind eine von mehreren Methoden zum Hinzufügen von Datenbankobjekten zu einem SQL-Projekt als Datenbankverweis. Paketverweise können Objekte für dieselbe Datenbank, eine andere Datenbank auf demselben Server oder eine andere Datenbank auf einem anderen Server enthalten. Paketverweise können verwendet werden, um eine Datenbank in kleinere, besser verwaltbare Projekte aufzuteilen, was dazu beitragen kann, die zeitaufwendige Erstellung eines Projekts während der iterativen lokalen Entwicklung zu reduzieren.

Screenshot eines SQL-Projekts, das auf zwei Pakete und ein Projekt für Datenbankverweise verweist.

SQL-Projektdateibeispiel und Syntax

Paketverweise werden einem SQL-Projekt über Einträge in der .sqlproj-Datei hinzugefügt, ähnlich wie C#-Projekte. Wenn sich ein Paketverweis auf einer anderen Datenbank auf demselben Server bezieht, wird ein <DatabaseSqlCmdVariable>-Element in der Paketreferenz eingeschlossen. Wenn sich ein Paketverweis auf einer anderen Datenbank auf einen anderen Server bezieht, wird ein <ServerSqlCmdVariable>-Element auch in der Paketreferenz eingeschlossen. Paketverweise auf dieselbe Datenbank enthalten keine <ServerSqlCmdVariable>- oder <DatabaseSqlCmdVariable>-Elemente.

Das folgende Beispiel enthält einen Paketverweis auf das Contoso.AdventureWorks.SalesLT-Paket als Datenbankverweis für dieselbe Datenbank, in der die Objekte im Paket Teil des Datenbankmodells im SQL-Projekt werden:

...
  <ItemGroup>
    <PackageReference Include="Contoso.AdventureWorks.SalesLT" Version="1.1.0" />
  </ItemGroup>
</Project>

Systemdatenbanken

Die SQL-Systemdatenbanken (master, msdb) werden auf NuGet.org als Datenbankreferenzpakete veröffentlicht. Diese Pakete enthalten das Schema für die Systemdatenbanken und können als Paketverweise in SQL-Projekten verwendet werden. Die Systemdatenbankpakete werden entsprechend der Version von SQL Server versioniert, der sie zugeordnet sind. Beispielsweise ist das Systemdatenbankpaket master für SQL Server 2022 Microsoft.SqlServer.Dacpacs.Master-Version 160.2.1 und kann einem SQL-Projekt als Paketverweis hinzugefügt werden:

...
  <ItemGroup>
    <PackageReference Include="Microsoft.SqlServer.Dacpacs.Master" Version="160.2.1" />
  </ItemGroup>
</Project>

Nebenversionsänderungen spiegeln Fehlerkorrekturen und kleinere Änderungen am Schema in einer SQL Server-Version wider.

Die verfügbaren Systemdatenbankpakete sind:

Paket dacpac NuGet-Pakete

Ein Datenbankreferenzpaket ist ein NuGet-Paket, das eine .dacpac-Datei enthält. Das NuGet-Paket kann für die Verwendung in SQL-Projekten in einem NuGet-Feed veröffentlicht werden, z. B. Azure Artifacts. Das Erstellen dieses Pakets folgt demselben Prozess wie das Erstellen eines NuGet-Pakets für andere Projekttypen. Weitere Informationen finden Sie unter Erstellen eines Pakets mit der dotnet-CLI.

Screenshot der Zusammenfassung der Paketreferenz für den SQL-Projektprozess.

Verwenden Sie den dotnet pack-Befehl aus der Befehlszeile, um eine .sqlproj-Datei als NuGet-Paket zu verpacken. Standardmäßig erstellt der dotnet pack-Befehl ein NuGet-Paket aus der .sqlproj-Datei im bin/Debug-Ordner.

Paket-Metadaten können durch Eigenschaften innerhalb des Elements <PropertyGroup> in der .sqlproj-Datei angegeben werden. Die folgenden Eigenschaften geben beispielsweise die Paket-ID, Version, Beschreibung, Autoren und Unternehmen an:

<PackageId>Contoso.AdventureWorks.SalesLT</PackageId>
<Version>1.0.0</Version>
<Description>AdventureWorks database SalesLT objects</Description>
<Authors>DevTeam</Authors>
<Company>Contoso Outdoors</Company>

Die vom dotnet pack-Befehl erstellte .nupkg-Datei kann für die Verwendung in SQL-Projekten in einem NuGet-Feed veröffentlicht werden. Diese Datenbankobjekte können von jedem mit Zugriff auf das Paket angezeigt werden. Daher sollten Sie die Auswahl eines öffentlichen oder privaten Feed-Speicherorts berücksichtigen. Weitere Informationen finden Sie unter Hosting mit privaten Paket-Feeds.