Odwołania do pakietów projektów SQL
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL 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.
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:
-
systemowa baza danych
master
programu SQL Server -
baza danych systemu SQL Server
msdb
-
Azure SQL Database systemowa baza danych
master
-
baza danych systemu Azure Synapse Analytics
master
-
bezserwerowych pul usługi Azure Synapse Analytics
master
systemowej bazy danych
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.
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.