Megosztás a következőn keresztül:


SQL-projektek csomaghivatkozásai

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Az SQL-projektek csomaghivatkozásai lehetővé teszik, hogy más projektekből vagy NuGet-csomagokból származó adatbázis-objektumokra hivatkozzon. A projekthez csomaghivatkozásokkal hozzáadott adatbázis-objektumok lehetnek ugyanahhoz az adatbázishoz, egy másik adatbázishoz ugyanazon a kiszolgálón, vagy egy másik kiszolgálón található adatbázishoz.

Note

A csomaghivatkozások az adatbázis-objektumok új fejlesztésben való hivatkozásához ajánlott módszer. A NuGet-csomagokra való hivatkozás csak SDK-stílusú SQL-projektekben támogatott.

Adatbázis-objektumcsomag-hivatkozások

A csomaghivatkozások egyike azoknak a módszereknek, amelyek adatbázis-objektumokat adnak hozzá egy SQL-projekthez adatbázis-referenciaként. A csomaghivatkozások tartalmazhatnak ugyanahhoz az adatbázishoz tartozó objektumokat, egy másik adatbázist ugyanazon a kiszolgálón, vagy egy másik kiszolgálón lévő adatbázist. A csomaghivatkozásokkal kisebb, kezelhetőbb projektekre bonthatja az adatbázisokat, ami segíthet csökkenteni a projekt létrehozásához szükséges időt az iteratív helyi fejlesztés során.

Képernyőkép egy sql-projektről, amely két csomagra és egy projektre hivatkozik az adatbázis-hivatkozásokhoz.

SQL-projektfájl mintája és szintaxisa

A csomaghivatkozások a C#-projektekhez hasonlóan a .sqlproj fájlban lévő bejegyzéseken keresztül kerülnek egy SQL-projektbe. Ha egy csomaghivatkozás egy másik adatbázisra mutat ugyanazon a kiszolgálón, egy <DatabaseSqlCmdVariable> elem szerepel a csomaghivatkozásban. Ha egy csomaghivatkozás egy másik kiszolgálón lévő adatbázisra mutat, a csomaghivatkozás egy <ServerSqlCmdVariable> elemet is tartalmaz. Az ugyanarra az adatbázisra mutató csomaghivatkozások nem tartalmaznak <ServerSqlCmdVariable> vagy <DatabaseSqlCmdVariable> elemeket.

Az alábbi példa a Contoso.AdventureWorks.SalesLT csomagra mutató csomaghivatkozást tartalmaz adatbázis-hivatkozásként arra az adatbázisra, amelyben a csomag objektumai az SQL-projekt adatbázismodelljének részévé válnak:

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

Az alábbi példa egy Contoso.AdventureWorks-csomagra mutató csomaghivatkozást tartalmaz egy másik adatbázis (AdventureWorks) adatbázis-hivatkozásaként ugyanazon a kiszolgálón, ahol a csomag objektumai az SQL-projekt adatbázismodelljének részévé válnak:

...
  <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>

Ebben a példában az AdventureWorks .dacpac fájl csomagként van közzétéve, Contoso.AdventureWorks verzió 1.1.0 formában egy NuGet-hírcsatornába. A <DatabaseSqlCmdVariable> elem annak az adatbázisnak a nevét adja meg ugyanazon a kiszolgálón, ahol a csomag objektumai találhatók, és a hivatkozás háromrészes elnevezésben való jelzésére szolgál. Az SQLCMD változóAdventureDB az adatbázis nevének beállítására szolgál az üzembe helyezéskor, és a projektben az alábbi példa-lekérdezéshez hasonlóan használja:

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

A <DacpacName> elem a csomaghivatkozás .dacpac fájljának nevét adja meg a fájlkiterjesztés vagy elérési út nélkül. A <DacpacName> elem nem kötelező, és csak akkor szükséges, ha a .dacpac fájl neve eltér a csomag nevétől.

Rendszeradatbázisok

Az SQL-rendszeradatbázisok (master, msdb) adatbázis-referenciacsomagokként vannak közzétéve NuGet.org. Ezek a csomagok tartalmazzák a rendszeradatbázisok sémáját, és sql-projektek csomaghivatkozásaiként használhatók. A rendszeradatbázis-csomagok verziószáma az SQL Server azon verziójához igazodik, amelyhez társítva vannak. Az SQL Server 2022 master rendszeradatbázis-csomagja például Microsoft.SqlServer.Dacpacs.Master verziójú 160.2.1, és csomaghivatkozásként hozzáadható egy SQL-projekthez:

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

A kisebb verzió változásai a hibajavításokat és a séma apróbb változásait tükrözik egy SQL Server-verzióban.

Az elérhető rendszeradatbázis-csomagok a következők:

dacpac NuGet-csomagok

Az adatbázis-referenciacsomagok olyan NuGet-csomagok, amelyek .dacpac fájlt tartalmaznak. A NuGet-csomag közzétehető egy NuGet-csatornán, például az Azure Artifactsben sql-projektekben való használatra. A csomag létrehozása ugyanazt a folyamatot követi, mint egy NuGet-csomag létrehozása más típusú projektekhez. További információért lásd: Csomag létrehozása a dotnet parancssorral.

Képernyőkép az SQL-projektek folyamatára vonatkozó csomaghivatkozás összegzéséről.

Ha egy .sqlproj fájlt NuGet-csomagként szeretne csomagolni, használja a parancssorból származó dotnet pack parancsot. Alapértelmezés szerint a dotnet pack parancs létrehoz egy NuGet-csomagot a .sqlproj fájlból a bin/Debug mappában.

A csomag metaadata a <PropertyGroup> fájl .sqlproj elemében lévő tulajdonságok által meghatározható. A következő tulajdonságok például a csomagazonosítót, a verziót, a leírást, a szerzők és a vállalatot adják meg:

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

A .nupkg parancs által létrehozott dotnet pack fájl közzétehető egy NuGet-hírcsatornában SQL-projektekben való használatra. Ezeket az adatbázis-objektumokat bárki megtekintheti, aki hozzáfér a csomaghoz, ezért érdemes megfontolni egy nyilvános vagy privát hírcsatorna helyének kiválasztását. További információ: Privát csomagcsatornákkal való üzemeltetés.

Ha olyan csomagra hivatkozik, amelyben a PackageId eltér a .dacpac fájl nevétől, a <DacpacName> elem szükséges a csomaghivatkozásban a csomag felhasználásakor.

Kiterjesztett kódelemzési szabályok csomaghivatkozásai

A csomaghivatkozások további kódelemzési szabályokra is hivatkozhatnak, amelyeket kódelemzés bővíthetőségénekrészeként fejlesztettek ki. A kódelemzési szabálycsomag csomaghivatkozása hasonló az adatbázis-objektumcsomag csomaghivatkozásához. Az alábbi példa egy egyéni kódelemzési szabálycsomagra mutató csomaghivatkozást mutat be:

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

A hivatkozott csomagnak elérhetőnek kell lennie egy NuGet-csatornán, például NuGet.org, Azure Artifacts vagy helyi forráson. Ha kódelemzési szabályokat tartalmazó csomagra hivatkozik, a rendszer automatikusan belefoglalja a szabályokat az SQL-projektbe, és kiértékeli, ha a projekttulajdonság RunSqlCodeAnalysis igaz értékre van állítva. A szabályok letilthatók vagy emelt szintűek lehetnek, hogy a projekttulajdonságokban egyenként hibát adjanak vissza.