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


Adatbázis-hivatkozások áttekintése

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabric előzetes verziójában

Az SQL-projektek adatbázis-hivatkozásai lehetővé teszik a projektben nem szereplő objektumok beépítését egy másik projekthez, .dacpac fájlhoz vagy közzétett NuGet-csomaghoz csatolással. A projekthez hozzáadott adatbázis-objektumok részei lehetnek ugyanannak az adatbázisnak, egy másik adatbázisnak ugyanazon a kiszolgálón, vagy egy másik kiszolgálón található adatbázisnak. Sql Server-fejlesztés esetén az adatbázis-hivatkozások segítségével egy másik, ugyanazon a kiszolgálón lévő adatbázisra hivatkozhat háromrészes elnevezés céljából, vagy egy másik kiszolgálón lévő másik adatbázisra hivatkozhat adatbázisközi lekérdezésekhez. A különböző csoportokban nagy számú objektumot tartalmazó adatbázisok esetében az adatbázis-hivatkozások segítségével az adatbázisokat kisebb, kezelhetőbb projektekre bonthatja. A kisebb projektméret segíthet a teljesítmény javításában, és csökkentheti a projekt létrehozásához szükséges időt a helyi iteratív fejlesztés során.

Képernyőkép egy olyan SQL-projektről, amely egy dacpacra, egy nuget-csomagra és egy adatbázis-hivatkozásokat tartalmazó projektre hivatkozik.

Note

A projekthivatkozások és a NuGet-csomaghivatkozások az új fejlesztésben használt adatbázis-hivatkozások ajánlott módszerei. A NuGet-csomagokra való hivatkozásokat az eredeti SQL-projektek nem támogatják.

SQL-projektfájl mintája és szintaxisa

Az adatbázis-hivatkozások egy projektbe a .sqlproj fájl bejegyzésein keresztül kerülnek bele, a C#-projektekhez hasonlóan. Ha egy adatbázis-hivatkozás egy másik adatbázisra hivatkozik ugyanazon a kiszolgálón, a projekthivatkozás tartalmaz egy <DatabaseSqlCmdVariable> elemet. Ha egy adatbázis-hivatkozás egy másik kiszolgálón lévő adatbázisra hivatkozik, <ServerSqlCmdVariable> a projekthivatkozás egy elemet is tartalmaz. Az ugyanarra az adatbázisra mutató adatbázis-hivatkozások nem tartalmaznak <ServerSqlCmdVariable> elemeket vagy <DatabaseSqlCmdVariable> elemeket.

Ha az SQL-szkriptekben az adatbázis-hivatkozásra hivatkozik, a projektfájlban elnevezett SQLCMD-változókkal adja meg az adatbázis nevét. A következő SQL-szkript például az adatbázisban lévő Warehouse táblára hivatkozik:

SELECT ProductId,
       StorageLocation,
       BinNumber
FROM [$(Warehouse)].[Production].[ProductInventory];

Az SQLCMD változónak $(Warehouse) megfelelő adatbázis-hivatkozás szerepel a projektfájlban, és tartalmazza a <DatabaseSqlCmdVariable>Warehouse</DatabaseSqlCmdVariable> elemet.

Projekthivatkozások

Ebben a példában egy projekthivatkozást adunk hozzá egy olyan SQL-projekthez AdventureWorksSalesLT.sqlproj , amely ugyanahhoz az adatbázishoz tartozik.

  <ItemGroup>
    <ProjectReference Include="..\AdventureWorks\AdventureWorksSalesLT.sqlproj">
      <Name>AdventureWorksSalesLT</Name>
      <Project>{d703fc7a-bc47-4aef-9dc5-cf01094ddb37}</Project>
      <Private>True</Private>
      <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
    </ProjectReference>
  </ItemGroup>

Dacpac-csomaghivatkozások

Az SQL-projektek csomagreferenciáiról további információt az SQL-projektek csomaghivatkozásait ismertető cikkben talál.

Az SQL 2022 rendszeradatbázisára mutató csomaghivatkozásmaster az alábbi példában látható:

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

Dacpac-artifakt hivatkozások

Az összetevőfájlokra .dacpac mutató közvetlen hivatkozások nem ajánlottak az SDK-stílusú projektek új fejlesztéséhez. Ehelyett használjon NuGet-csomaghivatkozásokat.

Az eredeti SQL-projektekben a fájlhivatkozások a .dacpac fájlban, amely tartalmaz egy .sqlproj elemet, vannak megadva. Az alábbi példa egy .dacpac összetevőre mutató hivatkozást mutat be egy .dacpac másik projektben lévő fájlra ugyanazon a kiszolgálón:

  <ItemGroup>
    <ArtifactReference Include="..\AdventureWorks\Warehouse\bin\Release\Warehouse.dacpac">
      <HintPath>..\AdventureWorks\Warehouse\bin\Release\Warehouse.dacpac</HintPath>
      <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
      <DatabaseSqlCmdVariable>Warehouse</DatabaseSqlCmdVariable>
    </ArtifactReference>
  </ItemGroup>

Projekthivatkozások hozzáadása és használata

Projekthivatkozás hozzáadása

Ha projekthivatkozást szeretne hozzáadni egy SQL-projekthez a Visual Studióban, kattintson a jobb gombbal a Projekt alatti Hivatkozások csomópontra a Megoldáskezelőben , és válassza az Adatbázis-referencia hozzáadása lehetőséget.

Képernyőkép a Visual Studio adatbázis-hivatkozásokat tartalmazó párbeszédpaneléről.

Az Adatbázis-referenciák hozzáadása párbeszédpanel a következőre mutató hivatkozás hozzáadásának lehetőségeit mutatja be:

  • SQL-projekt ugyanabból a megoldásból
  • rendszeradatbázis (a Visual Studióba automatikusan belefoglalt fájlokból .dacpac )
  • bármely adatréteg-alkalmazásfájl a helyi fájlrendszerben (.dacpac)

A párbeszédpanel egy legördülő listát is tartalmaz, amely a következő referenciahelyek közül választható ki:

  • ugyanaz az adatbázis
  • eltérő adatbázis, ugyanaz a kiszolgáló
  • különböző adatbázis, eltérő kiszolgáló

Ha projekthivatkozást szeretne hozzáadni egy SQL-projekthez, adjon hozzá egy <ItemGroup> elemet a .sqlproj fájlhoz, amely minden adatbázis-hivatkozáshoz megfelelő hivatkozási elemet biztosít. A következő projekthivatkozás például hozzáadódik egy SQL-projekthez, hogy egy WorldWideImporters másik kiszolgálón lévő másik adatbázisban lévő projektre hivatkozzon:

  <ItemGroup>
    <ProjectReference Include="..\Contoso\WorldWideImporters.sqlproj">
      <Name>WorldWideImporters</Name>
      <Project>{d703fc7a-bc47-4aef-9dc5-cf01094ddb37}</Project>
      <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
      <ServerSqlCmdVariable>WWIServer</ServerSqlCmdVariable>
      <DatabaseSqlCmdVariable>WorldWideImporters</DatabaseSqlCmdVariable>
    </ProjectReference>
  </ItemGroup>

A projekthivatkozás az SQL-projekt mintanézet-definíciójában használatos:

CREATE VIEW dbo.WorldWide_Products
AS
SELECT ProductID, ProductName, SupplierID
FROM [$(WWIServer)].[$(WorldWideImporters)].[Purchasing].[Suppliers]

Ha adatbázis-hivatkozást szeretne hozzáadni egy SQL-projekthez az SQL Database Projects bővítményben, kattintson a jobb gombbal az Adatbázis-hivatkozások csomópontra a projekt alatt az Adatbázisprojektek nézetben, és válassza az Adatbázis-referencia hozzáadása lehetőséget.

Képernyőkép az Azure Data Studio referenciák hozzáadásának párbeszédpaneléről.

A rendelkezésre álló referenciatípusok a következők:

  • rendszeradatbázis
  • adatrétegű alkalmazás (.dacpac)
  • közzétett adatréteg-alkalmazás (.nupkg)
  • projekt

A bővítmény a következő referenciahelyek közül való kiválasztást is kéri:

  • ugyanaz az adatbázis
  • eltérő adatbázis, ugyanaz a kiszolgáló
  • különböző adatbázis, eltérő kiszolgáló

Ha projekthivatkozást szeretne hozzáadni egy SQL-projekthez, adjon hozzá egy <ItemGroup> elemet a .sqlproj fájlhoz, amely minden adatbázis-hivatkozáshoz megfelelő hivatkozási elemet biztosít. A következő projekthivatkozás például hozzáadódik egy SQL-projekthez, hogy egy WorldWideImporters másik kiszolgálón lévő másik adatbázisban lévő projektre hivatkozzon:

  <ItemGroup>
    <ProjectReference Include="..\Contoso\WorldWideImporters.sqlproj">
      <Name>WorldWideImporters</Name>
      <Project>{d703fc7a-bc47-4aef-9dc5-cf01094ddb37}</Project>
      <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
      <ServerSqlCmdVariable>WWIServer</ServerSqlCmdVariable>
      <DatabaseSqlCmdVariable>WorldWideImporters</DatabaseSqlCmdVariable>
    </ProjectReference>
  </ItemGroup>

A projekthivatkozás az SQL-projekt mintanézet-definíciójában használatos:

CREATE VIEW dbo.WorldWide_Products
AS
SELECT ProductID, ProductName, SupplierID
FROM [$(WWIServer)].[$(WorldWideImporters)].[Purchasing].[Suppliers]

Építés projekthivatkozások alapján

Ha adatbázis-hivatkozásokat tartalmazó SQL-projektet hoz létre, további konfigurációra lehet szükség annak biztosításához, hogy a hivatkozott objektumok elérhetők legyenek a buildelési folyamat során. Ha például egy projekt folyamatos integrációs (CI) folyamatba épül, a buildügynök-környezetet a helyi fejlesztési környezethez hasonlóan kell beállítani.

  • .dacpac Az SQL-projekt hivatkozásai megkövetelik, hogy a .dacpac buildügynök a projektfájlban megadott relatív fájlelérési útvonalon legyen jelen.
  • Az SQL projekt projekthivatkozásai megkövetelik, hogy a hivatkozott projekt a buildügynökön a projektfájlban meghatározott relatív fájlelőttéren legyen elérhető, és sikeresen lefordítható legyen a buildügynökön.
  • Az eredeti SQL-projektekben, amelyek a Visual Studioban jöttek létre, a rendszeradatbázis-hivatkozásokhoz szükséges, hogy a buildügynökön a Visual Studio legyen telepítve.
  • Az SQL-projekt NuGet-csomaghivatkozásaihoz közzé kell tenni a csomagot egy NuGet-hírcsatornában, amely a buildügynök csomagforrásaként is be van állítva.

Közzététel projekthivatkozásokkal

.dacpac Az adatbázis-hivatkozásokat tartalmazó projektből készült adatok közzététele nem igényel további lépéseket. A .dacpac fájl tartalmazza a hivatkozott objektumokat és a projektfájlban megadott SQLCMD-változókat.

Az ugyanabban az adatbázisban lévő objektumokra mutató adatbázis-hivatkozások esetében a hivatkozott projekt objektumai szerepelnek a .dacpac fájlban, de alapértelmezés szerint nem szerepelnek az üzembe helyezésben. Az objektumok üzembe helyezésbe való bevonásához használja az /p:IncludeCompositeObjects=true opciót az SqlPackage parancssori eszközében. A következő parancs például üzembe helyezi a AdventureWorks projektet azzal a /p:IncludeCompositeObjects=true beállítással, hogy az adatbázis-hivatkozásokból származó objektumokat belefoglalja az AdventureWorksbe:

sqlpackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /p:IncludeCompositeObjects=true

Ha adatbázis-hivatkozásokat .dacpac tartalmazó fájlt helyez üzembe különböző adatbázisra (ugyanazon vagy más kiszolgálón), a projektfájlban megadott SQLCMD-változókat a célkörnyezet megfelelő értékeire kell állítani. Az SQLCMD változó értékeinek beállítása az üzembe helyezés során az /v parancssori eszközben található beállítással történik. A következő parancs például a WorldWideImporters változót WorldWideImporters értékre, a WWIServer változót pedig localhost értékre állítja.

sqlpackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /v:WorldWideImporters=WorldWideImporters /v:WWIServer=localhost