Paketreferenser för SQL-projekt
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Med paketreferenser i SQL-projekt kan du referera till databasobjekt från andra projekt eller NuGet-paket. Databasobjekten som läggs till i ett projekt via paketreferenser kan ingå i samma databas, en annan databas på samma server eller en annan databas på en annan server.
Obs
Paketreferenser är den rekommenderade metoden för att referera till databasobjekt i ny utveckling. Att referera till NuGet-paket stöds endast i SQL-projekt i SDK-format.
Databasobjektpaketreferenser
Paketreferenser är en av flera metoder för att lägga till databasobjekt i ett SQL-projekt som en databasreferens. Paketreferenser kan innehålla objekt för samma databas, en annan databas på samma server eller en annan databas på en annan server. Paketreferenser kan användas för att dela upp en databas i mindre, mer hanterbara projekt, vilket kan bidra till att minska den tid som krävs för att skapa ett projekt under iterativ lokal utveckling.
EXEMPEL och syntax för SQL-projektfil
Paketreferenser läggs till i ett SQL-projekt via poster i .sqlproj
-filen, på samma sätt som C#-projekt. När en paketreferens är till en annan databas på samma server ingår ett <DatabaseSqlCmdVariable>
-element i paketreferensen. När en paketreferens är till en annan databas på en annan server ingår även ett <ServerSqlCmdVariable>
-element i paketreferensen. Paketreferenser till samma databas innehåller inte <ServerSqlCmdVariable>
eller <DatabaseSqlCmdVariable>
element.
I följande exempel ingår en paketreferens till Contoso.AdventureWorks.SalesLT
-paketet som en databasreferens för samma databas där objekten i paketet blir en del av databasmodellen i SQL-projektet:
...
<ItemGroup>
<PackageReference Include="Contoso.AdventureWorks.SalesLT" Version="1.1.0" />
</ItemGroup>
</Project>
I följande exempel ingår en paketreferens till Contoso.AdventureWorks
-paketet som databasreferens för en annan databas (AdventureWorks) på samma server där objekten i paketet blir en del av databasmodellen i SQL-projektet:
...
<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>
I det här exemplet publiceras filen AdventureWorks .dacpac
som ett paket Contoso.AdventureWorks
version 1.1.0
till en NuGet-feed. Elementet <DatabaseSqlCmdVariable>
anger namnet på databasen på samma server där objekten i paketet finns och används för att ange den här referensen i namngivning i tre delar. Variabeln SQLCMDAdventureDB
används för att ange databasnamnet vid distributionstillfället och används i projektet på samma sätt som i den här exempelfrågan:
SELECT * FROM [$(AdventureDB)].dbo.Customers;
Elementet <DacpacName>
anger namnet på den .dacpac
filen för paketreferensen, utan filnamnstillägget eller sökvägen. Elementet <DacpacName>
är valfritt och krävs bara när namnet på .dacpac
-filen skiljer sig från namnet på paketet.
Systemdatabaser
SQL-systemdatabaserna (master
, msdb
) publiceras på NuGet.org som databasreferenspaket. Dessa paket innehåller schemat för systemdatabaserna och kan användas som paketreferenser i SQL-projekt. Systemdatabaspaketen har versioner så de stämmer överens med den version av SQL Server som de är associerade med. Till exempel är master
-systemdatabaspaketet för SQL Server 2022 Microsoft.SqlServer.Dacpacs.Master
version 160.2.1
och kan läggas till i ett SQL-projekt som en paketreferens:
...
<ItemGroup>
<PackageReference Include="Microsoft.SqlServer.Dacpacs.Master" Version="160.2.1" />
</ItemGroup>
</Project>
Delversionsändringar återspeglar felkorrigeringar och mindre ändringar i schemat i en SQL Server-version.
De tillgängliga systemdatabaspaketen är:
-
SQL Server
master
systemdatabasen -
SQL Server
msdb
systemdatabas -
Azure SQL Database
master
systemdatabas -
Azure Synapse Analytics
master
systemdatabas -
Serverlösa pooler för Azure Synapse Analytics
master
systemdatabas
Paket dacpac NuGet-paket
Ett databasreferenspaket är ett NuGet-paket som innehåller en .dacpac
fil. NuGet-paketet kan publiceras till en NuGet-feed, till exempel Azure Artifacts, för användning i SQL-projekt. När du skapar det här paketet följer samma process som när du skapar ett NuGet-paket för andra typer av projekt. Mer information finns i Skapa ett paket med dotnet CLI-.
Om du vill paketera en .sqlproj
fil som ett NuGet-paket använder du kommandot dotnet pack
från kommandoraden. Som standard skapar kommandot dotnet pack
ett NuGet-paket från filen .sqlproj
i mappen bin/Debug
.
Paketmetadata kan anges av egenskaper i elementet <PropertyGroup>
i .sqlproj
-filen. Följande egenskaper anger till exempel paket-ID, version, beskrivning, författare och företag:
<PackageId>Contoso.AdventureWorks.SalesLT</PackageId>
<Version>1.0.0</Version>
<Description>AdventureWorks database SalesLT objects</Description>
<Authors>DevTeam</Authors>
<Company>Contoso Outdoors</Company>
Den .nupkg
fil som skapats av kommandot dotnet pack
kan publiceras till en NuGet-feed för användning i SQL-projekt. Dessa databasobjekt kan visas av alla som har åtkomst till paketet, så du bör överväga att välja en offentlig eller privat feedplats. Mer information finns i Hosting med privata paketfeeds.
När du refererar till ett paket där PackageId
skiljer sig från namnet på filen .dacpac
krävs elementet <DacpacName>
i paketreferensen för att använda paketet.
Paketreferenser för utökade kodanalysregler
Paketreferenser kan också användas för att referera till fler kodanalysregler som har utvecklats som en del av utökningsbarhet för kodanalys. Paketreferensen för ett kodanalysregelpaket liknar paketreferensen för ett databasobjektpaket. I följande exempel visas en paketreferens till ett anpassat kodanalysregelpaket:
<ItemGroup>
<PackageReference Include="Your.CustomCode.AnalysisRules" Version="1.2.3" />
</ItemGroup>
Paketet som refereras ska vara tillgängligt på en NuGet-feed, till exempel NuGet.org, Azure Artifacts eller en lokal källa. När ett paket som innehåller kodanalysregler refereras inkluderas reglerna automatiskt i SQL-projektet och utvärderas när projektegenskapen RunSqlCodeAnalysis
anges till true. Reglerna kan inaktiveras eller eskaleras för att returnera ett fel var för sig i projektets egenskaper.