Sdílet prostřednictvím


Přehled odkazů na databáze

Platí pro:SQL ServerAzure SQL DatabaseAzure SQL spravovaná instanceAzure SQL databáze v Microsoft Fabric Preview

Odkazy na databáze v projektech SQL umožňují začlenit objekty, které nejsou součástí projektu, propojením s jiným projektem, .dacpac souborem nebo publikovaným balíčkem NuGet. Databázové objekty přidané do projektu můžou být součástí stejné databáze, jiné databáze na stejném serveru nebo jiné databáze na jiném serveru. Pro vývoj SQL Serveru lze odkazy na databáze použít k propojení s jinou databází na stejném serveru pro třídílné pojmenování nebo k propojení s jinou databází na jiném serveru pro dotazy napříč databázemi. U databází s velkým počtem objektů v různých skupinách lze odkazy na databáze použít k rozdělení databáze na menší a lépe spravovatelné projekty. Menší velikost projektu může pomoct zlepšit výkon a 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 dacpac, balíček NuGet a projekt s odkazy na databáze

Note

Odkazy na projekty a odkazy na balíčky NuGet jsou doporučené metody pro odkazy na databáze v novém vývoji. Původní projekty SQL nepodporují odkazování na balíčky NuGet.

Ukázka a syntaxe souboru projektu SQL

Odkazy na databáze jsou zahrnuty v projektu prostřednictvím položek v .sqlproj souboru, podobně jako projekty jazyka C#. Pokud je odkaz na databázi v jiné databázi na stejném serveru, je prvek <DatabaseSqlCmdVariable> zahrnut do odkazu na projekt. Pokud odkaz na databázi směřuje k jiné databázi na jiném serveru, je prvek <ServerSqlCmdVariable> součástí odkazu na projekt. Databázové odkazy na stejnou databázi nezahrnují <ServerSqlCmdVariable> ani <DatabaseSqlCmdVariable> prvky.

Zahrnutím konkrétního odkazu na databázi ve skriptech SQL se k zadání názvu databáze používají proměnné SQLCMD pojmenované v souboru projektu. Například následující skript SQL odkazuje na tabulku v Warehouse databázi:

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

Odkaz na databázi odpovídající $(Warehouse) proměnné SQLCMD je součástí souboru projektu a obsahuje <DatabaseSqlCmdVariable>Warehouse</DatabaseSqlCmdVariable>.

Odkazy na projekt

V tomto příkladu se do projektu SQL, který je součástí stejné databáze, přidá odkaz na projekt AdventureWorksSalesLT.sqlproj SQL.

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

Odkazy na balíčky Dacpac

Další informace o odkazech na balíčky v projektech SQL najdete v článku s odkazy na balíčky projektů SQL .

Odkaz na balíček na master systémovou databázi pro SQL 2022 je uveden v následujícím příkladu:

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

Odkazy na artefakty Dacpac

Odkazy na soubor artefaktů .dacpac se přímo nedoporučují pro nový vývoj v projektech ve stylu sady SDK. Místo toho použijte odkazy na balíčky NuGet.

V původních projektech SQL jsou odkazy na soubory .dacpac zadány pomocí položky .sqlproj v souboru <ArtifactReference>. Následující příklad ukazuje .dacpac odkaz na soubor artefaktu v jiném projektu na stejném serveru:

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

Přidání a použití odkazů na projekt

Přidání odkazu na projekt

Pokud chcete přidat odkaz na projekt SQL v sadě Visual Studio, klikněte pravým tlačítkem myši na uzel Odkazy pod projektem v Průzkumníku řešení a vyberte Přidat odkaz na databázi.

Snímek obrazovky dialogového okna aplikace Visual Studio pro odkazy na databáze

Dialogové okno Přidat odkaz na databázi obsahuje možnosti pro přidání odkazu na:

  • projekt SQL ze stejného řešení
  • systémová databáze (ze .dacpac souborů automaticky zahrnutých v sadě Visual Studio)
  • jakýkoli soubor aplikace datové vrstvy .dacpac na místním systému souborů

V dialogovém okně je také rozevírací seznam, který můžete vybrat z následujících referenčních umístění:

  • stejná databáze
  • různé databáze, stejný server
  • jiná databáze, jiný server

Pokud chcete přidat odkaz na projekt SQL, přidejte <ItemGroup> do .sqlproj souboru položku s příslušnou referenční položkou pro každý odkaz na databázi. Do projektu SQL se například přidá následující odkaz na projekt SQL, který bude odkazovat WorldWideImporters na projekt v jiné databázi na jiném serveru:

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

Odkaz na projekt se používá v ukázkové definici zobrazení v projektu SQL:

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

Chcete-li přidat odkaz na databázi do projektu SQL v rozšíření PROJEKTY služby SQL Database, klikněte pravým tlačítkem myši na uzel Odkazy na databáze v projektu v zobrazení Databázové projekty a vyberte Přidat odkaz na databázi.

Snímek obrazovky s dialogovým oknem Pro přidání odkazu v nástroji Azure Data Studio

Dostupné odkazové typy jsou:

  • systémová databáze
  • aplikace datové vrstvy (.dacpac)
  • publikovaná aplikace pro vrstvu dat (.nupkg)
  • projekt

Rozšíření také zobrazí výzvu k výběru z následujících referenčních umístění:

  • stejná databáze
  • různé databáze, stejný server
  • jiná databáze, jiný server

Pokud chcete přidat odkaz na projekt SQL, přidejte <ItemGroup> do .sqlproj souboru položku s příslušnou referenční položkou pro každý odkaz na databázi. Do projektu SQL se například přidá následující odkaz na projekt SQL, který bude odkazovat WorldWideImporters na projekt v jiné databázi na jiném serveru:

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

Odkaz na projekt se používá v ukázkové definici zobrazení v projektu SQL:

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

Sestavování pomocí odkazů na projekty

Sestavení projektu SQL s odkazy na databáze může vyžadovat další konfiguraci, aby byly během procesu sestavení k dispozici odkazované objekty. Pokud například probíhá projekt v rámci kanálu kontinuální integrace (CI), musí být prostředí sestavovacího agenta nastaveno podobně jako v lokálním vývojovém prostředí.

  • .dacpac odkazy v projektu SQL vyžadují, aby .dacpac byl přítomen na agentu sestavení na stejné relativní cestě k souboru, jako je uvedeno v souboru projektu.
  • Odkazy projektů v SQL projektu vyžadují, aby příslušný projekt byl na agentu sestavení ve stejné relativní cestě k souboru, jak je uvedeno v souboru projektu, a aby byl schopen být úspěšně sestaven na agentu sestavení.
  • Odkazy na systémové databáze vytvořené v původních SQL projektech ve Visual Studio vyžadují, aby měl agent sestavení nainstalovaný Visual Studio.
  • Odkazy na balíčky NuGet v projektu SQL vyžadují publikování balíčku do informačního kanálu NuGet, který je také nastaven jako zdroj balíčku pro agenta sestavení.

Publikování s odkazy na projekt

Publikování vytvořeného .dacpac projektu s odkazy na databáze nevyžaduje žádné další kroky. Soubor .dacpac obsahuje odkazované objekty a proměnné SQLCMD zadané v souboru projektu.

U databázových odkazů na objekty ve stejné databázi jsou objekty z odkazovaného projektu zahrnuty do .dacpac souboru, ale ve výchozím nastavení nejsou zahrnuty do nasazení. Pokud chcete zahrnout objekty do nasazení, použijte /p:IncludeCompositeObjects=true možnost v nástroji příkazového řádku SqlPackage. Například následující příkaz nasadí AdventureWorks projekt s /p:IncludeCompositeObjects=true možností zahrnout objekty z databázových odkazů na AdventureWorks:

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

Když nasadíte .dacpac soubor s odkazy na databázi na jinou databázi (na stejném nebo jiném serveru), musí být proměnné SQLCMD zadané v souboru projektu nastaveny na správné hodnoty pro cílové prostředí. Nastavení hodnot proměnných SQLCMD během nasazení se provádí pomocí /v možnosti v nástroji příkazového řádku SqlPackage . Například následující příkaz nastaví proměnnou WorldWideImporters na WorldWideImporters a proměnnou WWIServer na localhost:

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