Udostępnij za pośrednictwem


Odwołania do pakietów projektów SQL

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL Database w Microsoft Fabric

Odwołania do pakietów w projektach SQL umożliwiają odwołowywanie się do obiektów bazy danych z innych projektów lub pakietów NuGet. Obiekty bazy danych dodane do projektu za pośrednictwem odwołań do pakietów mogą być częścią tej samej bazy danych, innej bazy danych na tym samym serwerze lub innej bazy danych na innym serwerze.

Notatka

Odwołania do pakietów to zalecana metoda odwoływania się do obiektów bazy danych w nowym programowaniu. Odwoływanie się do pakietów NuGet jest obsługiwane tylko w projektach SQL w stylu zestawu SDK.

Odwołania do pakietu obiektów bazy danych

Odwołania do pakietów to jedna z kilku metod dodawania obiektów bazy danych do projektu SQL jako odwołania do bazy danych . Odwołania do pakietów mogą zawierać obiekty dla tej samej bazy danych, innej bazy danych na tym samym serwerze lub innej bazy danych na innym serwerze. Odwołania do pakietów mogą służyć do dzielenia bazy danych na mniejsze, bardziej zarządzane projekty, co może pomóc skrócić czas wymagany do utworzenia projektu podczas iteracyjnego programowania lokalnego.

Zrzut ekranu przedstawiający przykład projektu SQL odwołującego się do dwóch pakietów i jednego projektu dla odwołań do bazy danych.

Przykład i składnia pliku projektu SQL

Odwołania do pakietu są dodawane do projektu SQL za pomocą wpisów w pliku .sqlproj, podobnie jak w projektach języka C#. Jeśli odwołanie do pakietu dotyczy innej bazy danych na tym samym serwerze, element <DatabaseSqlCmdVariable> jest uwzględniony w odwołaniu do pakietu. Jeśli odwołanie do pakietu dotyczy innej bazy danych na innym serwerze, element <ServerSqlCmdVariable> jest również uwzględniony w odwołaniu do pakietu. Odwołania do pakietu do tej samej bazy danych nie zawierają elementów <ServerSqlCmdVariable> ani <DatabaseSqlCmdVariable>.

Poniższy przykład zawiera odwołanie do pakietu Contoso.AdventureWorks.SalesLT jako odwołanie do bazy danych dla tej samej bazy danych, w której obiekty w pakiecie stają się częścią modelu bazy danych w projekcie SQL:

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

Poniższy przykład zawiera odwołanie do pakietu Contoso.AdventureWorks jako odwołanie do bazy danych dla innej bazy danych (AdventureWorks) na tym samym serwerze, na którym obiekty w pakiecie stają się częścią modelu bazy danych w projekcie SQL:

...
  <ItemGroup>
    <PackageReference Include="Contoso.AdventureWorks" Version="1.1.0">
      <DatabaseSqlCmdVariable>AdventureDB</DatabaseSqlCmdVariable>
      <DacpacName>AdventureWorks</DacpacName>
    </PackageReference>
  </ItemGroup>
  <ItemGroup>
    <SqlCmdVariable Include="AdventureDB">
      <DefaultValue>AdventureWorks</DefaultValue>
      <Value>$(SqlCmdVar__1)</Value>
    </SqlCmdVariable>
  </ItemGroup>
</Project>

W tym przykładzie plik AdventureWorks .dacpac jest publikowany jako pakiet Contoso.AdventureWorks wersji 1.1.0 do źródła danych NuGet. Element <DatabaseSqlCmdVariable> określa nazwę bazy danych na tym samym serwerze, na którym znajdują się obiekty w pakiecie, i będzie używany do wskazania tego odwołania w trzyczęściowym nazewnictwie. Zmienna SQLCMDAdventureDB służy do ustawiania nazwy bazy danych w czasie wdrażania i jest używana w projekcie podobnie do tego przykładowego zapytania:

SELECT * FROM [$(AdventureDB)].dbo.Customers;

Element <DacpacName> określa nazwę pliku odwołania do pakietu .dacpac, bez rozszerzenia pliku lub ścieżki. Element <DacpacName> jest opcjonalny i jest wymagany tylko wtedy, gdy nazwa pliku .dacpac różni się od nazwy pakietu.

Systemowe bazy danych

Systemowe bazy danych SQL (master, msdb) są publikowane w NuGet.org jako pakiety referencyjne bazy danych. Te pakiety zawierają schemat systemowych baz danych i mogą być używane jako odwołania do pakietów w projektach SQL. Pakiety systemowej bazy danych są wersjonowane w celu dopasowania ich do wersji programu SQL Server, z którą są skojarzone. Na przykład pakiet bazy danych systemu master dla programu SQL Server 2022 jest Microsoft.SqlServer.Dacpacs.Master w wersji 160.2.1 i można go dodać do projektu SQL jako odwołanie do pakietu:

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

Zmiany wersji mniejszej odzwierciedlają poprawki błędów i drobne zmiany schematu w SQL Server.

Dostępne pakiety systemowych baz danych to:

Spakuj pakiety NuGet dacpac

Pakiet referencyjny bazy danych to pakiet NuGet zawierający plik .dacpac. Pakiet NuGet można opublikować w kanale informacyjnym NuGet, takim jak Azure Artifacts, do użycia w projektach SQL. Tworzenie tego pakietu jest zgodne z tym samym procesem co tworzenie pakietu NuGet dla innych typów projektów. Aby uzyskać więcej informacji, zobacz Tworzenie pakietu przy użyciu interfejsu wiersza polecenia dotnet.

Zrzut ekranu przedstawiający podsumowanie dokumentacji pakietu dla procesu projektów SQL.

Aby spakować plik .sqlproj jako pakiet NuGet, użyj polecenia dotnet pack z wiersza polecenia. Domyślnie polecenie dotnet pack tworzy pakiet NuGet z pliku .sqlproj w folderze bin/Debug.

Metadane pakietu mogą być określane przez właściwości wewnątrz elementu <PropertyGroup> w pliku .sqlproj. Na przykład następujące właściwości określają identyfikator pakietu, wersję, opis, autorzy i firmę:

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

Plik .nupkg utworzony przez polecenie dotnet pack można opublikować w kanale informacyjnym NuGet do użycia w projektach SQL. Te obiekty bazy danych mogą być wyświetlane przez wszystkich użytkowników z dostępem do pakietu, dlatego należy wziąć pod uwagę wybór lokalizacji publicznego lub prywatnego źródła danych. Aby uzyskać więcej informacji, zobacz Hosting z prywatnymi repozytoriami pakietów.

W przypadku odwoływania się do pakietu, w którym PackageId różni się od nazwy pliku .dacpac, element <DacpacName> jest wymagany w odwołaniu do pakietu podczas korzystania z pakietu.

Referencje do pakietu rozszerzonych reguł analizy kodu

Odwołania do pakietów mogą również służyć do odwoływania się do większej liczby reguł analizy kodu, które zostały opracowane w ramach rozszerzalności analizy kodu . Odwołanie do pakietu reguł analizy kodu jest podobne do odwołania do pakietu obiektów bazy danych. W poniższym przykładzie przedstawiono odwołanie do pakietu z niestandardową regułą analizy kodu.

<ItemGroup>
  <PackageReference Include="Your.CustomCode.AnalysisRules" Version="1.2.3" />
</ItemGroup>

Przywoływany pakiet powinien być dostępny na kanale NuGet, takim jak NuGet.org, Azure Artifacts lub lokalne źródło. Po odwołaniu się do pakietu zawierającego reguły analizy kodu reguły są automatycznie uwzględniane w projekcie SQL i są oceniane, gdy właściwość projektu RunSqlCodeAnalysis jest ustawiona na wartość true. Reguły można wyłączyć lub ustawić tak, aby generowały błąd indywidualnie w właściwościach projektu.