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 Fabricben

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 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. A SQL Server fejlesztéshez használja az adatbázis-hivatkozásokat egy másik, ugyanazon a kiszolgálón lévő adatbázisra háromrészes elnevezéshez, vagy egy másik kiszolgálón lévő adatbázisra mutató hivatkozásra az adatbázisközi lekérdezésekhez. Az olyan adatbázisok esetében, amelyekben nagy számú objektum található különböző csoportokban, az adatbázis-hivatkozások segítségével kisebb, kezelhetőbb projektekre bonthatja az adatbázisokat. A kisebb projektméret javíthatja a teljesítményt, és csökkentheti a projekt létrehozásához szükséges időt az iteratív helyi 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

Projekthivatkozások és NuGet-csomaghivatkozások használata adatbázis-hivatkozásokhoz az új fejlesztésben. Az eredeti SQL-projektek nem támogatják a NuGet-csomagokra való hivatkozásokat.

SQL-projektfájl mintája és szintaxisa

A C#-projektekhez hasonlóan egy projektben a .sqlproj fájl bejegyzésein keresztül adatbázis-hivatkozásokat vehet fel. Az SQLCMD szintaxissal hivatkozhat az adatbázis nevére az SQL-projektobjektumokban. Ha egy adatbázis-hivatkozás egy másik adatbázisra mutat ugyanazon a kiszolgálón, adjon hozzá egy <DatabaseSqlCmdVariable> elemet a projekthivatkozáshoz. Ha egy adatbázis-hivatkozás egy másik kiszolgálón lévő másik adatbázisra mutat, a projekthivatkozásban is szerepeljen egy <ServerSqlCmdVariable> elem. Az ugyanarra az adatbázisra mutató adatbázis-hivatkozások nem tartalmaznak <ServerSqlCmdVariable> elemeket vagy <DatabaseSqlCmdVariable> elemeket.

Az adatbázis nevének megadásához használja a projektfájlban elnevezett SQLCMD-változókat, ha egy adott adatbázis-hivatkozásra szeretne hivatkozni az SQL-szkriptekben. 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];

A projektfájl tartalmaz egy, a $(Warehouse) SQLCMD változónak megfelelő adatbázis-hivatkozást, és tartalmazza a(z) <DatabaseSqlCmdVariable>Warehouse</DatabaseSqlCmdVariable> elemet.

Azonos adatbázison belüli háromrészes névmegadás

Ha egy SQL-projekt egy objektuma egy másik objektumra hivatkozik ugyanabban az adatbázisban, akkor sem szükséges háromrészes elnevezés, még akkor sem, ha az objektumokat adatbázis-hivatkozás tartalmazza. Az SQL-projektek azonban tartalmaznak egy automatikus SQLCMD-változót az adatbázisnévhez, amelyet sql-szkriptekben használhat a projekt adatbázisára való hivatkozáshoz a név megadása nélkül. Ha háromrészes elnevezésre van szükség, használja $(DatabaseName) az SQL-szkriptekben az adatbázisra való hivatkozáshoz. A következő SQL-szkript például egy táblára hivatkozik a projekt adatbázisában:

UPDATE [$(DatabaseName)].[SalesLT].[Customer]
SET [SalesPerson] = 'John Doe',
    [ModifiedDate] = GETDATE()
WHERE [CustomerId] = @CustomerId;

Adatbázis literális értékei

Bizonyos esetekben előfordulhat, hogy az SQL-objektumok adatbázis-hivatkozásából konstans (nem változó) értéket kell használnia az adatbázis nevére. A fájl konfigurálható .sqlproj úgy, hogy sqlCMD-változó helyett egy adatbázisnév literális értékét adja meg. A literális érték megadásához használt elem a következő <DatabaseLiteralValue>: . Ha ezt az elemet használja, ne használja az <DatabaseSqlCmdVariable> elemet. Az elemen <DatabaseLiteralValue> belül meg kell adnia az adatbázis nevének literális értékét. Egy SQL-szkriptben például egy adatbázis-referenciát <DatabaseVariableLiteralValue>WarehouseDB</DatabaseVariableLiteralValue> használnak az alábbiak szerint:

SELECT ProductId,
       StorageLocation,
       BinNumber
FROM [WarehouseDB].[Production].[ProductInventory];

Projekthivatkozások

Ebben a példában egy projekthivatkozást ad 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

További információ az SQL-projektek csomaghivatkozásairól: SQL-projektek csomaghivatkozásai.

Az alábbi példa a 2022-SQL Server rendszeradatbázisára mutató csomaghivatkozástmaster mutatja be:

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

Dacpac-artifakt hivatkozások

Ne használjon közvetlen hivatkozásokat egy .dacpac összetevőfájlra az SDK-stílusú projektek új fejlesztéséhez. Ehelyett használjon NuGet-csomaghivatkozásokat.

Az eredeti SQL-projektekben a .sqlproj fájlban egy <ArtifactReference> elem használatával adhatja meg a .dacpac fájlhivatkozásokat. 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 a Visual Studio Code 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]

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 projektet egy folyamatos integrációs (CI) folyamatban hoz létre, a buildügynök környezetét a helyi fejlesztési környezethez hasonlóan kell beállítania.

  • .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-projektben lévő projekthivatkozások megkövetelik, hogy a hivatkozott projekt jelen legyen az összeállítási ügynökön, ugyanazon a relatív fájlútvonalon, amely a projektfájlban meg van adva, és hogy az összeállítási ügynökön sikeresen felépíthető legyen.
  • Az eredeti, Visual Studióban létrehozott SQL-projektekben létrehozott rendszeradatbázis-hivatkozások megkövetelik, hogy a buildügynökre telepítve legyen a Visual Studio.
  • 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 (ugyanazon vagy más kiszolgálón), állítsa a projektfájlban megadott SQLCMD-változókat a célkörnyezet megfelelő értékeire. Állítsa be az SQLCMD-változók értékeit az üzembe helyezés során a(z) SqlPackage parancssori eszköz /v kapcsolójával. 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