Sdílet prostřednictvím


Odkazy na balíčky projektů SQL

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL Database v Microsoft Fabric

Odkazy na balíčky v projektech SQL umožňují odkazovat na databázové objekty z jiných projektů nebo balíčků NuGet. Databázové objekty přidané do projektu prostřednictvím odkazů na balíčky mohou být součástí stejné databáze, jiné databáze na stejném serveru nebo jiné databáze na jiném serveru.

Poznámka

Odkazy na balíčky jsou doporučenou metodou pro odkazování na databázové objekty v novém vývoji. Odkazování na balíčky NuGet je podporováno pouze v projektech SQL ve stylu sady SDK.

Odkazy na balíčky databázových objektů

Odkazy na balíčky jsou jednou z několika metod přidání databázových objektů do projektu SQL jako referenční databáze. Odkazy na balíčky mohou obsahovat objekty pro stejnou databázi, jinou databázi na stejném serveru nebo jinou databázi na jiném serveru. Odkazy na balíčky se dají použít k rozdělení databáze do menších, lépe spravovatelných projektů, což může pomoct zkrátit dobu potřebnou k sestavení projektu během iterativního místního vývoje.

snímek obrazovky s příkladem projektu SQL odkazujícího na dva balíčky a jeden projekt pro odkazy na databáze

Ukázka a syntaxe souboru projektu SQL

Odkazy na balíčky se přidají do projektu SQL prostřednictvím položek v souboru .sqlproj, podobně jako projekty jazyka C#. Pokud je odkaz na balíček na jiné databázi na stejném serveru, <DatabaseSqlCmdVariable> prvek je součástí odkazu na balíček. Pokud je odkaz na balíček na jiné databázi na jiném serveru, <ServerSqlCmdVariable> prvek je také součástí odkazu na balíček. Odkazy na balíčky do stejné databáze nezahrnují prvky <ServerSqlCmdVariable> ani <DatabaseSqlCmdVariable>.

Následující příklad obsahuje odkaz na balíček Contoso.AdventureWorks.SalesLT jako odkaz na databázi pro stejnou databázi, ve které se objekty v balíčku stanou součástí databázového modelu v projektu SQL:

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

Následující příklad obsahuje odkaz na balíček Contoso.AdventureWorks jako odkaz na databázi pro jinou databázi (AdventureWorks) na stejném serveru, kde se objekty v balíčku stanou součástí databázového modelu v projektu 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>

V tomto příkladu je soubor AdventureWorks .dacpac publikován jako balíček Contoso.AdventureWorks verze 1.1.0 do úložiště NuGet. Prvek <DatabaseSqlCmdVariable> určuje název databáze na stejném serveru, na kterém jsou umístěny objekty v balíčku, a slouží k označení tohoto odkazu v třídílné pojmenování. Proměnná SQLCMDAdventureDB slouží k nastavení názvu databáze v době nasazení a používá se v projektu podobně jako v tomto ukázkovém dotazu:

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

Element <DacpacName> určuje název souboru .dacpac pro odkaz na balíček bez přípony souboru nebo cesty. Element <DacpacName> je volitelný a vyžaduje se pouze v případě, že se název souboru .dacpac liší od názvu balíčku.

Systémové databáze

Systémové databáze SQL (master, msdb) jsou publikovány na NuGet.org jako referenční balíčky databáze. Tyto balíčky obsahují schéma pro systémové databáze a lze je použít jako odkazy na balíčky v projektech SQL. Systémové databázové balíčky mají verze, které se shodují s verzí SQL Serveru, ke které jsou přidružené. Například balíček systémové databáze master pro SQL Server 2022 je Microsoft.SqlServer.Dacpacs.Master verze 160.2.1 a lze ho přidat do projektu SQL jako odkaz na balíček:

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

Změny menší verze odrážejí opravy chyb a dílčí změny schématu během verze SQL Serveru.

Dostupné systémové databázové balíčky jsou:

Balíčky Dacpac NuGet

Referenční balíček databáze je balíček NuGet, který obsahuje soubor .dacpac. Balíček NuGet lze publikovat do informačního kanálu NuGet, jako je Azure Artifacts, pro použití v projektech SQL. Vytvoření tohoto balíčku se řídí stejným procesem jako vytvoření balíčku NuGet pro jiné typy projektů. Další informace najdete v tématu Vytvoření balíčku pomocí rozhraní příkazového řádku dotnet.

snímek obrazovky se souhrnem odkazu na balíček pro proces projektů SQL

Pokud chcete zabalit soubor .sqlproj jako balíček NuGet, použijte příkaz dotnet pack z příkazového řádku. Ve výchozím nastavení příkaz dotnet pack vytvoří balíček NuGet ze souboru .sqlproj ve složce bin/Debug.

Metadata balíčku mohou být určena vlastnostmi uvnitř <PropertyGroup> elementu v souboru .sqlproj. Například následující vlastnosti určují ID balíčku, verzi, popis, autory a společnost:

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

Soubor .nupkg vytvořený příkazem dotnet pack lze publikovat do informačního kanálu NuGet pro použití v projektech SQL. Tyto databázové objekty může zobrazit každý, kdo má přístup k databázovému balíčku, takže je třeba zvážit výběr veřejného nebo soukromého umístění kanálu pro doručování dat. Další informace najdete v tématu Hostování s privátními informačními kanály balíčků.

Při odkazování na balíček, kde se PackageId liší od názvu souboru .dacpac, je při využívání balíčku vyžadován element <DacpacName> v odkazu na balíček.

Odkazy na balíčky rozšířených pravidel analýzy kódu

Odkazy na balíčky lze také použít k odkazování na více pravidel analýzy kódu, která byla vyvinuta v rámci rozšiřitelnosti analýzy kódu. Odkaz na balíček pravidla analýzy kódu je podobný odkazu na balíček balíčku databázového objektu. Následující příklad ukazuje odkaz na balíček vlastních pravidel pro analýzu kódu:

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

Odkazovaný balíček by měl být k dispozici v informačním kanálu NuGet , jako jsou NuGet.org, Azure Artifacts nebo místní zdroj. Pokud se odkazuje na balíček obsahující pravidla analýzy kódu, pravidla se automaticky zahrnou do projektu SQL a vyhodnotí se při nastavení vlastnosti projektu RunSqlCodeAnalysis na hodnotu true. Pravidla mohou být ve vlastnostech projektu jednotlivě zakázána nebo nastavena na zobrazování chyby.