Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Azure SQL spravovaná instance
Azure 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.
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.
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
.dacpacsouborů automaticky zahrnutých v sadě Visual Studio) - jakýkoli soubor aplikace datové vrstvy
.dacpacna 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.
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í.
-
.dacpacodkazy v projektu SQL vyžadují, aby.dacpacbyl 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