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:Azure SQL Database
Funkce elastického dotazu (ve verzi Preview) umožňuje spustit dotaz Transact-SQL (T-SQL), který zahrnuje více databází ve službě Azure SQL Database. Umožňuje provádět dotazy napříč databázemi pro přístup ke vzdáleným tabulkám a připojovat nástroje Microsoftu a jiných společností než Microsoft (Excel, Power BI, Tableau atd.) k dotazování napříč datovými vrstvami s více databázemi. Pomocí této funkce můžete škálovat dotazy pro velké datové vrstvy a vizualizovat výsledky v BI reportech.
Proč používat elastické dotazy
Azure SQL Database
Dotazování napříč databázemi ve službě Azure SQL Database je zcela v jazyce T-SQL. To umožňuje dotazování vzdálených databází jen pro čtení a poskytuje možnost pro aktuální zákazníky SQL Serveru migrovat aplikace pomocí třídílných názvů nebo propojených serverů do služby SQL Database.
K dispozici na všech úrovních služby
Elastický dotaz se podporuje ve všech úrovních služby Azure SQL Database. Podívejte se na část Omezení verze Preview níže týkající se omezení výkonu pro nižší úrovně služby.
Nasdílení parametrů do vzdálených databází
Elastické dotazy teď můžou odesílat parametry SQL do vzdálených databází pro spuštění.
Spuštění uložené procedury
Pomocí sp_execute _remote spusťte volání vzdálené uložené procedury nebo vzdálené funkce.
Flexibilita
Externí tabulky s elastickým dotazem můžou odkazovat na vzdálené tabulky s jiným názvem schématu nebo tabulky.
Scénáře elastických dotazů
Cílem je usnadnit dotazování scénářů, kdy více databází přispívá řádky do jednoho celkového výsledku. Dotaz může buď vytvořit uživatel nebo aplikace přímo, nebo nepřímo prostřednictvím nástrojů, které jsou připojené k databázi. To je zvlášť užitečné při vytváření sestav, používání komerčních nástrojů BI nebo nástrojů pro integraci dat nebo jakékoli aplikace, která se nedá změnit. S elastickým dotazem můžete dotazovat napříč několika databázemi pomocí známého prostředí připojení SQL Serveru v nástrojích, jako jsou Excel, Power BI, Tableau nebo Cognos. Elastický dotaz umožňuje snadný přístup k celé kolekci databází prostřednictvím dotazů vydaných aplikací SQL Server Management Studio nebo sady Visual Studio a usnadňuje dotazování mezi databázemi z Entity Frameworku nebo jiných prostředí ORM. Obrázek 1 znázorňuje scénář, kde existující cloudová aplikace (která používá elastic database client library) staví na škálované datové vrstvě, a elastický dotaz se používá pro reporting napříč databázemi.
Obrázek 1 Elastický dotaz použitý ve škálované datové vrstvě
Scénáře zákazníků pro elastický dotaz jsou charakterizovány následujícími topologiemi:
Vertikální dělení – dotazy napříč databázemi (topologie 1): Data jsou rozdělena svisle mezi několik databází v datové vrstvě. V různých databázích se obvykle nacházejí různé sady tabulek. To znamená, že schéma se liší v různých databázích. Například všechny tabulky pro inventář jsou v jedné databázi, zatímco všechny tabulky související s účetnictvím jsou v druhé databázi. Běžné případy použití této topologie vyžadují, aby bylo nutné provádět dotazy nebo sestavovat sestavy napříč tabulkami v několika databázích.
Horizontální dělení – sharding (topologie 2): Data jsou rozdělena vodorovně, aby se řádky distribuovaly napříč škálovanou datovou vrstvou. Díky tomuto přístupu je schéma stejné u všech zúčastněných databází. Tento přístup se také nazývá horizontální dělení. Shardování je možné provádět a spravovat pomocí (1) knihovny nástrojů pro elastické databáze nebo (2) samostatného sharding. Elastický dotaz se používá k dotazování nebo sestavování zpráv napříč mnoha shardy. Databázové fragmenty jsou obvykle jako databáze v elastickém fondu. Elastický dotaz si můžete představit jako efektivní způsob dotazování na všechny databáze elastického fondu najednou, pokud databáze sdílejí společné schéma.
Poznámka:
Elastický dotaz je nejvhodnější pro scénáře vytváření sestav, ve kterých lze většinu zpracování (filtrování, agregace) provádět na externí zdrojové straně. Není vhodný pro operace ETL, kdy se velké množství dat přenáší ze vzdálených databází. U náročných úloh generování sestav nebo scénářů datových skladů s složitějšími dotazy zvažte také použití služby Azure Synapse Analytics.
Vertikální dělení – dotazy napříč databázemi
Pokud chcete začít psát kód, přečtěte si téma Začínáme s dotazem napříč databázemi (vertikální dělení).
Elastický dotaz lze použít k tomu, aby byla data umístěná v databázi ve službě SQL Database k dispozici pro jiné databáze ve službě SQL Database. To umožňuje dotazům z jedné databáze odkazovat na tabulky v jakékoli jiné vzdálené databázi ve službě SQL Database. Prvním krokem je definování externího zdroje dat pro každou vzdálenou databázi. Externí zdroj dat je definován v místní databázi, ze které chcete získat přístup k tabulkám umístěným ve vzdálené databázi. Ve vzdálené databázi nejsou nutné žádné změny. Pro typické scénáře vertikálního dělení, kdy různé databáze mají různá schémata, je možné elastické dotazy použít k implementaci běžných případů použití, jako je přístup k referenčním datům a dotazování mezi databázemi.
Důležité
Musíte mít oprávnění ALTER ANY EXTERNAL DATA SOURCE. Toto oprávnění je součástí ALTER DATABASE oprávnění.
ALTER ANY EXTERNAL DATA SOURCE oprávnění jsou nutná k odkazování na podkladový zdroj dat.
Referenční data: Topologie se používá pro správu referenčních dat. Na následujícím obrázku se ve vyhrazené databázi uchovávají dvě tabulky (T1 a T2) s referenčními daty. Pomocí elastického dotazu teď můžete přistupovat k tabulkám T1 a T2 vzdáleně z jiných databází, jak je znázorněno na obrázku. Topologii 1 použijte, pokud jsou referenční tabulky malé nebo vzdálené dotazy do referenční tabulky mají selektivní predikáty.
Obrázek 2 Vertikální dělení – Použití elastického dotazu k dotazování referenčních dat
Dotazování mezi databázemi: Elastické dotazy umožňují případy použití, které vyžadují dotazování napříč několika databázemi ve službě SQL Database. Obrázek 3 znázorňuje čtyři různé databáze: CRM, Inventory, HR a Products. Dotazy prováděné v jedné z databází také potřebují přístup k jedné nebo ke všem ostatním databázím. Pomocí elastického dotazu můžete pro tento případ nakonfigurovat databázi spuštěním několika jednoduchých příkazů DDL v každé ze čtyř databází. Po této jednorázové konfiguraci je přístup ke vzdálené tabulce stejně jednoduchý jako odkaz na místní tabulku z dotazů T-SQL nebo z nástrojů BI. Tento přístup se doporučuje, pokud vzdálené dotazy nevrací velké výsledky.
Obrázek 3 Vertikální dělení – použití elastického dotazu k dotazování napříč různými databázemi
Následující kroky nakonfigurují dotazy elastické databáze pro scénáře vertikálního dělení, které vyžadují přístup k tabulce umístěné ve vzdálených databázích ve službě SQL Database se stejným schématem:
VYTVOŘENÍ HLAVNÍHO KLÍČE
mymasterkeyVYTVOŘENÍ
mycredentialPŘIHLAŠOVACÍCH ÚDAJŮ S VYMEZENÝM OBOREM DATABÁZEVYTVOŘENÍ EXTERNÍHO ZDROJE DAT
mydatasourcetypuRDBMSVYTVOŘENÍ EXTERNÍ TABULKY
mytable
Po spuštění příkazů DDL můžete přistupovat ke vzdálené tabulce mytable, jako by to byla místní tabulka. Azure SQL Database automaticky otevře připojení ke vzdálené databázi, zpracuje vaši žádost o vzdálenou databázi a vrátí výsledky.
Horizontální dělení – sharding
Důležité
Elastický dotaz v režimu správce map segmentů (horizontální oddílení) pomocí EXTERNAL DATA SOURCE typu SHARD_MAP_MANAGER dosahuje konce podpory 31. března 2027. Po tomto datu budou stávající úlohy nadále fungovat, ale už nebudou dostávat podporu a vytváření nových externích zdrojů dat typu SHARD_MAP_MANAGER už nebude možné. Pro možnosti migrace si přečtěte průvodce migrací z režimu správce map elastických dotazů.
Použití elastického dotazu k provádění úloh vytváření sestav nad horizontálně dělenou vrstvou dat vyžaduje mapu shardů elastické databáze, která reprezentuje databáze datové vrstvy. V tomto scénáři se obvykle používá pouze jedna mapa shardů a vyhrazená databáze s možnostmi elastických dotazů (hlavní uzel) slouží jako vstupní bod pro dotazy ve vytvořených sestavách. Pouze tato vyhrazená databáze potřebuje přístup k mapě shardů. Obrázek 4 znázorňuje tuto topologii a její konfiguraci pomocí databáze elastických dotazů a mapy horizontálních oddílů. Další informace o klientské knihovně elastické databáze a vytváření map horizontálních oddílů najdete v tématu Správa mapování horizontálních oddílů.
Obrázek 4 Horizontální rozdělení – Použití elastického dotazu pro vytváření reportů nad horizontálně rozdělenými datovými vrstvami
Poznámka:
Elastic Query Database (hlavní uzel) může být samostatná databáze, nebo může být stejná databáze, která hostuje shard map. Ať zvolíte jakoukoli konfiguraci, ujistěte se, že úroveň služby a velikost výpočetních prostředků dané databáze jsou dostatečně vysoké, aby zvládly očekávaný počet požadavků na přihlášení nebo dotaz.
Následující kroky nakonfigurují dotazy elastické databáze pro scénáře horizontálního dělení, které vyžadují přístup k sadě tabulek umístěných v (obvykle) několika vzdálených databázích ve službě SQL Database:
VYTVOŘENÍ HLAVNÍHO KLÍČE
mymasterkeyVYTVOŘIT OPRÁVNĚNÍ V RÁMCI DATABÁZE
mycredential.Vytvořte mapu shardů představující datové úrovně pomocí klientské knihovny elastické databáze.
VYTVOŘIT EXTERNÍ ZDROJ DAT
mydatasourcetypuSHARD_MAP_MANAGER.VYTVOŘENÍ EXTERNÍ TABULKY
mytable
Po provedení těchto kroků můžete přistupovat k vodorovně dělené tabulce mytable, jako by šlo o místní tabulku. Azure SQL Database automaticky otevře několik paralelních připojení ke vzdáleným databázím, kde jsou tabulky fyzicky uložené, zpracuje požadavky na vzdálené databáze a vrátí výsledky.
Další informace o krocích požadovaných pro scénář horizontálního dělení najdete v elastickém dotazu pro horizontální dělení.
Pokud chcete začít psát kód, přečtěte si téma Začínáme s elastickým dotazem pro horizontální dělení (horizontální dělení).
Důležité
Úspěšné spuštění elastického dotazu nad velkou sadou databází spoléhá při provádění dotazu do značné míry na dostupnost každé databáze. Pokud jedna z databází není dostupná, celý dotaz selže. Pokud plánujete dotazovat stovky nebo tisíce databází najednou, ujistěte se, že má vaše klientská aplikace vloženou logiku opakování, nebo zvažte využití elastických úloh a dotazování menších podmnožina databází, sloučení výsledků každého dotazu do jednoho cíle.
Dotazování T-SQL
Po definování externích zdrojů dat a externích tabulek můžete použít běžné připojovací řetězec SQL Serveru pro připojení k databázím, ve kterých jste definovali externí tabulky. Potom můžete spouštět příkazy T-SQL nad externími tabulkami v tomto připojení s omezeními popsanými dále v tomto článku. Další informace a příklady dotazů T-SQL najdete v článcích dokumentace pro horizontální dělení a vertikální dělení.
Zabezpečené externí zdroje dat
Externí LOCATION datový zdroj může identifikovat SQL endpoint podle plně kvalifikovaného doménového jména (FQDN) nebo IP adresy, včetně koncového bodu, který není logickým serverem Azure SQL Database. Když se spustí elastický dotaz, odešle autentizační informace, text dotazu, parametry a všechna data přenesená dotazem na konfigurovaný koncový bod. Nastavte externí zdroje dat pouze pro koncové body, kterým vaše organizace důvěřuje.
Pouze principali s ALTER ANY EXTERNAL DATA SOURCE oprávněním mohou vytvářet nebo měnit externí zdroj dat. Toto povolení omezte na správce databází, kteří ho potřebují, a pravidelně kontrolujte externí datové zdroje dotazováním sys.external_data_sources.
Jako samostatné síťové řízení nechte síťového administrátora omezit odchozí síť a povolit pouze schválené cílové FQDN pro logický server. Použijte FQDN místo IP adresy v každém externím datovém zdroji, aby bylo možné explicitně povolit jejich cíl. Oddělení konfigurace databáze od schválení sítě implementuje oddělení povinností a zabraňuje administrátorovi databáze navázat neschválenou komunikační cestu bez nezávislé změny síťové politiky.
Možnosti připojení pro nástroje
Běžné připojovací řetězec SQL Serveru můžete použít k připojení aplikací a nástrojů pro integraci dat k databázím s externími tabulkami. Ujistěte se, že sql Server je podporovaný jako zdroj dat pro váš nástroj. Po připojení se podívejte na elastickou databázi dotazů a externí tabulky v této databázi stejně, jako byste to udělali s jakoukoli jinou databází SQL Serveru, ke které se připojujete pomocí nástroje.
Důležité
Dotazy typu Elastic jsou podporovány pouze při použití ověřování SQL Serveru.
Náklady
Elastický dotaz je součástí nákladů na Azure SQL Database. Topologie, ve kterých jsou vzdálené databáze v jiném datovém centru než je koncový bod pro elastické dotazy, jsou podporovány, ale odchozí přenos dat ze vzdálených databází je účtován podle pravidelných sazeb Azure.
Omezení verze Preview
Spuštění prvního elastického dotazu může trvat až několik minut při použití menších prostředků a úrovní služby Standard a Obecný účel. Čas je nezbytný pro načtení funkce elastických dotazů; výkon při načítání se zlepšuje při vyšších úrovních služby a větších velikostech výpočetních zdrojů.
Elastický dotaz aktuálně podporuje přístup jen pro čtení k externím tabulkám. V databázi, ve které je definována externí tabulka, však můžete použít úplné funkce Jazyka Transact-SQL. To může být užitečné například pro zachování dočasných výsledků pomocí
SELECT <column_list> INTO <local_table>nebo definování uložených procedur v databázi elastických dotazů, které odkazují na externí tabulky.Kromě nvarchar(max)nejsou v definicích externí tabulky podporované typy LOB (včetně prostorových typů). Jako alternativní řešení můžete vytvořit zobrazení ve vzdálené databázi, která přetypuje typ LOB na nvarchar(max), definujte externí tabulku místo základní tabulky a pak ji přetypujte zpět do původního typu LOB v dotazech.
Sloupce nvarchar(max) datového typu v sadě výsledků zakazují pokročilé dávkové techniky používané při implementaci elastického dotazu a můžou ovlivnit výkon dotazu o řád, nebo dokonce dva řády v neanonických případech použití, kdy se v důsledku dotazu přenáší velké množství neagregovaných dat.
Statistiky sloupců u externích tabulek se v současné době nepodporují. Podporují se statistiky tabulek, ale je potřeba je vytvořit ručně.
Kurzory nejsou podporované pro externí tabulky ve službě Azure SQL Database.
Elastic dotazovací scénáře dokumentované a podporované v tomto článku využívají Azure SQL Database jako vzdálený zdroj dat. Syntax externího datového zdroje není omezena
LOCATIONna logický server Azure SQL Database. Chraňte jakýkoli nakonfigurovaný cíl, jak je popsáno v Zabezpečené externí zdroje dat.U databází, které jsou cílem externích zdrojů dat, se v současné době u elastických dotazů nepodporují privátní propojení.
Související obsah
- Začínáme s dotazy napříč databázemi (vertikální dělení) (Preview)
- Dotazování napříč cloudovými databázemi s různými schématy (náhled)
- Sestava napříč cloudovými databázemi se škálováním na více systémů (Preview)
- Reportování v rámci škálovaných cloudových databází (Náhled)
-
sp_execute_remote (Azure SQL Database)