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 2016 (13.x) a novější
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Vytvoří externí zdroj dat pro dotazování externích dat, který se používá pro funkce PolyBase a virtualizace dat.
Tento článek obsahuje syntaxi, argumenty, poznámky, oprávnění a příklady pro vámi zvolený produkt SQL.
Výběr produktu
V následujícím řádku vyberte název produktu, který vás zajímá, a zobrazí se jenom informace o daném produktu.
* SQL Server *
Azure Synapse
analýzy
Přehled: SQL Server 2016
Platí pro: SQL Server 2016 (13.x)
Vytvoří externí zdroj dat pro dotazy PolyBase. Externí zdroje dat slouží k navázání připojení a podpoře těchto primárních případů použití:
- Virtualizace dat a načítání dat pomocí PolyBase
- Operace hromadného načítání s využitím
BULK INSERT
neboOPENROWSET
Poznámka:
Tato syntaxe se liší v různých verzích SQL Serveru. K výběru vhodné verze použijte rozevírací seznam selektoru verzí.
Informace o funkcích SQL Serveru 2019 (15.x) najdete v tématu VYTVOŘENÍ EXTERNÍHO ZDROJE DAT.
Informace o funkcích SQL Serveru 2022 (16.x) najdete v tématu VYTVOŘENÍ EXTERNÍHO ZDROJE DAT.
Syntaxe pro SQL Server 2016
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = { HADOOP } ]
[ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]
Argumenty
data_source_name
Určuje uživatelem definovaný název zdroje dat. Název musí být jedinečný v rámci databáze na SQL Serveru.
LOCATION = '<prefix>://<path[:p ort]>'
Poskytuje protokol připojení a cestu k externímu zdroji dat.
Externí zdroj dat | Předpona umístění konektoru | Cesta k lokaci | Podporovaná umístění podle produktu nebo služby | Autentizace |
---|---|---|---|---|
Cloudera CDH nebo Hortonworks HDP | hdfs |
<Namenode>[:port] |
SQL Server 2016 (13.x) na SQL Server 2019 (15.x) | Anonymní nebo základní ověřování |
Účet služby Azure Storage (V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Počínaje SQL Serverem 2016 (13.x) Hierarchický obor názvů není podporován. |
Klíč účtu služby Azure Storage |
Cesta k umístění:
-
<Namenode>
= název počítače, identifikátor URI služby name nebo IP adresa clusteruNamenode
Hadoop. PolyBase musí přeložit všechny názvy DNS používané clusterem Hadoop. -
port
= Port, na který externí zdroj dat naslouchá. V Hadoopu najdete port pomocí konfiguračního parametrufs.defaultFS
. Výchozí hodnota je 8020. -
<container>
= kontejner účtu úložiště, ve kterém jsou uložená data. Kořenové kontejnery jsou jen pro čtení, data se nedají zapsat zpět do kontejneru. -
<storage_account>
= název účtu úložiště prostředku Azure. -
<server_name>
= název hostitele. -
<instance_name>
= název pojmenované instance SQL Serveru. Používá se, pokud máte službu SQL Server Browser spuštěnou v cílové instanci.
Další poznámky a pokyny při nastavování umístění:
- Databázový stroj SQL Serveru při vytváření objektu neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.
- Při dotazování Hadoopu použijte stejný externí zdroj dat pro všechny tabulky, abyste zajistili konzistentní sémantiku dotazování.
-
wasbs
je nepovinný, ale doporučuje se v SQL Serveru 2016 (13.x) pro přístup k účtům azure Storage, protože se budou odesílat data pomocí zabezpečeného připojení TLS/SSL. - Pokud chcete zajistit úspěšné dotazy PolyBase během převzetí služeb při selhání Hadoopu
Namenode
, zvažte použití virtuální IP adresy proNamenode
cluster Hadoop. Pokud ne, spusťte PŘÍKAZ ALTER EXTERNAL DATA SOURCE tak, aby odkazovat na nové umístění.
CREDENTIAL = credential_name
Určuje přihlašovací údaje s oborem databáze pro ověřování v externím zdroji dat.
CREDENTIAL
vyžaduje se pouze v případě, že jsou data zabezpečená.
CREDENTIAL
nevyžaduje se u datových sad, které umožňují anonymní přístup.
Pokud chcete vytvořit přihlašovací údaje s vymezeným oborem databáze, přečtěte si téma CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
TYP = * [ HADOOP ] *
Určuje typ nakonfigurovaného externího zdroje dat. V SQL Serveru 2016 je tento parametr vždy povinný a měl by být zadán pouze jako HADOOP
. Podporuje připojení ke službě Cloudera CDH, Hortonworks HDP nebo účtu azure Storage. Chování tohoto parametru se liší v novějších verzích SQL Serveru.
Příklad použití TYPE
= HADOOP
k načtení dat z účtu azure Storage najdete v tématu Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Storage pomocí rozhraní wasb://
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
Tuto volitelnou hodnotu nakonfigurujte pouze při připojování k Cloudera CDH, Hortonworks HDP nebo účtu Azure Storage. Úplný seznam podporovaných verzí Hadoopu najdete v tématu Konfigurace připojení PolyBase.
RESOURCE_MANAGER_LOCATION
Když je definován, optimalizátor dotazů provede rozhodnutí na základě nákladů za účelem zlepšení výkonu. Úlohu MapReduce lze použít k posunu výpočtů do Hadoopu. Určení RESOURCE_MANAGER_LOCATION
může výrazně snížit objem dat přenášených mezi Hadoopem a SQL Serverem, což může vést ke zlepšení výkonu dotazů.
Pokud není Zadaný Resource Manager, je nabízení výpočetních prostředků do Hadoopu zakázané pro dotazy PolyBase. Vytvoření externího zdroje dat pro odkazování na Hadoop s povoleným push-down poskytuje konkrétní příklad a další pokyny.
Hodnota RESOURCE_MANAGER_LOCATION se při vytváření externího zdroje dat neověřuje. Zadání nesprávné hodnoty může způsobit selhání dotazu při spuštění při každém pokusu o nasdílení změn, protože zadaná hodnota by nebyla schopna vyřešit.
Aby polyBase fungovala správně s externím zdrojem dat Hadoop, musí být otevřené porty pro následující komponenty clusteru Hadoop:
- Porty HDFS
- Uzel NameNode
- Datový uzel
- Resource Manager
- Odeslání úlohy
- Historie úlohy
Pokud není port zadaný, zvolí se výchozí hodnota s použitím aktuálního nastavení pro konfiguraci připojení hadoop.
Připojení Hadoopu | Výchozí port Resource Manageru |
---|---|
1 |
50300 |
2 |
50300 |
3 |
8021 |
4 |
8032 |
5 |
8050 |
6 |
8032 |
7 |
8050 |
8 |
8032 |
Následující tabulka uvádí výchozí porty pro tyto komponenty. Existuje závislost na verzi Hadoopu i možnost vlastní konfigurace, která nepoužívá výchozí přiřazení portu.
Komponenta clusteru Hadoop | Výchozí port |
---|---|
Uzel NameNode | 8020 |
Datový uzel (přenos dat, port IPC bez oprávnění) | 50010 |
Datový uzel (přenos dat, port IPC oprávnění) | 1019 |
Odeslání úlohy Resource Manageru (Hortonworks 1.3) | 50300 |
Odeslání úlohy Resource Manageru (Cloudera 4.3) | 8021 |
Odeslání úlohy Resource Manageru (Hortonworks 2.0 ve Windows, Cloudera 5.x v Linuxu) | 8032 |
Odeslání úlohy Resource Manageru (Hortonworks 2.x, 3.0 v Linuxu, Hortonworks 2.1-3 ve Windows) | 8050 |
Historie úloh Resource Manageru | 10020 |
Povolení
Vyžaduje CONTROL
oprávnění k databázi na SQL Serveru.
Uzamčení
Vezme sdílený zámek objektu EXTERNAL DATA SOURCE
.
Bezpečnost
PolyBase podporuje ověřování na základě proxy serveru pro většinu externích zdrojů dat. Vytvořte přihlašovací údaje s vymezeným oborem databáze a vytvořte účet proxy serveru.
Příklady
Důležité
Informace o instalaci a povolení PolyBase naleznete v tématu Instalace PolyBase ve Windows.
A. Vytvoření externího zdroje dat pro odkazování na Hadoop
Pokud chcete vytvořit externí zdroj dat, který bude odkazovat na cluster Hortonworks HDP nebo Cloudera CDH Hadoop, zadejte název počítače nebo IP adresu Hadoopu Namenode
a portu.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8050',
TYPE = HADOOP
);
B. Vytvoření externího zdroje dat pro odkazování na Hadoop s povoleným push-down
RESOURCE_MANAGER_LOCATION
Zadejte možnost povolení výpočtu push-down do Hadoopu pro dotazy PolyBase. Jakmile je tato možnost povolená, polyBase provede rozhodnutí na základě nákladů, které určí, jestli se má výpočet dotazu odeslat do Hadoopu.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8020',
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
C. Vytvoření externího zdroje dat pro odkazování na Hadoop zabezpečený protokolem Kerberos
Pokud chcete ověřit, jestli je cluster Hadoop zabezpečený protokolem Kerberos, zkontrolujte hodnotu hadoop.security.authentication
vlastnosti v systému Hadoop core-site.xml. Pokud chcete odkazovat na cluster Hadoop zabezpečený protokolem Kerberos, musíte zadat přihlašovací údaje s oborem databáze, které obsahují vaše uživatelské jméno a heslo kerberos. Hlavní klíč databáze slouží k šifrování tajného klíče přihlašovacích údajů s vymezeným oborem databáze.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH IDENTITY = '<hadoop_user_name>',
SECRET = '<hadoop_password>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Storage pomocí rozhraní wasb://
V tomto příkladu je externím zdrojem dat účet azure V2 Storage s názvem logs
. Kontejner úložiště se nazývá daily
. Externí zdroj dat Azure Storage je určený pouze pro přenos dat. Nepodporuje predikát push-down. Hierarchické obory názvů nejsou podporovány při přístupu k datům přes wasb://
rozhraní.
Tento příklad ukazuje, jak vytvořit přihlašovací údaje s vymezeným oborem databáze pro ověřování k účtu azure V2 Storage. Zadejte klíč účtu služby Azure Storage v tajném klíči přihlašovacích údajů databáze. V identitě přihlašovacích údajů s vymezeným oborem databáze můžete zadat libovolný řetězec, protože se nepoužívá při ověřování ve službě Azure Storage. Při připojování ke službě Azure Storage prostřednictvím wasb
nebo wasbs
musí být ověřování provedeno pomocí klíče účtu úložiště, nikoli se sdíleným přístupovým podpisem (SAS).
V SQL Serveru 2016 (13.x) TYPE
by se měl nastavit i HADOOP
při přístupu ke službě Azure Storage.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential,
TYPE = HADOOP
);
Související obsah
Přehled: SQL Server 2017
Platí pro: SQL Server 2017 (14.x)
Vytvoří externí zdroj dat pro dotazy PolyBase. Externí zdroje dat slouží k navázání připojení a podpoře těchto primárních případů použití:
- Virtualizace dat a načítání dat pomocí PolyBase na SQL Serveru
- Operace hromadného načítání s využitím
BULK INSERT
neboOPENROWSET
Poznámka:
Tato syntaxe se liší v různých verzích SQL Serveru v Linuxu. K výběru vhodné verze použijte rozevírací seznam selektoru verzí.
Informace o funkcích SQL Serveru 2019 (15.x) najdete v tématu VYTVOŘENÍ EXTERNÍHO ZDROJE DAT.
Informace o funkcích SQL Serveru 2022 (16.x) najdete v tématu VYTVOŘENÍ EXTERNÍHO ZDROJE DAT.
Poznámka:
Tato syntaxe se liší v různých verzích SQL Serveru. K výběru vhodné verze použijte rozevírací seznam selektoru verzí.
Informace o funkcích SQL Serveru 2019 (15.x) najdete v tématu VYTVOŘENÍ EXTERNÍHO ZDROJE DAT.
Informace o funkcích SQL Serveru 2022 (16.x) najdete v tématu VYTVOŘENÍ EXTERNÍHO ZDROJE DAT.
Syntaxe pro SQL Server 2017
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = { HADOOP | BLOB_STORAGE } ]
[ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]
Argumenty
data_source_name
Určuje uživatelem definovaný název zdroje dat. Název musí být jedinečný v rámci databáze na SQL Serveru.
LOCATION = '<prefix>://<path[:p ort]>'
Poskytuje protokol připojení a cestu k externímu zdroji dat.
Externí zdroj dat | Předpona umístění konektoru | Cesta k lokaci | Podporovaná umístění podle produktu nebo služby | Autentizace |
---|---|---|---|---|
Cloudera CDH nebo Hortonworks HDP | hdfs |
<Namenode>[:port] |
POUZE SQL Server 2016 (13.x) na SQL Server 2019 (15.x) | Anonymní nebo základní ověřování |
Účet služby Azure Storage (V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Počínaje SQL Serverem 2016 (13.x) Hierarchický obor názvů není podporován. |
Klíč účtu služby Azure Storage |
Hromadné operace | https |
<storage_account>.blob.core.windows.net/<container> |
Počínaje SQL Serverem 2017 (14.x) | Sdílený přístupový podpis (SAS) |
Cesta k umístění:
-
<
Namenode>
= název počítače, identifikátor URI služby name nebo IP adresa clusteruNamenode
Hadoop. PolyBase musí přeložit všechny názvy DNS používané clusterem Hadoop. -
port
= Port, na který externí zdroj dat naslouchá. V Hadoopu najdete port pomocí konfiguračního parametrufs.defaultFS
. Výchozí hodnota je 8020. -
<container>
= kontejner účtu úložiště, ve kterém jsou uložená data. Kořenové kontejnery jsou jen pro čtení, data se nedají zapsat zpět do kontejneru. -
<storage_account>
= název účtu úložiště prostředku Azure. -
<server_name>
= název hostitele. -
<instance_name>
= název pojmenované instance SQL Serveru. Používá se, pokud máte službu SQL Server Browser spuštěnou v cílové instanci.
Další poznámky a pokyny při nastavování umístění:
- Databázový stroj SQL Serveru při vytváření objektu neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.
- Při dotazování Hadoopu použijte stejný externí zdroj dat pro všechny tabulky, abyste zajistili konzistentní sémantiku dotazování.
-
Driver={<Name of Driver>}
Zadejte při připojování přesODBC
. -
wasbs
je nepovinný, ale doporučuje se v SQL Serveru 2017 (14.x) pro přístup k účtům azure Storage, protože se budou odesílat data pomocí zabezpečeného připojení TLS/SSL. - Pokud chcete zajistit úspěšné dotazy PolyBase během převzetí služeb při selhání Hadoopu
Namenode
, zvažte použití virtuální IP adresy proNamenode
cluster Hadoop. Pokud ne, spusťte PŘÍKAZ ALTER EXTERNAL DATA SOURCE tak, aby odkazovat na nové umístění.
CREDENTIAL = credential_name
Určuje přihlašovací údaje s oborem databáze pro ověřování v externím zdroji dat.
Další poznámky a pokyny při vytváření přihlašovacích údajů:
-
CREDENTIAL
vyžaduje se pouze v případě, že jsou data zabezpečená.CREDENTIAL
nevyžaduje se u datových sad, které umožňují anonymní přístup. - Pokud se přihlašovací
TYPE
=BLOB_STORAGE
údaje musí vytvořit jakoSHARED ACCESS SIGNATURE
identita. -
TYPE
=BLOB_STORAGE
je povolena pouze pro hromadné operace; Nelze vytvořit externí tabulky pro externí zdroj dat sTYPE
=BLOB_STORAGE
. - Při připojování ke službě Azure Storage prostřednictvím
wasb
nebowasbs
musí být ověřování provedeno pomocí klíče účtu úložiště, nikoli se sdíleným přístupovým podpisem (SAS). - Pokud
TYPE
=HADOOP
je nutné vytvořit přihlašovací údaje pomocí klíče účtu úložiště jakoSECRET
klíče .
Sdílený přístupový podpis můžete vytvořit několika způsoby:
Token SAS můžete vytvořit tak, že přejdete na web Azure Portal -><Your_Storage_Account> –> Sdílený přístupový podpis –> Konfigurace oprávnění –> Vygenerování SAS a připojovacího řetězce. Další informace najdete v tématu Generování sdíleného přístupového podpisu.
Sas můžete vytvořit a nakonfigurovat pomocí Průzkumníka služby Azure Storage.
Token SAS můžete vytvořit programově prostřednictvím PowerShellu, Azure CLI, .NET a rozhraní REST API. Další informace najdete v tématu Udělení omezeného přístupu k prostředkům Azure Storage pomocí sdílených přístupových podpisů (SAS).
Token SAS by měl být nakonfigurovaný takto:
- Když se vygeneruje token SAS, obsahuje na začátku tokenu otazník (?). Při konfiguraci tajného kódu vyloučí počáteční
?
. - Použijte platnou dobu vypršení platnosti (všechna data jsou v čase UTC).
- Když se vygeneruje token SAS, obsahuje na začátku tokenu otazník (?). Při konfiguraci tajného kódu vyloučí počáteční
Udělte alespoň oprávnění ke čtení souboru, který by se měl načíst (například
srt=o&sp=r
). Pro různé případy použití je možné vytvořit více sdílených přístupových podpisů. Oprávnění by měla být udělena následujícím způsobem:Činnost Povolení Čtení dat ze souboru Čti Čtení dat z více souborů a podsložek Číst a seznamovat
Příklad použití příkazu CREDENTIAL
with SHARED ACCESS SIGNATURE
aTYPE
= BLOB_STORAGE
, viz Vytvoření externího zdroje dat pro provádění hromadných operací a načtení dat ze služby Azure Storage do SQL Database
Pokud chcete vytvořit přihlašovací údaje s vymezeným oborem databáze, přečtěte si téma CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
TYPE = * [ HADOOP | BLOB_STORAGE ] *
Určuje typ nakonfigurovaného externího zdroje dat. Tento parametr není vždy povinný a měl by být zadán pouze při připojování k Cloudera CDH, Hortonworks HDP, účtu Azure Storage nebo Azure Data Lake Storage Gen2.
- Použijte
HADOOP
, když externí zdroj dat je Cloudera CDH, Hortonworks HDP, účet Azure Storage nebo Azure Data Lake Storage Gen2. - Používá se
BLOB_STORAGE
při provádění hromadných operací z účtu služby Azure Storage pomocí funkce BULK INSERT nebo OPENROWSET. Představeno s SQL Serverem 2017 (14.x). PoužíváHADOOP
se při úmyslu použít proCREATE EXTERNAL TABLE
Azure Storage.
Poznámka:
TYPE
měla by být nastavená i HADOOP
při přístupu ke službě Azure Storage.
Příklad použití TYPE
= HADOOP
k načtení dat z účtu azure Storage najdete v tématu Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Storage pomocí rozhraní wasb://
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
Tuto volitelnou hodnotu nakonfigurujte pouze při připojování k Cloudera CDH, Hortonworks HDP nebo účtu Azure Storage. Úplný seznam podporovaných verzí Hadoopu najdete v tématu Konfigurace připojení PolyBase (Transact-SQL).
RESOURCE_MANAGER_LOCATION
Po definování provede optimalizátor dotazů rozhodnutí na základě nákladů za účelem zlepšení výkonu. Úlohu MapReduce lze použít k posunu výpočtů do Hadoopu. Určení RESOURCE_MANAGER_LOCATION
může výrazně snížit objem dat přenášených mezi Hadoopem a SQL Serverem, což může vést ke zlepšení výkonu dotazů.
Pokud není Zadaný Resource Manager, je nabízení výpočetních prostředků do Hadoopu zakázané pro dotazy PolyBase. Vytvoření externího zdroje dat pro odkazování na Hadoop s povoleným push-down poskytuje konkrétní příklad a další pokyny.
Při RESOURCE_MANAGER_LOCATION
vytváření externího zdroje dat se tato hodnota neověřuje. Zadání nesprávné hodnoty může způsobit selhání dotazu při spuštění při každém pokusu o nasdílení změn, protože zadaná hodnota by nebyla schopna vyřešit.
Aby polyBase fungovala správně s externím zdrojem dat Hadoop, musí být otevřené porty pro následující komponenty clusteru Hadoop:
- Porty HDFS
- Uzel NameNode
- Datový uzel
- Resource Manager
- Odeslání úlohy
- Historie úlohy
Pokud není port zadaný, zvolí se výchozí hodnota s použitím aktuálního nastavení pro konfiguraci připojení hadoop.
Připojení Hadoopu | Výchozí port Resource Manageru |
---|---|
1 |
50300 |
2 |
50300 |
3 |
8021 |
4 |
8032 |
5 |
8050 |
6 |
8032 |
7 |
8050 |
8 |
8032 |
Následující tabulka uvádí výchozí porty pro tyto komponenty. Existuje závislost na verzi Hadoopu i možnost vlastní konfigurace, která nepoužívá výchozí přiřazení portu.
Komponenta clusteru Hadoop | Výchozí port |
---|---|
Uzel NameNode | 8020 |
Datový uzel (přenos dat, port IPC bez oprávnění) | 50010 |
Datový uzel (přenos dat, port IPC oprávnění) | 1019 |
Odeslání úlohy Resource Manageru (Hortonworks 1.3) | 50300 |
Odeslání úlohy Resource Manageru (Cloudera 4.3) | 8021 |
Odeslání úlohy Resource Manageru (Hortonworks 2.0 ve Windows, Cloudera 5.x v Linuxu) | 8032 |
Odeslání úlohy Resource Manageru (Hortonworks 2.x, 3.0 v Linuxu, Hortonworks 2.1-3 ve Windows) | 8050 |
Historie úloh Resource Manageru | 10020 |
Povolení
Vyžaduje CONTROL
oprávnění k databázi na SQL Serveru.
Uzamčení
Vezme sdílený zámek objektu EXTERNAL DATA SOURCE
.
Bezpečnost
PolyBase podporuje ověřování na základě proxy serveru pro většinu externích zdrojů dat. Vytvořte přihlašovací údaje s vymezeným oborem databáze a vytvořte účet proxy serveru.
Token SAS s typem HADOOP
není podporován. Podporuje se pouze u typu = BLOB_STORAGE
při použití přístupového klíče účtu úložiště. Pokus o vytvoření externího zdroje dat s typem HADOOP
a přihlašovací údaje SAS selžou s následující chybou:
Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account are not valid.: Error [Parameters provided to connect to the Azure storage account are not valid.] occurred while accessing external file.'
Příklady
Důležité
Informace o instalaci a povolení PolyBase naleznete v tématu Instalace PolyBase ve Windows.
A. Vytvoření externího zdroje dat pro odkazování na Hadoop
Pokud chcete vytvořit externí zdroj dat, který bude odkazovat na cluster Hortonworks HDP nebo Cloudera CDH Hadoop, zadejte název počítače nebo IP adresu Hadoopu Namenode
a portu.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8050',
TYPE = HADOOP
);
B. Vytvoření externího zdroje dat pro odkazování na Hadoop s povoleným push-down
RESOURCE_MANAGER_LOCATION
Zadejte možnost povolení výpočtu push-down do Hadoopu pro dotazy PolyBase. Jakmile je tato možnost povolená, polyBase provede rozhodnutí na základě nákladů, které určí, jestli se má výpočet dotazu odeslat do Hadoopu.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8020',
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
C. Vytvoření externího zdroje dat pro odkazování na Hadoop zabezpečený protokolem Kerberos
Pokud chcete ověřit, jestli je cluster Hadoop zabezpečený protokolem Kerberos, zkontrolujte hodnotu hadoop.security.authentication
vlastnosti v systému Hadoop core-site.xml. Pokud chcete odkazovat na cluster Hadoop zabezpečený protokolem Kerberos, musíte zadat přihlašovací údaje s oborem databáze, které obsahují vaše uživatelské jméno a heslo kerberos. Hlavní klíč databáze slouží k šifrování tajného klíče přihlašovacích údajů s vymezeným oborem databáze.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH IDENTITY = '<hadoop_user_name>',
SECRET = '<hadoop_password>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Storage pomocí rozhraní wasb://
V tomto příkladu je externím zdrojem dat účet azure V2 Storage s názvem logs
. Kontejner úložiště se nazývá daily
. Externí zdroj dat Azure Storage je určený pouze pro přenos dat. Nepodporuje predikát push-down. Hierarchické obory názvů nejsou podporovány při přístupu k datům přes wasb://
rozhraní. Při připojování ke službě Azure Storage prostřednictvím wasb
nebo wasbs
musí být ověřování provedeno pomocí klíče účtu úložiště, nikoli se sdíleným přístupovým podpisem (SAS).
Tento příklad ukazuje, jak vytvořit přihlašovací údaje s vymezeným oborem databáze pro ověřování k účtu azure V2 Storage. Zadejte klíč účtu služby Azure Storage v tajném klíči přihlašovacích údajů databáze. V identitě přihlašovacích údajů s vymezeným oborem databáze můžete zadat libovolný řetězec, protože se nepoužívá při ověřování ve službě Azure Storage.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential,
TYPE = HADOOP
);
Příklady: Hromadné operace
Důležité
Při konfiguraci externího / zdroje dat pro hromadné operace nepřidávejte LOCATION
koncové parametry, název souboru ani parametry sdíleného přístupového podpisu na konci adresy URL.
E. Vytvoření externího zdroje dat pro hromadné operace načítání dat z Azure Storage
Platí pro: SQL Server 2017 (14.x) a novější verze
Pro hromadné operace pomocí funkce BULK INSERT nebo OPENROWSET použijte následující zdroj dat. Přihlašovací údaje musí být nastavené SHARED ACCESS SIGNATURE
jako identita, nesmí mít v tokenu SAS počáteční ?
oprávnění, musí mít alespoň oprávnění ke čtení souboru, který by se měl načíst (například srt=o&sp=r
) a doba vypršení platnosti by měla být platná (všechna data jsou v čase UTC). Další informace o sdílených přístupových podpisech najdete v tématu Použití sdílených přístupových podpisů (SAS).
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
-- Remove ? from the beginning of the SAS token
SECRET = '<azure_storage_account_key>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
LOCATION = 'https://newinvoices.blob.core.windows.net/week3',
CREDENTIAL = AccessAzureInvoices,
TYPE = BLOB_STORAGE
);
Pokud se chcete podívat na tento příklad, podívejte se na příkaz BULK INSERT.
Související obsah
- ALTER EXTERNAL DATA SOURCE (Transact-SQL)
- Vytvořit přihlašovací údaje k databázi (Transact-SQL)
- CREATE EXTERNAL FILE FORMAT (Transact-SQL)
- VYTVOŘIT EXTERNÍ TABULKU (Transact-SQL)
- sys.external_data_sources (Transact-SQL)
- Použití sdílených přístupových podpisů (SAS)
- Konfigurace připojení PolyBase (Transact-SQL)
Přehled: SQL Server 2019
platí pro: SQL Server 2019 (15.x)
Vytvoří externí zdroj dat pro dotazy PolyBase. Externí zdroje dat slouží k navázání připojení a podpoře těchto primárních případů použití:
- Virtualizace dat a načítání dat pomocí PolyBase na SQL Serveru
- Operace hromadného načítání s využitím
BULK INSERT
neboOPENROWSET
Poznámka:
Tato syntaxe se liší v různých verzích SQL Serveru. K výběru vhodné verze použijte rozevírací seznam selektoru verzí.
Informace o funkcích SQL Serveru 2022 (16.x) najdete v tématu VYTVOŘENÍ EXTERNÍHO ZDROJE DAT.
Poznámka:
Tato syntaxe se liší v různých verzích SQL Serveru. K výběru vhodné verze použijte rozevírací seznam selektoru verzí.
Informace o funkcích SQL Serveru 2022 (16.x) najdete v tématu VYTVOŘENÍ EXTERNÍHO ZDROJE DAT.
Syntaxe pro SQL Server 2019
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] PUSHDOWN = { ON | OFF } ]
[ [ , ] TYPE = { HADOOP | BLOB_STORAGE } ]
[ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' ]
)
[ ; ]
Argumenty
data_source_name
Určuje uživatelem definovaný název zdroje dat. Název musí být jedinečný v rámci databáze na SQL Serveru.
LOCATION = '<prefix>://<path[:p ort]>'
Poskytuje protokol připojení a cestu k externímu zdroji dat.
Externí zdroj dat | Předpona umístění konektoru | Cesta k lokaci | Podporovaná umístění podle produktu nebo služby | Autentizace |
---|---|---|---|---|
Cloudera CDH nebo Hortonworks HDP | hdfs |
<Namenode>[:port] |
SQL Server 2016 (13.x) na SQL Server 2019 (15.x) | Anonymní nebo základní ověřování |
Účet služby Azure Storage (V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Počínaje SQL Serverem 2016 (13.x) Hierarchický obor názvů není podporován. |
Klíč účtu služby Azure Storage |
SQL Server | sqlserver |
<server_name>[\<instance_name>][:port] |
Počínaje SQL Serverem 2019 (15.x) | Pouze ověřování SQL |
Věštírna | oracle |
<server_name>[:port] |
Počínaje SQL Serverem 2019 (15.x) | Pouze základní ověřování |
Teradata | teradata |
<server_name>[:port] |
Počínaje SQL Serverem 2019 (15.x) | Pouze základní ověřování |
MongoDB nebo cosmos DB API pro MongoDB | mongodb |
<server_name>[:port] |
Počínaje SQL Serverem 2019 (15.x) | Pouze základní ověřování |
Obecné ODBC | odbc |
<server_name>[:port] |
Od SQL Serveru 2019 (15.x) – jenom Windows | Pouze základní ověřování |
Hromadné operace | https |
<storage_account>.blob.core.windows.net/<container> |
Počínaje SQL Serverem 2017 (14.x) | Sdílený přístupový podpis (SAS) |
Azure Data Lake Storage Gen2 | abfs[s] |
abfss://<container>@<storage _account>.dfs.core.windows.net |
Počínaje SQL Serverem 2019 (15.x) CU11+. | Přístupový klíč úložiště |
Fond dat clusterů s velkými objemy dat SQL Serveru | sqldatapool |
sqldatapool://controller-svc/default |
Podporováno pouze v clusterech s velkými objemy dat SQL Serveru 2019 | Pouze základní ověřování |
Fond úložiště clusterů s velkými objemy dat SQL Serveru | sqlhdfs |
sqlhdfs://controller-svc/default |
Podporováno pouze v clusterech s velkými objemy dat SQL Serveru 2019 | Pouze základní ověřování |
Cesta k umístění:
-
<Namenode>
= název počítače, identifikátor URI služby name nebo IP adresa clusteruNamenode
Hadoop. PolyBase musí přeložit všechny názvy DNS používané clusterem Hadoop. -
port
= Port, na který externí zdroj dat naslouchá. V Hadoopu najdete port pomocí konfiguračního parametrufs.defaultFS
. Výchozí hodnota je 8020. -
<container>
= kontejner účtu úložiště, ve kterém jsou uložená data. Kořenové kontejnery jsou jen pro čtení, data se nedají zapsat zpět do kontejneru. -
<storage_account>
= název účtu úložiště prostředku Azure. -
<server_name>
= název hostitele. -
<instance_name>
= název pojmenované instance SQL Serveru. Používá se, pokud máte službu SQL Server Browser spuštěnou v cílové instanci.
Další poznámky a pokyny při nastavování umístění:
- Databázový stroj SQL Serveru při vytváření objektu neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.
- Při dotazování Hadoopu použijte stejný externí zdroj dat pro všechny tabulky, abyste zajistili konzistentní sémantiku dotazování.
- Konektor můžete použít
sqlserver
k připojení SQL Serveru 2019 (15.x) k jinému SQL Serveru nebo k Azure SQL Database. -
Driver={<Name of Driver>}
Zadejte při připojování přesODBC
. - Použití
wasbs
neboabfss
je volitelné, ale doporučuje se v SQL Serveru 2019 (15.x) pro přístup k účtům azure Storage, protože se budou odesílat data pomocí zabezpečeného připojení TLS/SSL. - Rozhraní
abfs
API neboabfss
rozhraní API se podporují při přístupu k účtům azure Storage počínaje SQL Serverem 2019 (15.x) CU11. Další informace najdete v ovladači systému souborů Azure Blob (ABFS). - Možnost Hierarchický obor názvů pro účty Azure Storage (V2) používající
abfs[s]
se podporuje prostřednictvím Azure Data Lake Storage Gen2 počínaje SQL Serverem 2019 (15.x) CU11+. Možnost Hierarchický obor názvů není jinak podporovaná a tato možnost by měla zůstat zakázaná. - Pokud chcete zajistit úspěšné dotazy PolyBase během převzetí služeb při selhání Hadoopu
Namenode
, zvažte použití virtuální IP adresy proNamenode
cluster Hadoop. Pokud ne, spusťte PŘÍKAZ ALTER EXTERNAL DATA SOURCE tak, aby odkazovat na nové umístění. - Typy
sqlhdfs
asqldatapool
typy se podporují pro připojení mezi hlavní instancí a fondem úložiště clusteru s velkými objemy dat. Pro Cloudera CDH nebo Hortonworks HDP použijtehdfs
. Další informace o použitísqlhdfs
pro dotazování fondů úložišť sql Serveru pro velké objemy dat najdete v tématu Dotazování HDFS v clusteru s velkými objemy dat SQL Serveru 2019. - Podpora SQL Serveru pro externí zdroje dat HDFS Cloudera (CDP) a Hortonworks (HDP) byla vyřazena a není součástí SQL Serveru 2022 (16.x) a novějších verzí. Další informace najdete v tématu možnosti velkých objemů dat na platformě Microsoft SQL Server.
CONNECTION_OPTIONS = key_value_pair
Určeno pro SQL Server 2019 (15.x) a novější verze. Určuje další možnosti při připojování ODBC
k externímu zdroji dat. Pokud chcete použít více možností připojení, oddělte je středníkem.
Platí pro obecná ODBC
připojení a také integrované ODBC
konektory pro SQL Server, Oracle, Teradata, MongoDB a rozhraní API služby Azure Cosmos DB pro MongoDB.
Jedná se key_value_pair
o klíčové slovo a hodnotu konkrétní možnosti připojení. Dostupná klíčová slova a hodnoty závisí na typu externího zdroje dat. Název ovladače se vyžaduje minimálně, ale existují i další možnosti, jako APP='<your_application_name>'
jsou nebo ApplicationIntent= ReadOnly|ReadWrite
které jsou také užitečné k nastavení a můžou vám pomoct s řešením potíží.
Možné páry klíč-hodnota jsou specifické pro poskytovatele externího zdroje dat dodavatele. Další informace pro každého zprostředkovatele naleznete v tématu CREATE EXTERNAL DATA SOURCE (Transact-SQL) CONNECTION_OPTIONS.
Počínaje kumulativní aktualizací 19 SQL Serveru 2019 (15.x) byly zavedeny další klíčová slova pro podporu souborů Oracle TNS:
- Klíčové slovo
TNSNamesFile
určuje cestu k souboru umístěnémutnsnames.ora
na serveru Oracle. - Klíčové slovo
ServerName
určuje alias použitý uvnitřtnsnames.ora
, který se použije k nahrazení názvu hostitele a portu.
Posun = ZAPNUTO | PRYČ
Určeno pouze pro SQL Server 2019 (15.x). Uvádí, zda je možné výpočty odeslat do externího zdroje dat. Ve výchozím nastavení je zapnutá .
PUSHDOWN
se podporuje při připojování k SQL Serveru, Oracle, Teradata, MongoDB, rozhraní API služby Azure Cosmos DB pro MongoDB nebo ODBC na úrovni externího zdroje dat.
Povolení nebo zakázání nabízení na úrovni dotazu se dosahuje pomocí nápovědy EXTERNALPUSHDOWN.
CREDENTIAL = credential_name
Určuje přihlašovací údaje s oborem databáze pro ověřování v externím zdroji dat.
Další poznámky a pokyny při vytváření přihlašovacích údajů:
-
CREDENTIAL
vyžaduje se pouze v případě, že jsou data zabezpečená.CREDENTIAL
nevyžaduje se u datových sad, které umožňují anonymní přístup. - Pokud se přihlašovací
TYPE
=BLOB_STORAGE
údaje musí vytvořit jakoSHARED ACCESS SIGNATURE
identita. -
TYPE
=BLOB_STORAGE
je povolena pouze pro hromadné operace; Nelze vytvořit externí tabulky pro externí zdroj dat sTYPE
=BLOB_STORAGE
.
Sdílený přístupový podpis můžete vytvořit několika způsoby:
Token SAS můžete vytvořit tak, že přejdete na web Azure Portal -><Your_Storage_Account> –> Sdílený přístupový podpis –> Konfigurace oprávnění –> Vygenerování SAS a připojovacího řetězce. Další informace najdete v tématu Generování sdíleného přístupového podpisu.
Sas můžete vytvořit a nakonfigurovat pomocí Průzkumníka služby Azure Storage.
Token SAS můžete vytvořit programově prostřednictvím PowerShellu, Azure CLI, .NET a rozhraní REST API. Další informace najdete v tématu Udělení omezeného přístupu k prostředkům Azure Storage pomocí sdílených přístupových podpisů (SAS).
Token SAS by měl být nakonfigurovaný takto:
- Když se vygeneruje token SAS, obsahuje na začátku tokenu otazník (?). Při konfiguraci tajného kódu vyloučí počáteční
?
. - Použijte platnou dobu vypršení platnosti (všechna data jsou v čase UTC).
- Když se vygeneruje token SAS, obsahuje na začátku tokenu otazník (?). Při konfiguraci tajného kódu vyloučí počáteční
Udělte alespoň oprávnění ke čtení souboru, který by se měl načíst (například
srt=o&sp=r
). Pro různé případy použití je možné vytvořit více sdílených přístupových podpisů. Oprávnění by měla být udělena následujícím způsobem:Činnost Povolení Čtení dat ze souboru Čti Čtení dat z více souborů a podsložek Číst a seznamovat
Příklad použití příkazu CREDENTIAL
with SHARED ACCESS SIGNATURE
aTYPE
= BLOB_STORAGE
, viz Vytvoření externího zdroje dat pro provádění hromadných operací a načtení dat ze služby Azure Storage do SQL Database
Pokud chcete vytvořit přihlašovací údaje s vymezeným oborem databáze, přečtěte si téma CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
TYPE = * [ HADOOP | BLOB_STORAGE ] *
Určuje typ nakonfigurovaného externího zdroje dat. Tento parametr není vždy povinný a měl by být zadán pouze při připojování k Cloudera CDH, Hortonworks HDP, účtu Azure Storage nebo Azure Data Lake Storage Gen2.
- V SQL Serveru 2019 (15.x) nezadávejte TYP, pokud se nepřipojíte ke cloudera CDH, Hortonworks HDP, účtu Azure Storage.
- Použijte
HADOOP
, když externí zdroj dat je Cloudera CDH, Hortonworks HDP, účet Azure Storage nebo Azure Data Lake Storage Gen2. - Používá se
BLOB_STORAGE
při provádění hromadných operací z účtu služby Azure Storage pomocí příkazu BULK INSERT nebo OPENROWSET s SQL Serverem 2017 (14.x). SloužíHADOOP
k vytvoření externí tabulky pro Azure Storage. - Podpora SQL Serveru pro externí zdroje dat HDFS Cloudera (CDP) a Hortonworks (HDP) byla vyřazena a není součástí SQL Serveru 2022 (16.x) a novějších verzí. Další informace najdete v tématu možnosti velkých objemů dat na platformě Microsoft SQL Server.
Příklad použití TYPE
= HADOOP
k načtení dat z účtu Azure Storage najdete v tématu Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Storage pomocí rozhraní wasb://.
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
V SQL Serveru 2019 (15.x) nezadávejte RESOURCE_MANAGER_LOCATION, pokud se nepřipojíte ke cloudera CDH, Hortonworks HDP, účtu Azure Storage.
Tuto volitelnou hodnotu nakonfigurujte pouze při připojování k Cloudera CDH, Hortonworks HDP nebo účtu Azure Storage. Úplný seznam podporovaných verzí Hadoopu najdete v tématu Konfigurace připojení PolyBase.
RESOURCE_MANAGER_LOCATION
Když je definován, optimalizátor dotazů provede rozhodnutí na základě nákladů za účelem zlepšení výkonu. Úlohu MapReduce lze použít k posunu výpočtů do Hadoopu. Určení RESOURCE_MANAGER_LOCATION
může výrazně snížit objem dat přenášených mezi Hadoopem a SQL Serverem, což může vést ke zlepšení výkonu dotazů.
Pokud není Zadaný Resource Manager, je nabízení výpočetních prostředků do Hadoopu zakázané pro dotazy PolyBase. Vytvoření externího zdroje dat pro odkazování na Hadoop s povoleným push-down poskytuje konkrétní příklad a další pokyny.
Hodnota RESOURCE_MANAGER_LOCATION se při vytváření externího zdroje dat neověřuje. Zadání nesprávné hodnoty může způsobit selhání dotazu při spuštění při každém pokusu o nasdílení změn, protože zadaná hodnota by nebyla schopna vyřešit.
Aby polyBase fungovala správně s externím zdrojem dat Hadoop, musí být otevřené porty pro následující komponenty clusteru Hadoop:
- Porty HDFS
- Uzel NameNode
- Datový uzel
- Resource Manager
- Odeslání úlohy
- Historie úlohy
Pokud není port zadaný, zvolí se výchozí hodnota s použitím aktuálního nastavení pro konfiguraci připojení hadoop.
Připojení Hadoopu | Výchozí port Resource Manageru |
---|---|
1 |
50300 |
2 |
50300 |
3 |
8021 |
4 |
8032 |
5 |
8050 |
6 |
8032 |
7 |
8050 |
8 |
8032 |
Následující tabulka uvádí výchozí porty pro tyto komponenty. Existuje závislost na verzi Hadoopu i možnost vlastní konfigurace, která nepoužívá výchozí přiřazení portu.
Komponenta clusteru Hadoop | Výchozí port |
---|---|
Uzel NameNode | 8020 |
Datový uzel (přenos dat, port IPC bez oprávnění) | 50010 |
Datový uzel (přenos dat, port IPC oprávnění) | 1019 |
Odeslání úlohy Resource Manageru (Hortonworks 1.3) | 50300 |
Odeslání úlohy Resource Manageru (Cloudera 4.3) | 8021 |
Odeslání úlohy Resource Manageru (Hortonworks 2.0 ve Windows, Cloudera 5.x v Linuxu) | 8032 |
Odeslání úlohy Resource Manageru (Hortonworks 2.x, 3.0 v Linuxu, Hortonworks 2.1-3 ve Windows) | 8050 |
Historie úloh Resource Manageru | 10020 |
Povolení
Vyžaduje CONTROL
oprávnění k databázi na SQL Serveru.
Uzamčení
Vezme sdílený zámek objektu EXTERNAL DATA SOURCE
.
Bezpečnost
PolyBase podporuje ověřování na základě proxy serveru pro většinu externích zdrojů dat. Vytvořte přihlašovací údaje s vymezeným oborem databáze a vytvořte účet proxy serveru.
Když se připojíte k úložišti nebo fondu dat v clusteru s velkými objemy dat SQL Serveru 2019, předají se přihlašovací údaje uživatele do back-endového systému. Vytvořte přihlášení v samotném fondu dat, abyste povolili předávací ověřování.
Token SAS s typem HADOOP
není podporován. Podporuje se pouze u typu = BLOB_STORAGE
při použití přístupového klíče účtu úložiště. Pokus o vytvoření externího zdroje dat s typem HADOOP
a přihlašovací údaje SAS selžou s následující chybou:
Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account are not valid.: Error [Parameters provided to connect to the Azure storage account are not valid.] occurred while accessing external file.'
Příklady
Důležité
Informace o instalaci a povolení PolyBase naleznete v tématu Instalace PolyBase ve Windows.
A. Vytvoření externího zdroje dat v SQL Serveru 2019 pro referenci na Oracle
Pokud chcete vytvořit externí zdroj dat, který odkazuje na Oracle, ujistěte se, že máte přihlašovací údaje v oboru databáze. Volitelně můžete také povolit nebo zakázat nabízení výpočtů u tohoto zdroje dat.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CREDENTIAL = OracleProxyAccount,
PUSHDOWN = ON
);
Volitelně může externí zdroj dat oracle použít ověřování proxy serverem k zajištění podrobného řízení přístupu. Uživatele proxy serveru je možné nakonfigurovat tak, aby měl omezený přístup v porovnání s uživatelem, který se zosobní.
CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential]
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER',
CREDENTIAL = [OracleProxyCredential]
);
Případně můžete použít ověřování TNS.
Počínaje kumulativní aktualizací SQL Serveru 2019 (15.x) 19 CREATE EXTERNAL DATA SOURCE
teď podporuje použití souborů TNS při připojování k Oracle.
Parametr CONNECTION_OPTIONS
byl rozbalený a nyní se používá TNSNamesFile
a ServerName
jako proměnné slouží k procházení tnsnames.ora
souboru a navázání připojení k serveru.
V následujícím příkladu bude sql Server za běhu hledat tnsnames.ora
umístění souboru určeného TNSNamesFile
a hledat hostitele a síťový port určený ServerName
.
CREATE EXTERNAL DATA SOURCE [external_data_source_name]
WITH (
LOCATION = N'oracle://XE',
CREDENTIAL = [OracleCredentialTest],
CONNECTION_OPTIONS = N'TNSNamesFile=C:\Temp\tnsnames.ora;ServerName=XE'
);
Další příklady pro jiné zdroje dat, jako je MongoDB, najdete v tématu Konfigurace PolyBase pro přístup k externím datům v MongoDB.
B. Vytvoření externího zdroje dat pro odkazování na Hadoop
Pokud chcete vytvořit externí zdroj dat, který bude odkazovat na cluster Hortonworks HDP nebo Cloudera CDH Hadoop, zadejte název počítače nebo IP adresu Hadoopu Namenode
a portu.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8050',
TYPE = HADOOP
);
C. Vytvoření externího zdroje dat pro odkazování na Hadoop s povoleným push-down
RESOURCE_MANAGER_LOCATION
Zadejte možnost povolení výpočtu push-down do Hadoopu pro dotazy PolyBase. Jakmile je tato možnost povolená, polyBase provede rozhodnutí na základě nákladů, které určí, jestli se má výpočet dotazu odeslat do Hadoopu.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8020',
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. Vytvoření externího zdroje dat pro odkazování na Hadoop zabezpečený protokolem Kerberos
Pokud chcete ověřit, jestli je cluster Hadoop zabezpečený protokolem Kerberos, zkontrolujte hodnotu hadoop.security.authentication
vlastnosti v systému Hadoop core-site.xml. Pokud chcete odkazovat na cluster Hadoop zabezpečený protokolem Kerberos, musíte zadat přihlašovací údaje s oborem databáze, které obsahují vaše uživatelské jméno a heslo kerberos. Hlavní klíč databáze slouží k šifrování tajného klíče přihlašovacích údajů s vymezeným oborem databáze.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH IDENTITY = '<hadoop_user_name>',
SECRET = '<hadoop_password>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
E. Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Storage pomocí rozhraní wasb://
V tomto příkladu je externím zdrojem dat účet azure V2 Storage s názvem logs
. Kontejner úložiště se nazývá daily
. Externí zdroj dat Azure Storage je určený pouze pro přenos dat. Nepodporuje predikát push-down. Hierarchické obory názvů nejsou podporovány při přístupu k datům přes wasb://
rozhraní. Při připojování ke službě Azure Storage prostřednictvím wasb
nebo wasbs
musí být ověřování provedeno pomocí klíče účtu úložiště, nikoli se sdíleným přístupovým podpisem (SAS).
Tento příklad ukazuje, jak vytvořit přihlašovací údaje s vymezeným oborem databáze pro ověřování k účtu azure V2 Storage. Zadejte klíč účtu služby Azure Storage v tajném klíči přihlašovacích údajů databáze. V identitě přihlašovacích údajů s vymezeným oborem databáze můžete zadat libovolný řetězec, protože se nepoužívá při ověřování ve službě Azure Storage.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential,
TYPE = HADOOP
);
F. Vytvoření externího zdroje dat pro odkazování na pojmenovanou instanci SQL Serveru prostřednictvím připojení PolyBase
platí pro: SQL Server 2019 (15.x) a novější
Chcete-li vytvořit externí zdroj dat, který odkazuje na pojmenovanou instanci SQL Serveru, použijte CONNECTION_OPTIONS
k určení názvu instance.
V následujícím příkladu WINSQL2019
je název hostitele a SQL2019
je to název instance.
'Server=%s\SQL2019'
je pár klíč-hodnota.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019',
CONNECTION_OPTIONS = 'Server=%s\SQL2019',
CREDENTIAL = SQLServerCredentials
);
Případně můžete použít port pro připojení k výchozí instanci SQL Serveru.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019:58137',
CREDENTIAL = SQLServerCredentials
);
G. Vytvoření externího zdroje dat pro odkazování na čitelný sekundární repliku skupiny dostupnosti AlwaysOn
platí pro: SQL Server 2019 (15.x) a novější
Chcete-li vytvořit externí zdroj dat, který odkazuje na čitelný sekundární repliku SYSTÉMU SQL Server, použijte CONNECTION_OPTIONS
k určení ApplicationIntent=ReadOnly
. Kromě toho budete muset buď nastavit databázi dostupnosti jako Database={dbname}
in CONNECTION_OPTIONS
, nebo nastavit databázi dostupnosti jako výchozí databázi přihlášení použitého pro přihlašovací údaje v oboru databáze. Budete to muset provést u všech replik dostupnosti skupiny dostupnosti.
Nejprve vytvořte přihlašovací údaje s vymezeným oborem databáze a uložíte přihlašovací údaje pro ověřené přihlášení SQL. Konektor SQL ODBC pro PolyBase podporuje pouze základní ověřování. Před vytvořením přihlašovacích údajů s vymezeným oborem databáze musí mít databáze hlavní klíč pro ochranu přihlašovacích údajů. Další informace naleznete v tématu CREATE MASTER KEY. Následující ukázka vytvoří přihlašovací údaje s vymezeným oborem databáze a poskytne vlastní přihlašovací údaje a heslo.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username',
SECRET = 'password';
Dále vytvořte nový externí zdroj dat.
Bez ohledu na Database=dbname
to, jestli jste do databáze dostupnosti zahrnuli CONNECTION_OPTIONS
nebo nastavili výchozí databázi pro přihlášení v přihlašovacích údajích s vymezeným oborem databáze, musíte v parametru LOCATION zadat název databáze prostřednictvím názvu třídílné části příkazu CREATE EXTERNAL TABLE. Příklad najdete v tématu VYTVOŘENÍ EXTERNÍ TABULKY.
V následujícím příkladu WINSQL2019AGL
je název naslouchacího procesu skupiny dostupnosti a dbname
je to název databáze, která má být cílem příkazu CREATE EXTERNAL TABLE.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = SQLServerCredentials
);
Chování přesměrování skupiny dostupnosti můžete předvést zadáním ApplicationIntent
a vytvořením externí tabulky v systémovém zobrazení sys.servers
. V následujícím ukázkovém skriptu se vytvoří dva externí zdroje dat a pro každou z nich se vytvoří jedna externí tabulka. Pomocí zobrazení otestujte, který server reaguje na připojení. Podobné výsledky je možné dosáhnout také pomocí funkce směrování jen pro čtení. Další informace najdete v tématu Konfigurace směrování jen pro čtení pro skupinu dostupnosti AlwaysOn.
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadOnlyIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = [SQLServerCredentials]
);
GO
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadWriteIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadWrite',
CREDENTIAL = [SQLServerCredentials]
);
GO
Uvnitř databáze ve skupině dostupnosti vytvořte zobrazení pro vrácení sys.servers
a název místní instance, která vám pomůže identifikovat repliku, která odpovídá na dotaz. Další informace naleznete v tématu sys.servers.
CREATE VIEW vw_sys_servers
AS
SELECT [name]
FROM sys.servers
WHERE server_id = 0;
GO
Pak ve zdrojové instanci vytvořte externí tabulku:
CREATE EXTERNAL TABLE vw_sys_servers_ro (name SYSNAME NOT NULL)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadOnlyIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
CREATE EXTERNAL TABLE vw_sys_servers_rw (name SYSNAME NOT NULL)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadWriteIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
SELECT [name]
FROM dbo.vw_sys_servers_ro;--should return secondary replica instance
SELECT [name]
FROM dbo.vw_sys_servers_rw;--should return primary replica instance
GO
Příklady: Hromadné operace
Důležité
Při konfiguraci externího / zdroje dat pro hromadné operace nepřidávejte LOCATION
koncové parametry, název souboru ani parametry sdíleného přístupového podpisu na konci adresy URL.
H. Vytvoření externího zdroje dat pro hromadné operace načítání dat z Azure Storage
Platí pro: SQL Server 2017 (14.x) a SQL Server 2019 (15.x)
Pro hromadné operace pomocí funkce BULK INSERT nebo OPENROWSET použijte následující zdroj dat. Přihlašovací údaje musí být nastavené SHARED ACCESS SIGNATURE
jako identita, nesmí mít v tokenu SAS počáteční ?
oprávnění, musí mít alespoň oprávnění ke čtení souboru, který by se měl načíst (například srt=o&sp=r
) a doba vypršení platnosti by měla být platná (všechna data jsou v čase UTC). Další informace o sdílených přístupových podpisech najdete v tématu Použití sdílených přístupových podpisů (SAS).
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
-- Remove ? from the beginning of the SAS token
SECRET = '<azure_shared_access_signature>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
LOCATION = 'https://newinvoices.blob.core.windows.net/week3',
CREDENTIAL = AccessAzureInvoices,
TYPE = BLOB_STORAGE
);
Pokud se chcete podívat na tento příklad, podívejte se na příkaz BULK INSERT.
Já. Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Storage pomocí rozhraní abfs://
Platí pro: SQL Server 2019 (15.x) CU11 a novější
V tomto příkladu je externím zdrojem dat účet logs
Azure Data Lake Storage Gen2, který používá ovladač systému souborů Azure Blob (ABFS). Kontejner úložiště se nazývá daily
. Externí zdroj dat Azure Data Lake Storage Gen2 je určený jenom pro přenos dat, protože predikát push-down se nepodporuje.
Tento příklad ukazuje, jak vytvořit přihlašovací údaje s vymezeným oborem databáze pro ověřování k účtu Azure Data Lake Storage Gen2. Zadejte klíč účtu služby Azure Storage v tajném klíči přihlašovacích údajů databáze. V identitě přihlašovacích údajů s vymezeným oborem databáze můžete zadat libovolný řetězec, protože se nepoužívá při ověřování ve službě Azure Storage.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'abfss://daily@logs.dfs.core.windows.net/',
CREDENTIAL = AzureStorageCredential,
TYPE = HADOOP
);
J. Vytvoření externího zdroje dat pomocí obecného rozhraní ODBC do PostgreSQL
Stejně jako v předchozích příkladech nejprve vytvořte hlavní klíč databáze a přihlašovací údaje v oboru databáze. Přihlašovací údaje v oboru databáze se použijí pro externí zdroj dat. Tento příklad také předpokládá, že na serveru je nainstalovaný obecný zprostředkovatel dat ODBC pro PostgreSQL.
V tomto příkladu se obecný zprostředkovatel dat ODBC používá k připojení k databázovému serveru PostgreSQL ve stejné síti, kde plně kvalifikovaný název domény serveru PostgreSQL je POSTGRES1
s použitím výchozího portu TCP 5432.
CREATE EXTERNAL DATA SOURCE POSTGRES1
WITH (
LOCATION = 'odbc://POSTGRES1.domain:5432',
CONNECTION_OPTIONS = 'Driver={PostgreSQL Unicode(x64)};',
CREDENTIAL = postgres_credential
);
Související obsah
- ALTER EXTERNAL DATA SOURCE (Transact-SQL)
- Vytvořit přihlašovací údaje k databázi (Transact-SQL)
- CREATE EXTERNAL FILE FORMAT (Transact-SQL)
- VYTVOŘIT EXTERNÍ TABULKU (Transact-SQL)
- sys.external_data_sources (Transact-SQL)
- Použití sdílených přístupových podpisů (SAS)
- Konfigurace připojení PolyBase (Transact-SQL)
Přehled: SQL Server 2022
platí pro: SQL Server 2022 (16.x) a novější verze
Vytvoří externí zdroj dat pro dotazy PolyBase. Externí zdroje dat slouží k navázání připojení a podpoře těchto primárních případů použití:
- Virtualizace dat a načítání dat pomocí PolyBase na SQL Serveru
- Operace hromadného načítání s využitím
BULK INSERT
neboOPENROWSET
Poznámka:
Tato syntaxe se liší v různých verzích SQL Serveru. K výběru vhodné verze použijte rozevírací seznam selektoru verzí. Tento obsah platí pro SQL Server 2022 (16.x) a novější verze.
Syntaxe pro SQL Server 2022
Syntaxe pro SQL Server 2022 a novější verze
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] PUSHDOWN = { ON | OFF } ]
)
[ ; ]
Argumenty
data_source_name
Určuje uživatelem definovaný název zdroje dat. Název musí být jedinečný v rámci databáze na SQL Serveru.
LOCATION = '<prefix>://<path[:p ort]>'
Poskytuje protokol připojení a cestu k externímu zdroji dat.
Externí zdroj dat | Předpona umístění konektoru | Cesta k lokaci | Podporovaná umístění podle produktu nebo služby | Autentizace |
---|---|---|---|---|
Účet úložiště Azure (V2) | abs |
abs://<container_name>@<storage_account_name>.blob.core.windows.net/ nebo abs://<storage_account_name>.blob.core.windows.net/<container_name> |
Počínaje SQL Serverem 2022 (16.x) Podporuje se hierarchický obor názvů. |
Sdílený přístupový podpis (SAS) |
Azure Data Lake Storage Gen2 | adls |
adls://<container_name>@<storage_account_name>.dfs.core.windows.net/ nebo adls://<storage_account_name>.dfs.core.windows.net/<container_name> |
Počínaje SQL Serverem 2022 (16.x) | Sdílený přístupový podpis (SAS) |
SQL Server | sqlserver |
<server_name>[\<instance_name>][:port] |
Počínaje SQL Serverem 2019 (15.x) | Pouze ověřování SQL |
Věštírna | oracle |
<server_name>[:port] |
Počínaje SQL Serverem 2019 (15.x) | Pouze základní ověřování |
Teradata | teradata |
<server_name>[:port] |
Počínaje SQL Serverem 2019 (15.x) | Pouze základní ověřování |
MongoDB nebo cosmos DB API pro MongoDB | mongodb |
<server_name>[:port] |
Počínaje SQL Serverem 2019 (15.x) | Pouze základní ověřování |
Obecné ODBC | odbc |
<server_name>[:port] |
Od SQL Serveru 2019 (15.x) – jenom Windows | Pouze základní ověřování |
Hromadné operace | https |
<storage_account>.blob.core.windows.net/<container> |
Počínaje SQL Serverem 2017 (14.x) | Sdílený přístupový podpis (SAS) |
Úložiště objektů kompatibilní s S3 | s3 |
- Kompatibilní s S3: s3://<server_name>:<port>/ – AWS S3: s3://<bucket_name>.S3.amazonaws.com[:port]/<folder> nebo s3://s3.amazonaws.com[:port]/<bucket_name>/<folder> |
Počínaje SQL Serverem 2022 (16.x) | Základní nebo průchozí (STS) * |
* Musí to být přihlašovací údaje s oborem databáze, kde identita je pevně zakódovaná IDENTITY = 'S3 Access Key'
a argument SECRET je ve formátu = '<AccessKeyID>:<SecretKeyID>'
nebo používá předávací autorizaci (STS). Další informace naleznete v tématu Konfigurace PolyBase pro přístup k externím datům v úložišti objektů kompatibilním s S3.
Cesta k umístění:
-
port
= Port, na který externí zdroj dat naslouchá. Volitelné v mnoha případech v závislosti na konfiguraci sítě. -
<container_name>
= kontejner účtu úložiště, ve kterém jsou uložená data. Kořenové kontejnery jsou jen pro čtení, data se nedají zapsat zpět do kontejneru. -
<storage_account>
= název účtu úložiště prostředku Azure. -
<server_name>
= název hostitele. -
<instance_name>
= název pojmenované instance SQL Serveru. Používá se, pokud máte službu SQL Server Browser spuštěnou v cílové instanci. -
<ip_address>:<port>
= Pouze pro úložiště objektů kompatibilní s S3 (počínaje SQL Serverem 2022 (16.x)) je koncový bod a port použitý pro připojení k úložišti kompatibilnímu s S3. -
<bucket_name>
= Pouze pro úložiště objektů kompatibilní s S3 (počínaje SQL Serverem 2022 (16.x)), specifické pro platformu úložiště. -
<region>
= Pouze pro úložiště objektů kompatibilní s S3 (počínaje SQL Serverem 2022 (16.x)), specifické pro platformu úložiště. -
<folder>
= Část cesty k úložišti v rámci adresy URL úložiště.
Další poznámky a pokyny při nastavování umístění:
- Databázový stroj SQL Serveru při vytváření objektu neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.
- Konektor můžete použít
sqlserver
k připojení SQL Serveru 2019 (15.x) k jinému SQL Serveru nebo k Azure SQL Database. -
Driver={<Name of Driver>}
Zadejte při připojování přesODBC
. - Možnost Hierarchický obor názvů pro účty Azure Storage (V2) používající předponu
adls
se podporuje prostřednictvím Azure Data Lake Storage Gen2 v SQL Serveru 2022 (16.x).
- Podpora SQL Serveru pro externí zdroje dat HDFS Cloudera (CDP) a Hortonworks (HDP) se vyřazuje z provozu a nezahrnuje SQL Server 2022 (16.x). Argument TYPE v SQL Serveru 2022 (16.x) není nutné používat.
- Další informace o úložišti objektů kompatibilních s S3 a PolyBase od SQL Serveru 2022 (16.x) najdete v tématu Konfigurace PolyBase pro přístup k externím datům v úložišti objektů kompatibilním s S3. Příklad dotazování souboru parquet v úložišti objektů kompatibilních s S3 najdete v tématu Virtualizace souboru parquet v úložišti objektů kompatibilním s S3 pomocí PolyBase.
- Liší se od předchozích verzí, v SQL Serveru 2022 (16.x) se předpona použitá pro účet úložiště Azure (v2) změnila z
wasb[s]
naabs
. - Rozdíl od předchozích verzí, v SQL Serveru 2022 (16.x), předpona použitá pro Azure Data Lake Storage Gen2 se změnila z
abfs[s]
naadls
. - Příklad použití PolyBase k virtualizaci souboru CSV ve službě Azure Storage najdete v tématu Virtualizace souboru CSV pomocí PolyBase.
- Příklad použití PolyBase k virtualizaci rozdílové tabulky v ADLS Gen2 naleznete v tématu Virtualize delta table with PolyBase.
- SQL Server 2022 (16.x) plně podporuje dva formáty adres URL pro účet Azure Storage verze 2 (
abs
) i Azure Data Lake Gen2 (adls
).- Cesta UMÍSTĚNÍ může používat formáty:
<container>@<storage_account_name>..
(doporučeno) nebo<storage_account_name>../<container>
. Například:- Účet služby Azure Storage v2:
abs://<container>@<storage_account_name>.blob.core.windows.net
(doporučeno) neboabs://<storage_account_name>.blob.core.windows.net/<container>
.
- Účet služby Azure Storage v2:
- Cesta UMÍSTĚNÍ může používat formáty:
- Azure Data Lake Gen2 podporuje:
adls://<container>@<storage_account_name>.blob.core.windows.net
(doporučeno) neboadls://<storage_account_name>.dfs.core.windows.net/<container>
.
CONNECTION_OPTIONS = key_value_pair
Určeno pro SQL Server 2019 (15.x) a novější verze. Určuje další možnosti při připojování ODBC
k externímu zdroji dat. Pokud chcete použít více možností připojení, oddělte je středníkem.
Platí pro obecná ODBC
připojení a také integrované ODBC
konektory pro SQL Server, Oracle, Teradata, MongoDB a rozhraní API služby Azure Cosmos DB pro MongoDB.
Jedná se key_value_pair
o klíčové slovo a hodnotu konkrétní možnosti připojení. Dostupná klíčová slova a hodnoty závisí na typu externího zdroje dat. Název ovladače se vyžaduje minimálně, ale existují i další možnosti, jako APP='<your_application_name>'
jsou nebo ApplicationIntent= ReadOnly|ReadWrite
které jsou také užitečné k nastavení a můžou vám pomoct s řešením potíží.
Možné páry klíč-hodnota jsou specifické pro ovladač. Další informace pro každého zprostředkovatele naleznete v tématu CREATE EXTERNAL DATA SOURCE (Transact-SQL) CONNECTION_OPTIONS.
Počínaje kumulativní aktualizací SQL Serveru 2022 (16.x) byla zavedena další klíčová slova pro podporu souborů Oracle TNS:
- Klíčové slovo
TNSNamesFile
určuje cestu k souboru umístěnémutnsnames.ora
na serveru Oracle. - Klíčové slovo
ServerName
určuje alias použitý uvnitřtnsnames.ora
, který se použije k nahrazení názvu hostitele a portu.
PUSHDOWN = ZAPNUTO | PRYČ
Platí pro: SQL Server 2019 (15.x) a novější verze. Uvádí, zda je možné výpočty odeslat do externího zdroje dat. Je ve výchozím nastavení zapnutý.
PUSHDOWN
se podporuje při připojování k SQL Serveru, Oracle, Teradata, MongoDB, rozhraní API služby Azure Cosmos DB pro MongoDB nebo ODBC na úrovni externího zdroje dat.
Povolení nebo zakázání nabízení na úrovni dotazu se dosahuje pomocí nápovědy EXTERNALPUSHDOWN.
CREDENTIAL = credential_name
Určuje přihlašovací údaje s oborem databáze pro ověřování v externím zdroji dat.
Další poznámky a pokyny při vytváření přihlašovacích údajů:
-
CREDENTIAL
vyžaduje se pouze v případě, že jsou data zabezpečená.CREDENTIAL
nevyžaduje se u datových sad, které umožňují anonymní přístup. - Při přístupu k účtu Azure Storage (V2) nebo Azure Data Lake Storage Gen2
IDENTITY
musí býtSHARED ACCESS SIGNATURE
. - Příklad najdete v tématu Vytvoření externího zdroje dat pro provádění hromadných operací a načtení dat ze služby Azure Storage do služby SQL Database.
Sdílený přístupový podpis můžete vytvořit několika způsoby:
Token SAS můžete vytvořit tak, že přejdete na web Azure Portal -><Your_Storage_Account> –> Sdílený přístupový podpis –> Konfigurace oprávnění –> Vygenerování SAS a připojovacího řetězce. Další informace najdete v tématu Generování sdíleného přístupového podpisu.
Sas můžete vytvořit a nakonfigurovat pomocí Průzkumníka služby Azure Storage.
Token SAS můžete vytvořit programově prostřednictvím PowerShellu, Azure CLI, .NET a rozhraní REST API. Další informace najdete v tématu Udělení omezeného přístupu k prostředkům Azure Storage pomocí sdílených přístupových podpisů (SAS).
Token SAS by měl být nakonfigurovaný takto:
- Když se vygeneruje token SAS, obsahuje na začátku tokenu otazník (?). Při konfiguraci tajného kódu vyloučí počáteční
?
. - Použijte platnou dobu vypršení platnosti (všechna data jsou v čase UTC).
- Když se vygeneruje token SAS, obsahuje na začátku tokenu otazník (?). Při konfiguraci tajného kódu vyloučí počáteční
Udělte alespoň oprávnění ke čtení souboru, který by se měl načíst (například
srt=o&sp=r
). Pro různé případy použití je možné vytvořit více sdílených přístupových podpisů. Oprávnění by měla být udělena následujícím způsobem:Činnost Povolení Čtení dat ze souboru Čti Čtení dat z více souborů a podsložek Číst a seznamovat Použití možnosti Vytvořit externí tabulku jako výběr (CETAS) Čtení, vytvoření, výpis a zápis Pro Azure Blob Storage a Azure Data Lake Gen2:
- Povolené služby: Je nutné vybrat, aby se vygeneroval token SAS.
Blob
- Povolené služby: Je nutné vybrat, aby se vygeneroval token SAS.
Povolené typy prostředků:
Container
aObject
musí být vybrány pro vygenerování tokenu SAS.
Příklad použití CREDENTIAL
úložiště objektů kompatibilních s S3 a PolyBase najdete v tématu Konfigurace PolyBase pro přístup k externím datům v úložišti objektů kompatibilním s S3.
Pokud chcete vytvořit přihlašovací údaje s vymezeným oborem databáze, přečtěte si téma CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
Povolení
Vyžaduje CONTROL
oprávnění k databázi na SQL Serveru.
Uzamčení
Vezme sdílený zámek objektu EXTERNAL DATA SOURCE
.
Bezpečnost
PolyBase podporuje ověřování na základě proxy serveru pro většinu externích zdrojů dat. Vytvořte přihlašovací údaje s vymezeným oborem databáze a vytvořte účet proxy serveru.
Upgrade na SQL Server 2022
Od verze SQL Server 2022 (16.x) se už nepodporují externí zdroje dat Hadoop. Je nutné ručně znovu vytvořit externí zdroje dat vytvořené TYPE = HADOOP
pomocí a všechny externí tabulky, které používají tento externí zdroj dat.
Uživatelé budou také muset nakonfigurovat své externí zdroje dat tak, aby při připojování ke službě Azure Storage používali nové konektory.
Externí zdroj dat | Od | K |
---|---|---|
Azure Blob Storage (Úložiště Azure pro objekty typu blob) | wasb[s] |
abs |
ADLS Gen2 | abfs[s] |
adls |
Příklady
Důležité
Informace o instalaci a povolení PolyBase naleznete v tématu Instalace PolyBase ve Windows.
A. Vytvoření externího zdroje dat na SQL Serveru pro odkazování na Oracle
Pokud chcete vytvořit externí zdroj dat, který odkazuje na Oracle, ujistěte se, že máte přihlašovací údaje v oboru databáze. Volitelně můžete také povolit nebo zakázat nabízení výpočtů u tohoto zdroje dat.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CREDENTIAL = OracleProxyAccount,
PUSHDOWN = ON
);
Volitelně může externí zdroj dat oracle použít ověřování proxy serverem k zajištění podrobného řízení přístupu. Uživatele proxy serveru je možné nakonfigurovat tak, aby měl omezený přístup v porovnání s uživatelem, který se zosobní.
CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential]
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER',
CREDENTIAL = [OracleProxyCredential]
);
Případně se můžete ověřit pomocí TNS.
Počínaje kumulativní aktualizací 2022 (16.x) SQL Server 2 CREATE EXTERNAL DATA SOURCE
teď podporuje použití souborů TNS při připojování k Oracle.
Parametr CONNECTION_OPTIONS
byl rozbalený a nyní se používá TNSNamesFile
a ServerName
jako proměnné slouží k procházení tnsnames.ora
souboru a navázání připojení k serveru.
V následujícím příkladu bude sql Server za běhu hledat tnsnames.ora
umístění souboru určeného TNSNamesFile
a hledat hostitele a síťový port určený ServerName
.
CREATE EXTERNAL DATA SOURCE [external_data_source_name]
WITH (
LOCATION = N'oracle://XE',
CREDENTIAL = [OracleCredentialTest],
CONNECTION_OPTIONS = N'TNSNamesFile=C:\Temp\tnsnames.ora;ServerName=XE'
);
B. Vytvoření externího zdroje dat pro odkazování na pojmenovanou instanci SQL Serveru prostřednictvím připojení PolyBase
platí pro: SQL Server 2019 (15.x) a novější
Chcete-li vytvořit externí zdroj dat, který odkazuje na pojmenovanou instanci SQL Serveru, použijte CONNECTION_OPTIONS
k určení názvu instance.
Nejprve vytvořte přihlašovací údaje s vymezeným oborem databáze a uložíte přihlašovací údaje pro ověřené přihlášení SQL. Konektor SQL ODBC pro PolyBase podporuje pouze základní ověřování. Před vytvořením přihlašovacích údajů s vymezeným oborem databáze musí mít databáze hlavní klíč pro ochranu přihlašovacích údajů. Další informace naleznete v tématu CREATE MASTER KEY (Transact-SQL). Následující ukázka vytvoří přihlašovací údaje s vymezeným oborem databáze a poskytne vlastní přihlašovací údaje a heslo.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username',
SECRET = 'password';
V následujícím příkladu WINSQL2019
je název hostitele a SQL2019
je to název instance.
'Server=%s\SQL2019'
je pár klíč-hodnota.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019',
CONNECTION_OPTIONS = 'Server=%s\SQL2019',
CREDENTIAL = SQLServerCredentials
);
Případně můžete použít port pro připojení k výchozí instanci SQL Serveru.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019:58137',
CREDENTIAL = SQLServerCredentials
);
C. Vytvoření externího zdroje dat pro odkazování na čitelný sekundární repliku skupiny dostupnosti AlwaysOn
platí pro: SQL Server 2019 (15.x) a novější
Chcete-li vytvořit externí zdroj dat, který odkazuje na čitelný sekundární repliku SYSTÉMU SQL Server, použijte CONNECTION_OPTIONS
k určení ApplicationIntent=ReadOnly
. Kromě toho budete muset buď nastavit databázi dostupnosti jako Database={dbname}
in CONNECTION_OPTIONS
, nebo nastavit databázi dostupnosti jako výchozí databázi přihlášení použitého pro přihlašovací údaje v oboru databáze. Budete to muset provést u všech replik dostupnosti skupiny dostupnosti.
Nejprve vytvořte přihlašovací údaje s vymezeným oborem databáze a uložíte přihlašovací údaje pro ověřené přihlášení SQL. Konektor SQL ODBC pro PolyBase podporuje pouze základní ověřování. Před vytvořením přihlašovacích údajů s vymezeným oborem databáze musí mít databáze hlavní klíč pro ochranu přihlašovacích údajů. Další informace naleznete v tématu CREATE MASTER KEY (Transact-SQL). Následující ukázka vytvoří přihlašovací údaje s vymezeným oborem databáze a poskytne vlastní přihlašovací údaje a heslo.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username',
SECRET = 'password';
Dále vytvořte nový externí zdroj dat.
Bez ohledu na Database=dbname
to, jestli jste do databáze dostupnosti zahrnuli CONNECTION_OPTIONS
nebo nastavili výchozí databázi pro přihlášení v přihlašovacích údajích s vymezeným oborem databáze, musíte v parametru LOCATION zadat název databáze prostřednictvím názvu třídílné části příkazu CREATE EXTERNAL TABLE. Příklad najdete v tématu VYTVOŘENÍ EXTERNÍ TABULKY.
V následujícím příkladu WINSQL2019AGL
je název naslouchacího procesu skupiny dostupnosti a dbname
je to název databáze, která má být cílem příkazu CREATE EXTERNAL TABLE.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = SQLServerCredentials
);
Chování přesměrování skupiny dostupnosti můžete předvést zadáním ApplicationIntent
a vytvořením externí tabulky v systémovém zobrazení sys.servers
. V následujícím ukázkovém skriptu se vytvoří dva externí zdroje dat a pro každou z nich se vytvoří jedna externí tabulka. Pomocí zobrazení otestujte, který server reaguje na připojení. Podobné výsledky je možné dosáhnout také pomocí funkce směrování jen pro čtení. Další informace najdete v tématu Konfigurace směrování jen pro čtení pro skupinu dostupnosti AlwaysOn.
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadOnlyIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = [SQLServerCredentials]
);
GO
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadWriteIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadWrite',
CREDENTIAL = [SQLServerCredentials]
);
GO
Uvnitř databáze ve skupině dostupnosti vytvořte zobrazení pro vrácení sys.servers
a název místní instance, která vám pomůže identifikovat repliku, která odpovídá na dotaz. Další informace naleznete v tématu sys.servers.
CREATE VIEW vw_sys_servers
AS
SELECT [name]
FROM sys.servers
WHERE server_id = 0;
GO
Pak ve zdrojové instanci vytvořte externí tabulku:
CREATE EXTERNAL TABLE vw_sys_servers_ro (name SYSNAME NOT NULL)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadOnlyIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
CREATE EXTERNAL TABLE vw_sys_servers_rw (name SYSNAME NOT NULL)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadWriteIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
SELECT [name]
FROM dbo.vw_sys_servers_ro;--should return secondary replica instance
SELECT [name]
FROM dbo.vw_sys_servers_rw;--should return primary replica instance
GO
D. Vytvoření externího zdroje dat pro dotazování souboru parquet v úložišti objektů kompatibilním s S3 prostřednictvím PolyBase
platí pro: SQL Server 2022 (16.x) a novější
Následující ukázkový skript vytvoří externí zdroj dat s3_ds
ve zdrojové uživatelské databázi na SQL Serveru. Externí zdroj dat odkazuje na přihlašovací údaje s3_dc
databáze s vymezeným oborem.
CREATE DATABASE SCOPED CREDENTIAL s3_dc
WITH IDENTITY = 'S3 Access Key', -- for S3-compatible object storage the identity must always be S3 Access Key
SECRET = '<access_key_id>:<secret_key_id>' -- provided by the S3-compatible object storage
GO
CREATE EXTERNAL DATA SOURCE s3_ds
WITH (
LOCATION = 's3://<ip_address>:<port>/',
CREDENTIAL = s3_dc
);
GO
Ověřte nový externí zdroj dat pomocí sys.external_data_sources.
SELECT * FROM sys.external_data_sources;
Následující příklad ukazuje použití T-SQL k dotazování souboru parquet uloženého v úložišti objektů kompatibilním s S3 prostřednictvím dotazu OPENROWSET. Další informace naleznete v tématu Virtualize parquet file in a S3-compatible object storage with PolyBase.
SELECT *
FROM OPENROWSET (
BULK '/<bucket>/<parquet_folder>',
FORMAT = 'PARQUET',
DATA_SOURCE = 's3_ds'
) AS [cc];
E. Vytvoření externího zdroje dat pomocí obecného rozhraní ODBC do PostgreSQL
Stejně jako v předchozích příkladech nejprve vytvořte hlavní klíč databáze a přihlašovací údaje v oboru databáze. Přihlašovací údaje v oboru databáze se použijí pro externí zdroj dat. Tento příklad také předpokládá, že na serveru je nainstalovaný obecný zprostředkovatel dat ODBC pro PostgreSQL.
V tomto příkladu se obecný zprostředkovatel dat ODBC používá k připojení k databázovému serveru PostgreSQL ve stejné síti, kde plně kvalifikovaný název domény serveru PostgreSQL je POSTGRES1
s použitím výchozího portu TCP 5432.
CREATE EXTERNAL DATA SOURCE POSTGRES1
WITH (
LOCATION = 'odbc://POSTGRES1.domain:5432',
CONNECTION_OPTIONS = 'Driver={PostgreSQL Unicode(x64)};',
CREDENTIAL = postgres_credential
);
Azure Storage
Vytvoření sdíleného přístupového podpisu
Pro Azure Blob Storage i Azure Data Lake Storage (ADLS) Gen2 je podporovaná metoda ověřování sdílený přístupový podpis (SAS). Jedním jednoduchým způsobem, jak vygenerovat token sdíleného přístupového podpisu, postupujte podle následujících kroků. Další informace najdete v tématu CREDENTIAL.
Přejděte na web Azure Portal a požadovaný účet úložiště.
V nabídce Úložiště dat přejděte do požadovaného kontejneru.
Vyberte Sdílené přístupové tokeny.
Zvolte odpovídající oprávnění na základě požadované akce:
Činnost Povolení Čtení dat ze souboru Čti Čtení dat z více souborů a podsložek Číst a seznamovat Použití možnosti Vytvořit externí tabulku jako výběr (CETAS) Čtení, vytváření a zápis Zvolte datum vypršení platnosti tokenu.
Vygenerujte token SAS a adresu URL.
Zkopírujte token SAS.
F. Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Blob Storage pomocí rozhraní abs://
platí pro: SQL Server 2022 (16.x) a novější
Počínaje SQL Serverem 2022 (16.x) použijte novou předponu abs
pro účet služby Azure Storage v2. Předpona abs
podporuje ověřování pomocí SHARED ACCESS SIGNATURE
. Předpona abs
nahrazuje wasb
, použitá v předchozích verzích. HADOOP se už nepodporuje, už není potřeba používat TYPE = BLOB_STORAGE
.
Klíč účtu úložiště Azure už není potřeba. Místo toho použijte token SAS, jak je vidět v následujícím příkladu:
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
GO
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredentialv2
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', -- to use SAS the identity must be fixed as-is
SECRET = '<Blob_SAS_Token>';
GO
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredentialv2
);
Podrobnější příklad přístupu k souborům CSV uloženým ve službě Azure Blob Storage najdete v tématu Virtualizace souboru CSV pomocí PolyBase.
G. Vytvoření externího zdroje dat pro přístup k datům v Azure Data Lake Gen2
Platí pro: SQL Server 2022 (16.x) a novější verze
Počínaje SQL Serverem 2022 (16.x) použijte novou předponu adls
pro Azure Data Lake Gen2 a nahraďte abfs
ji v předchozích verzích. Předpona adls
také podporuje token SAS jako metodu ověřování, jak je znázorněno v tomto příkladu:
--Create a database scoped credential using SAS Token
CREATE DATABASE SCOPED CREDENTIAL datalakegen2
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<DataLakeGen2_SAS_Token>';
GO
CREATE EXTERNAL DATA SOURCE data_lake_gen2_dfs
WITH (
LOCATION = 'adls://<container>@<storage_account>.dfs.core.windows.net',
CREDENTIAL = datalakegen2
);
Podrobnější příklad přístupu k rozdílovým souborům uloženým v Azure Data Lake Gen2 najdete v tématu Virtualizace tabulky Delta pomocí PolyBase.
Příklady: Hromadné operace
Důležité
Při konfiguraci externího / zdroje dat pro hromadné operace nepřidávejte LOCATION
koncové parametry, název souboru ani parametry sdíleného přístupového podpisu na konci adresy URL.
H. Vytvoření externího zdroje dat pro hromadné operace načítání dat z Azure Storage
platí pro: SQL Server 2022 (16.x) a novější verze.
Pro hromadné operace pomocí funkce BULK INSERT (Transact-SQL) nebo OPENROWSET (Transact-SQL) použijte následující zdroj dat. Přihlašovací údaje musí být nastavené SHARED ACCESS SIGNATURE
jako identita, nesmí mít v tokenu SAS počáteční ?
oprávnění, musí mít alespoň oprávnění ke čtení souboru, který by se měl načíst (například srt=o&sp=r
) a doba vypršení platnosti by měla být platná (všechna data jsou v čase UTC). Další informace o sdílených přístupových podpisech najdete v tématu Použití sdílených přístupových podpisů (SAS).
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
-- Remove ? from the beginning of the SAS token
SECRET = '<azure_shared_access_signature>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = AccessAzureInvoices,
);
Související obsah
- ALTER EXTERNAL DATA SOURCE (Transact-SQL)
- Vytvořit přihlašovací údaje k databázi (Transact-SQL)
- CREATE EXTERNAL FILE FORMAT (Transact-SQL)
- VYTVOŘIT EXTERNÍ TABULKU (Transact-SQL)
- sys.external_data_sources (Transact-SQL)
- Použití sdílených přístupových podpisů (SAS)
- Konfigurace připojení PolyBase (Transact-SQL)
Přehled: SQL Server 2025
Platí pro: SQL Server 2025 (17.x) Preview a novější verze.
Vytvoří externí zdroj dat pro dotazy PolyBase. Externí zdroje dat slouží k navázání připojení a podpoře těchto primárních případů použití:
- Virtualizace dat a načítání dat pomocí virtualizace dat s PolyBase na SQL Serveru
- Operace hromadného načítání s využitím
BULK INSERT
neboOPENROWSET
Poznámka:
Tato syntaxe se liší v různých verzích SQL Serveru. K výběru vhodné verze použijte rozevírací seznam selektoru verzí. Tento obsah platí pro SQL Server 2025 (17.x) Preview a novější verze.
Syntaxe pro SQL Server 2025 a novější verze
Další informace o konvencích syntaxe najdete v tématu Transact-SQL konvence syntaxe.
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] PUSHDOWN = { ON | OFF } ]
)
[ ; ]
Argumenty
data_source_name
Určuje uživatelem definovaný název zdroje dat. Název musí být jedinečný v rámci databáze na SQL Serveru.
LOCATION = '<prefix>://<path[:p ort]>'
Poskytuje protokol připojení a cestu k externímu zdroji dat.
Externí zdroj dat | Předpona umístění konektoru | Cesta k lokaci | Podporovaná umístění podle produktu nebo služby | Autentizace |
---|---|---|---|---|
Účet úložiště Azure (V2) | abs |
abs://<container_name>@<storage_account_name>.blob.core.windows.net/ nebo abs://<storage_account_name>.blob.core.windows.net/<container_name> |
Počínaje SQL Serverem 2022 (16.x) Podporuje se hierarchický obor názvů. |
Sdílený přístupový podpis (SAS) |
Azure Data Lake Storage Gen2 | adls |
adls://<container_name>@<storage_account_name>.dfs.core.windows.net/ nebo adls://<storage_account_name>.dfs.core.windows.net/<container_name> |
Počínaje SQL Serverem 2022 (16.x) | Sdílený přístupový podpis (SAS) |
SQL Server | sqlserver |
<server_name>[\<instance_name>][:port] |
Počínaje SQL Serverem 2019 (15.x) | Pouze ověřování SQL |
Věštírna | oracle |
<server_name>[:port] |
Počínaje SQL Serverem 2019 (15.x) | Pouze základní ověřování |
Teradata | teradata |
<server_name>[:port] |
Počínaje SQL Serverem 2019 (15.x) | Pouze základní ověřování |
MongoDB nebo cosmos DB API pro MongoDB | mongodb |
<server_name>[:port] |
Počínaje SQL Serverem 2019 (15.x) | Pouze základní ověřování |
Obecné ODBC | odbc |
<server_name>[:port] |
Od SQL Serveru 2019 (15.x) – jenom Windows | Pouze základní ověřování |
Hromadné operace | https |
<storage_account>.blob.core.windows.net/<container> |
Počínaje SQL Serverem 2017 (14.x) | Sdílený přístupový podpis (SAS) |
Úložiště objektů kompatibilní s S3 | s3 |
- Kompatibilní s S3: s3://<server_name>:<port>/ - AWS S3: s3://<bucket_name>.S3.amazonaws.com[:port]/<folder> nebo s3://s3.amazonaws.com[:port]/<bucket_name>/<folder> |
Počínaje SQL Serverem 2022 (16.x) | Základní nebo průchozí (STS) 1 |
1 Musí být přihlašovací údaje s oborem databáze, kde IDENTITY
je pevně zakódovaný IDENTITY = 'S3 Access Key'
a SECRET
argument je ve formátu = '<AccessKeyID>:<SecretKeyID>'
nebo použít předávací autorizaci (STS). Další informace naleznete v tématu Konfigurace PolyBase pro přístup k externím datům v úložišti objektů kompatibilním s S3.
Cesta k umístění:
Cesta k lokaci | Popis |
---|---|
port |
Port, na který externí zdroj dat naslouchá. Volitelné v mnoha případech v závislosti na konfiguraci sítě. |
<container_name> |
Kontejner účtu úložiště, ve kterém jsou uložená data. Kořenové kontejnery jsou jen pro čtení, data se nedají zapsat zpět do kontejneru. |
<storage_account> |
Název účtu úložiště prostředku Azure. |
<server_name> |
Název hostitele. |
<instance_name> |
Název pojmenované instance SYSTÉMU SQL Server. Používá se, pokud máte službu SQL Server Browser spuštěnou v cílové instanci. |
<ip_address>:<port>
1 |
Pouze pro úložiště objektů kompatibilní s S3 se koncový bod a port použitý pro připojení k úložišti kompatibilnímu s S3. |
<bucket_name>
1 |
Pouze pro úložiště objektů kompatibilní s S3, specifické pro platformu úložiště. |
<region>
1 |
Pouze pro úložiště objektů kompatibilní s S3, specifické pro platformu úložiště. |
<folder> |
Část cesty k úložišti v adrese URL úložiště. |
1 SQL Server 2022 (16.x) a novější verze.
Další poznámky a pokyny při nastavování umístění:
Databázový stroj SQL Serveru při vytváření objektu neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.
Konektor můžete použít
sqlserver
k připojení SQL Serveru 2019 (15.x) k jinému SQL Serveru nebo k Azure SQL Database.Driver={<Name of Driver>}
Zadejte při připojování přesODBC
.Možnost Hierarchický obor názvů pro účty Azure Storage (V2) používající předponu
adls
se podporuje prostřednictvím Azure Data Lake Storage Gen2 v SQL Serveru 2022 (16.x) a novějších verzích.Podpora SQL Serveru pro externí zdroje dat HDFS Cloudera (CDP) a Hortonworks (HDP) se vyřazuje z provozu a není součástí SQL Serveru 2022 (16.x) a novějších verzí. Argument v SQL Serveru 2025 (17.x) Preview nemusíte používat
TYPE
.Další informace o úložišti objektů kompatibilních s S3 a PolyBase v SQL Serveru 2022 (16.x) a novějších verzích najdete v tématu Konfigurace PolyBase pro přístup k externím datům v úložišti objektů kompatibilním s S3. Příklad dotazování souboru parquet v úložišti objektů kompatibilních s S3 najdete v tématu Virtualizace souboru parquet v úložišti objektů kompatibilním s S3 pomocí PolyBase.
V SQL Serveru 2022 (16.x) a novějších verzích:
předpona použitá pro účet úložiště Azure (v2) se změnila z
wasb[s]
naabs
předpona použitá pro Azure Data Lake Storage Gen2 se změnila z
abfs[s]
naadls
Příklad použití PolyBase k virtualizaci souboru CSV ve službě Azure Storage najdete v tématu Virtualizace souboru CSV pomocí PolyBase.
Příklad použití PolyBase k virtualizaci rozdílové tabulky v ADLS Gen2 naleznete v tématu Virtualize delta table with PolyBase.
SQL Server 2022 (16.x) a novější verze plně podporují dva formáty adres URL pro účet Azure Storage verze 2 (
abs
) i Azure Data Lake Gen2 (adls
).Cesta
LOCATION
může používat formáty:<container>@<storage_account_name>..
(doporučeno) nebo<storage_account_name>../<container>
. Například:- Účet služby Azure Storage v2:
abs://<container>@<storage_account_name>.blob.core.windows.net
(doporučeno) neboabs://<storage_account_name>.blob.core.windows.net/<container>
.
- Účet služby Azure Storage v2:
Azure Data Lake Gen2 podporuje:
adls://<container>@<storage_account_name>.blob.core.windows.net
(doporučeno) neboadls://<storage_account_name>.dfs.core.windows.net/<container>
.
CONNECTION_OPTIONS = key_value_pair
platí pro: SQL Server 2019 (15.x) a novější verze.
Určuje další možnosti při připojování ODBC
k externímu zdroji dat. Pokud chcete použít více možností připojení, oddělte je středníkem.
Platí pro obecná ODBC
připojení a také integrované ODBC
konektory pro SQL Server, Oracle, Teradata, MongoDB a rozhraní API služby Azure Cosmos DB pro MongoDB.
Jedná se key_value_pair
o klíčové slovo a hodnotu konkrétní možnosti připojení. Dostupná klíčová slova a hodnoty závisí na typu externího zdroje dat. Název ovladače se vyžaduje minimálně, ale existují i další možnosti, jako APP='<your_application_name>'
jsou nebo ApplicationIntent= ReadOnly|ReadWrite
které jsou také užitečné k nastavení a můžou vám pomoct s řešením potíží.
Možné páry klíč-hodnota jsou specifické pro ovladač. Další informace pro každého zprostředkovatele naleznete v tématu CREATE EXTERNAL DATA SOURCE (Transact-SQL) CONNECTION_OPTIONS.
Počínaje kumulativní aktualizací SQL Serveru 2022 (16.x) byla zavedena další klíčová slova pro podporu souborů Oracle TNS:
- Klíčové slovo
TNSNamesFile
určuje cestu k souboru umístěnémutnsnames.ora
na serveru Oracle. - Klíčové slovo
ServerName
určuje alias použitý uvnitřtnsnames.ora
, který se použije k nahrazení názvu hostitele a portu.
Možnosti šifrování v SQL Serveru 2025 (17.x) Preview
Počínaje verzí SQL Server 2025 (17.x) Preview je při použití sqlserver
jako zdroje dat výchozí ovladač ovladače Microsoft ODBC verze 18 pro SQL Server. Tato možnost je povinná (, nebo Encryption
) a Yes
je k dispozici (No
neboStrict
). TrustServerCertificate
Yes
No
Pokud Encryption
není zadáno, výchozí chování je Encrypt=Yes;TrustServerCertificate=No;
a vyžaduje certifikát serveru.
Pokud se chcete připojit pomocí protokolu TDS 8.0, byl přidán striktní režim (Encrypt=Strict
). V tomto režimu se vyžaduje instalace důvěryhodného certifikátu serveru a vždy se ověřuje (TrustServerCertificate se ignoruje). Nové klíčové slovo , HostnameInCertificate
lze použít k určení očekávaného názvu hostitele nalezeného v certifikátu, pokud se liší od zadaného serveru.
HostnameInCertificate
je použitelná ve všech režimech šifrování a je také použitelná, pokud je povolená možnost Vynucení šifrování na straně serveru, což způsobí, že ovladač ověří certifikát v volitelných nebo povinných režimech, pokud není zakázáno používat TrustServerCertificate
.
Další informace o Encryption
možnostech, serverových certifikátech a TrustServerCertificate
naleznete v tématu Funkce ovladače Microsoft ODBC pro SQL Server ve Windows.
Vždy byste měli používat nejnovější ovladač. SQL Server 2025 (17.x) Preview však také podporuje ovladač Microsoft ODBC verze 17 pro SQL Server kvůli zpětné kompatibilitě. Další informace o tom, jak změnit verzi ovladače používané PolyBase, naleznete v tématu Jak změnit verzi ovladače SYSTÉMU SQL Server pro PolyBase.
PUSHDOWN = ZAPNUTO | PRYČ
platí pro: SQL Server 2019 (15.x) a novější verze.
Uvádí, zda je možné výpočty odeslat do externího zdroje dat. Ve výchozím nastavení je povoleno.
PUSHDOWN
se podporuje při připojování k SQL Serveru, Oracle, Teradata, MongoDB, rozhraní API služby Azure Cosmos DB pro MongoDB nebo ODBC na úrovni externího zdroje dat.
Povolení nebo zakázání nabízení na úrovni dotazu se dosahuje pomocí nápovědy.
CREDENTIAL = credential_name
Určuje přihlašovací údaje s oborem databáze pro ověřování v externím zdroji dat.
Další poznámky a pokyny při vytváření přihlašovacích údajů:
CREDENTIAL
vyžaduje se pouze v případě, že jsou data zabezpečená.CREDENTIAL
nevyžaduje se u datových sad, které umožňují anonymní přístup.Při přístupu k účtu Azure Storage (V2) nebo Azure Data Lake Storage Gen2
IDENTITY
musí býtSHARED ACCESS SIGNATURE
.Příklad najdete v tématu Vytvoření externího zdroje dat pro provádění hromadných operací a načtení dat ze služby Azure Storage do služby SQL Database.
Sdílený přístupový podpis můžete vytvořit několika způsoby:
Token SAS můžete vytvořit tak, že přejdete na web Azure Portal><Your_Storage_Account>>sdílený přístupový podpis>: Nakonfigurujte oprávnění>Generovat SAS a připojovací řetězec. Další informace najdete v tématu Generování sdíleného přístupového podpisu.
Sas můžete vytvořit a nakonfigurovat pomocí Průzkumníka služby Azure Storage.
Token SAS můžete vytvořit programově prostřednictvím PowerShellu, Azure CLI, .NET a rozhraní REST API. Další informace najdete v tématu Udělení omezeného přístupu k prostředkům Azure Storage pomocí sdílených přístupových podpisů (SAS).
Token SAS by měl být nakonfigurovaný takto:
Když se vygeneruje token SAS, obsahuje na začátku tokenu otazník (?). Vyloučí počáteční
?
při konfiguraci jakoSECRET
.Použijte platnou dobu vypršení platnosti (všechna data jsou v čase UTC).
Udělte alespoň oprávnění ke čtení souboru, který by se měl načíst (například
srt=o&sp=r
). Pro různé případy použití je možné vytvořit více sdílených přístupových podpisů. Oprávnění by měla být udělena následujícím způsobem:Činnost Povolení Čtení dat ze souboru Čti Čtení dat z více souborů a podsložek Číst a seznamovat Použití možnosti Vytvořit externí tabulku jako výběr (CETAS) Čtení, vytvoření, výpis a zápis Pro Azure Blob Storage a Azure Data Lake Gen2:
- Povolené služby: Je nutné vybrat, aby se vygeneroval token SAS.
Blob
- Povolené služby: Je nutné vybrat, aby se vygeneroval token SAS.
Povolené typy prostředků:
Container
aObject
musí být vybrány pro vygenerování tokenu SAS.
Příklad použití CREDENTIAL
úložiště objektů kompatibilních s S3 a PolyBase najdete v tématu Konfigurace PolyBase pro přístup k externím datům v úložišti objektů kompatibilním s S3.
Pokud chcete vytvořit přihlašovací údaje s vymezeným oborem databáze, přečtěte si téma CREATE DATABASE SCOPED CREDENTIAL.
Povolení
Vyžaduje CONTROL
oprávnění k databázi na SQL Serveru.
Uzamčení
Vezme sdílený zámek objektu EXTERNAL DATA SOURCE
.
Bezpečnost
PolyBase podporuje ověřování na základě proxy serveru pro většinu externích zdrojů dat. Vytvořte přihlašovací údaje s vymezeným oborem databáze a vytvořte účet proxy serveru.
Upgrade na SQL Server 2025
V SYSTÉMU SQL Server 2022 (16.x) a novějších verzích nejsou externí zdroje dat Hadoop podporovány. Je nutné ručně znovu vytvořit externí zdroje dat vytvořené TYPE = HADOOP
pomocí a všechny externí tabulky, které používají tento externí zdroj dat.
Uživatelé budou také muset nakonfigurovat své externí zdroje dat tak, aby při připojování ke službě Azure Storage používali nové konektory.
Externí zdroj dat | Od | K |
---|---|---|
Azure Blob Storage (Úložiště Azure pro objekty typu blob) | wasb[s] | břišní svaly |
ADLS Gen2 | abfs[s] | adls |
Příklady
Důležité
Informace o tom, jak nainstalovat a povolit PolyBase, naleznete v tématu Instalace PolyBase ve Windows.
A. Vytvoření externího zdroje dat na SQL Serveru pro odkazování na Oracle
Pokud chcete vytvořit externí zdroj dat, který odkazuje na Oracle, ujistěte se, že máte přihlašovací údaje v oboru databáze. Volitelně můžete také povolit nebo zakázat nabízení výpočtů u tohoto zdroje dat.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD= '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
WITH IDENTITY = 'oracle_username', SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
PUSHDOWN = ON,
CREDENTIAL = OracleProxyAccount
);
Volitelně může externí zdroj dat oracle použít ověřování proxy serverem k zajištění podrobného řízení přístupu. Uživatele proxy serveru je možné nakonfigurovat tak, aby měl omezený přístup v porovnání s uživatelem, který se zosobní.
CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential]
WITH IDENTITY = 'oracle_username', SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER',
CREDENTIAL = [OracleProxyCredential]
);
Případně se můžete ověřit pomocí TNS.
Počínaje kumulativní aktualizací 2022 (16.x) SQL Server 2 CREATE EXTERNAL DATA SOURCE
teď podporuje použití souborů TNS při připojování k Oracle.
Parametr CONNECTION_OPTIONS
byl rozbalený a nyní se používá TNSNamesFile
a ServerName
jako proměnné slouží k procházení tnsnames.ora
souboru a navázání připojení k serveru.
V následujícím příkladu bude sql Server za běhu hledat tnsnames.ora
umístění souboru určeného TNSNamesFile
a hledat hostitele a síťový port určený ServerName
.
CREATE EXTERNAL DATA SOURCE [external_data_source_name]
WITH (
LOCATION = N'oracle://XE',
CREDENTIAL = [OracleCredentialTest],
CONNECTION_OPTIONS = N'TNSNamesFile=C:\Temp\tnsnames.ora;ServerName=XE'
);
B. Vytvoření externího zdroje dat pro odkazování na pojmenovanou instanci SQL Serveru prostřednictvím připojení PolyBase
Platí pro: SQL Server 2019 (15.x) a novější verze
Chcete-li vytvořit externí zdroj dat, který odkazuje na pojmenovanou instanci SQL Serveru, použijte CONNECTION_OPTIONS
k určení názvu instance.
Nejprve vytvořte přihlašovací údaje s vymezeným oborem databáze a uložíte přihlašovací údaje pro ověřené přihlášení SQL. Konektor SQL ODBC pro PolyBase podporuje pouze základní ověřování. Před vytvořením přihlašovacích údajů s vymezeným oborem databáze musí mít databáze hlavní klíč pro ochranu přihlašovacích údajů. Další informace naleznete v tématu CREATE MASTER KEY. Následující ukázka vytvoří přihlašovací údaje s vymezeným oborem databáze a poskytne vlastní přihlašovací údaje a heslo.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username', SECRET = 'password';
V následujícím příkladu WINSQL2019
je název hostitele a SQL2019
je to název instance.
'Server=%s\SQL2019'
je pár klíč-hodnota.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019',
CONNECTION_OPTIONS = 'Server=%s\SQL2019',
CREDENTIAL = SQLServerCredentials
);
Případně můžete použít port pro připojení k výchozí instanci SQL Serveru.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019:58137',
CREDENTIAL = SQLServerCredentials
);
C. Vytvoření externího zdroje dat pro odkazování na čitelný sekundární repliku skupiny dostupnosti AlwaysOn
Platí pro: SQL Server 2019 (15.x) a novější verze
Chcete-li vytvořit externí zdroj dat, který odkazuje na čitelný sekundární repliku SYSTÉMU SQL Server, použijte CONNECTION_OPTIONS
k určení ApplicationIntent=ReadOnly
. Kromě toho budete muset buď nastavit databázi dostupnosti jako Database={dbname}
in CONNECTION_OPTIONS
, nebo nastavit databázi dostupnosti jako výchozí databázi přihlášení použitého pro přihlašovací údaje v oboru databáze. Budete to muset udělat u všech replik dostupnosti skupiny dostupnosti.
Nejprve vytvořte přihlašovací údaje s vymezeným oborem databáze a uložíte přihlašovací údaje pro ověřené přihlášení SQL. Konektor SQL ODBC pro PolyBase podporuje pouze základní ověřování. Před vytvořením přihlašovacích údajů s vymezeným oborem databáze musí mít databáze hlavní klíč pro ochranu přihlašovacích údajů. Další informace naleznete v tématu CREATE MASTER KEY. Následující ukázka vytvoří přihlašovací údaje s vymezeným oborem databáze a poskytne vlastní přihlašovací údaje a heslo.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username', SECRET = 'password';
Dále vytvořte nový externí zdroj dat.
Bez ohledu na Database=dbname
to, jestli jste do databáze dostupnosti zahrnuli CONNECTION_OPTIONS
nebo nastavili výchozí databázi pro přihlášení v přihlašovacích údajích s vymezeným oborem databáze, musíte v parametru LOCATION zadat název databáze prostřednictvím názvu třídílné části příkazu CREATE EXTERNAL TABLE. Příklad najdete v tématu VYTVOŘENÍ EXTERNÍ TABULKY.
V následujícím příkladu WINSQL2019AGL
je název naslouchacího procesu skupiny dostupnosti a dbname
je to název databáze, která má být cílem příkazu CREATE EXTERNAL TABLE.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = SQLServerCredentials
);
Chování přesměrování skupiny dostupnosti můžete předvést zadáním ApplicationIntent
a vytvořením externí tabulky v systémovém zobrazení sys.servers
. V následujícím ukázkovém skriptu se vytvoří dva externí zdroje dat a pro každou z nich se vytvoří jedna externí tabulka. Pomocí zobrazení otestujte, který server reaguje na připojení. Podobné výsledky je možné dosáhnout také pomocí funkce směrování jen pro čtení. Další informace najdete v tématu Konfigurace směrování jen pro čtení pro skupinu dostupnosti AlwaysOn.
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadOnlyIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = [SQLServerCredentials]
);
GO
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadWriteIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadWrite',
CREDENTIAL = [SQLServerCredentials]
);
GO
Uvnitř databáze ve skupině dostupnosti vytvořte zobrazení pro vrácení sys.servers
a název místní instance, která vám pomůže identifikovat repliku, která odpovídá na dotaz. Další informace naleznete v tématu sys.servers.
CREATE VIEW vw_sys_servers AS
SELECT [name]
FROM sys.servers
WHERE server_id = 0;
GO
Pak ve zdrojové instanci vytvořte externí tabulku:
CREATE EXTERNAL TABLE vw_sys_servers_ro
(
name SYSNAME NOT NULL
)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadOnlyIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
CREATE EXTERNAL TABLE vw_sys_servers_rw
(
name SYSNAME NOT NULL
)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadWriteIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
SELECT [name]
FROM dbo.vw_sys_servers_ro;
--should return secondary replica instance
SELECT [name]
FROM dbo.vw_sys_servers_rw;
--should return primary replica instance
GO
D. Vytvoření externího zdroje dat pro dotazování souboru parquet v úložišti objektů kompatibilním s S3 prostřednictvím PolyBase
platí pro: SQL Server 2022 (16.x) a novější verze.
Následující ukázkový skript vytvoří externí zdroj dat s3_ds
ve zdrojové uživatelské databázi na SQL Serveru. Externí zdroj dat odkazuje na přihlašovací údaje s3_dc
databáze s vymezeným oborem.
CREATE DATABASE SCOPED CREDENTIAL s3_dc
WITH IDENTITY = 'S3 Access Key', -- for S3-compatible object storage the identity must always be S3 Access Key
SECRET = '<access_key_id>:<secret_key_id>'; -- provided by the S3-compatible object storage
GO
CREATE EXTERNAL DATA SOURCE s3_ds
WITH (
LOCATION = 's3://<ip_address>:<port>/',
CREDENTIAL = s3_dc
);
GO
Ověřte nový externí zdroj dat pomocí sys.external_data_sources.
SELECT *
FROM sys.external_data_sources;
Následující příklad ukazuje použití T-SQL k dotazování souboru parquet uloženého v úložišti objektů kompatibilním s S3 prostřednictvím dotazu OPENROWSET. Další informace naleznete v tématu Virtualize parquet file in a S3-compatible object storage with PolyBase.
SELECT * FROM OPENROWSET (
BULK '/<bucket>/<parquet_folder>',
FORMAT = 'PARQUET',
DATA_SOURCE = 's3_ds'
) AS [cc];
E. Vytvoření externího zdroje dat pomocí obecného rozhraní ODBC do PostgreSQL
Stejně jako v předchozích příkladech nejprve vytvořte hlavní klíč databáze a přihlašovací údaje v oboru databáze. Přihlašovací údaje v oboru databáze se použijí pro externí zdroj dat. Tento příklad také předpokládá, že na serveru je nainstalovaný obecný zprostředkovatel dat ODBC pro PostgreSQL.
V tomto příkladu se obecný zprostředkovatel dat ODBC používá k připojení k databázovému serveru PostgreSQL ve stejné síti, kde plně kvalifikovaný název domény serveru PostgreSQL je POSTGRES1
s použitím výchozího portu TCP 5432.
CREATE EXTERNAL DATA SOURCE POSTGRES1
WITH (
LOCATION = 'odbc://POSTGRES1.domain:5432',
CONNECTION_OPTIONS = 'Driver={PostgreSQL Unicode(x64)};',
CREDENTIAL = postgres_credential
);
Azure Storage
Vytvoření sdíleného přístupového podpisu
Pro Azure Blob Storage i Azure Data Lake Gen2 je podporovaná metoda ověřování sdílený přístupový podpis (SAS). Jedním jednoduchým způsobem, jak vygenerovat token sdíleného přístupového podpisu, postupujte podle následujících kroků. Další informace najdete v tématu CREDENTIAL.
- Přejděte na web Azure Portal a požadovaný účet úložiště.
- V nabídce Úložiště dat přejděte do požadovaného kontejneru.
- Vyberte Sdílené přístupové tokeny.
- Zvolte odpovídající oprávnění na základě požadované akce, pro referenci použijte tabulku bellow:
Činnost | Povolení |
---|---|
Čtení dat ze souboru | Čti |
Čtení dat z více souborů a podsložek | Číst a seznamovat |
Použití možnosti Vytvořit externí tabulku jako výběr (CETAS) | Čtení, vytváření a zápis |
- Zvolte datum vypršení platnosti tokenu.
- Vygenerujte token SAS a adresu URL.
- Zkopírujte token SAS.
F. Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Blob Storage pomocí rozhraní abs://
platí pro: SQL Server 2022 (16.x) a novější verze.
Použijte novou předponu abs
pro účet služby Azure Storage v2. Předpona abs
podporuje ověřování pomocí SHARED ACCESS SIGNATURE
. Předpona abs
nahrazuje wasb
, použitá v předchozích verzích. HADOOP se už nepodporuje, už není potřeba používat TYPE = BLOB_STORAGE
.
Klíč účtu úložiště Azure už není potřeba. Místo toho použijte token SAS, jak je vidět v následujícím příkladu:
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD= '<password>';
GO
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredentialv2
WITH
IDENTITY = 'SHARED ACCESS SIGNATURE', -- to use SAS the identity must be fixed as-is
SECRET = '<Blob_SAS_Token>';
GO
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredentialv2
);
Podrobnější příklad přístupu k souborům CSV uloženým ve službě Azure Blob Storage najdete v tématu Virtualizace souboru CSV pomocí PolyBase.
G. Vytvoření externího zdroje dat pro přístup k datům v Azure Data Lake Gen2
platí pro: SQL Server 2022 (16.x) a novější verze.
Použijte novou předponu adls
pro Azure Data Lake Gen2 a nahraďte abfs
ji v předchozích verzích. Předpona adls
také podporuje token SAS jako metodu ověřování, jak je znázorněno v tomto příkladu:
--Create a database scoped credential using SAS Token
CREATE DATABASE SCOPED CREDENTIAL datalakegen2
WITH
IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<DataLakeGen2_SAS_Token>';
GO
CREATE EXTERNAL DATA SOURCE data_lake_gen2_dfs
WITH (
LOCATION = 'adls://<container>@<storage_account>.dfs.core.windows.net',
CREDENTIAL = datalakegen2
);
Podrobnější příklad přístupu k rozdílovým souborům uloženým v Azure Data Lake Gen2 najdete v tématu Virtualizace tabulky Delta pomocí PolyBase.
Příklady: Hromadné operace
Důležité
Při konfiguraci externího /
zdroje dat pro hromadné operace nepřidávejte koncové LOCATION
parametry, název souboru ani parametry sdíleného přístupového podpisu na konci adresy URL.
H. Vytvoření externího zdroje dat pro hromadné operace načítání dat z Azure Storage
platí pro: SQL Server 2022 (16.x) a novější verze.
Pro hromadné operace pomocí funkce BULK INSERT nebo OPENROWSET použijte následující zdroj dat. Přihlašovací údaje musí být nastavené SHARED ACCESS SIGNATURE
jako identita, nesmí mít v tokenu SAS počáteční ?
oprávnění, musí mít alespoň oprávnění ke čtení souboru, který by se měl načíst (například srt=o&sp=r
) a doba vypršení platnosti by měla být platná (všechna data jsou v čase UTC). Další informace o sdílených přístupových podpisech najdete v tématu Použití sdílených přístupových podpisů (SAS).
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
-- Remove ? from the beginning of the SAS token
SECRET = '<azure_shared_access_signature>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = AccessAzureInvoices,
);
Já. Vytvoření externího zdroje dat pomocí TDS 8.0 pro připojení k jinému SQL Serveru
Platí pro: SQL Server 2025 (17.x) Preview a novější verze.
Pokud pro SQL Server používáte nejnovější ovladač Microsoft ODBC 18, musíte použít Encryption
možnost v části CONNECTION_OPTIONS
a TrustServerCertificate
je podporována. Pokud Encryption
není zadáno, výchozí chování je Encrypt=Yes;TrustServerCertificate=No;
a vyžadujete certifikát serveru.
V tomto příkladu se používá ověřování SQL. K ochraně přihlašovacích údajů potřebujete hlavní klíč databáze (DMK). Další informace naleznete v tématu CREATE MASTER KEY. Následující ukázka vytvoří přihlašovací údaje s vymezeným oborem databáze s vlastním přihlášením a heslem.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH
IDENTITY = '<username>',
SECRET = '<password>';
Název cílového serveru je WINSQL2022
, port 58137
a je to výchozí instance. Zadáním , Encryption=Strict
připojení používá TDS 8.0 a certifikát serveru je vždy ověřen. v tomto příkladu HostnameinCertificate
se používá:WINSQL2022
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2022:58137',
CONNECTION_OPTIONS = 'Encryption=Strict;HostnameInCertificate=WINSQL2022;'
CREDENTIAL = SQLServerCredentials
);
J. Vytvoření externího zdroje dat pomocí možnosti šifrování a TrustServerCertificate
Tady jsou dva ukázky kódu, které následují v předchozím příkladu. První fragment kódu má Encryption
a TrustServerCertificate
nastavil.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2022:58137',
CONNECTION_OPTIONS = 'Encryption=Yes;HostnameInCertificate=WINSQL2022;TrustServerCertificate=Yes;'
CREDENTIAL = SQLServerCredentials
);
Následující fragment kódu není Encryption
povolený.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2022:58137',
CONNECTION_OPTIONS = 'Encryption=no;'
CREDENTIAL = SQLServerCredentials
);
Související obsah
- ALTER EXTERNAL DATA SOURCE (Transact-SQL)
- Vytvořit přihlašovací údaje k databázi (Transact-SQL)
- CREATE EXTERNAL FILE FORMAT (Transact-SQL)
- VYTVOŘIT EXTERNÍ TABULKU (Transact-SQL)
- sys.external_data_sources (Transact-SQL)
- Použití sdílených přístupových podpisů (SAS)
- Konfigurace připojení PolyBase (Transact-SQL)
* SQL Database *
Azure Synapse
analýzy
Přehled: Azure SQL Database
platí pro: Azure SQL Database
Vytvoří externí zdroj dat pro elastické dotazy. Externí zdroje dat slouží k navázání připojení a podpoře těchto primárních případů použití:
- Virtualizace dat (Preview)
- Operace hromadného načítání s využitím
BULK INSERT
neboOPENROWSET
- Dotazování vzdálených instancí SQL Database nebo Azure Synapse pomocí SQL Database s elastickým dotazem
- Dotazování horizontálně dělené služby SQL Database pomocí elastického dotazu
Syntaxe
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = { BLOB_STORAGE | RDBMS | SHARD_MAP_MANAGER } ]
[ [ , ] DATABASE_NAME = '<database_name>' ]
[ [ , ] SHARD_MAP_NAME = '<shard_map_manager>' ] )
[ ; ]
Argumenty
data_source_name
Určuje uživatelem definovaný název zdroje dat. Název musí být jedinečný v rámci databáze ve službě SQL Database.
LOCATION = '<prefix>://<path[:p ort]>'
Poskytuje protokol připojení a cestu k externímu zdroji dat.
Externí zdroj dat | Předpona umístění konektoru | Cesta k lokaci | Dostupnost |
---|---|---|---|
Hromadné operace | https |
<storage_account>.blob.core.windows.net/<container> |
|
Elastický dotaz (horizontální oddíl) | Nepovinné | <shard_map_server_name>.database.windows.net |
|
ElasticKý dotaz (vzdálený) | Nepovinné | <remote_server_name>.database.windows.net |
|
EdgeHub | edgehub |
edgehub:// |
K dispozici pouze v Azure SQL Edge. EdgeHub je vždy místní pro instanci Azure SQL Edge. Proto není nutné zadávat cestu nebo hodnotu portu. |
Kafka | kafka |
kafka://<kafka_bootstrap_server_name_ip>:<port_number> |
K dispozici pouze v Azure SQL Edge. |
Účet služby Azure Storage (v2) | abs |
abs://<container_name>@<storage_account_name>.blob.core.windows.net/ nebo abs://<storage_account_name>.blob.core.windows.net/
<container_name> |
|
Azure Data Lake Storage Gen2 | adls |
adls://<container_name>@<storage_account_name>.dfs.core.windows.net/ nebo adls://<storage_account_name>.dfs.core.windows.net/<container_name> |
Cesta k umístění:
-
<shard_map_server_name>
= Název logického serveru v Azure, který hostuje správce map horizontálních oddílů. ArgumentDATABASE_NAME
poskytuje databázi použitou k hostování mapy horizontálních oddílů aSHARD_MAP_NAME
používá se pro samotnou mapu horizontálních oddílů. -
<remote_server_name>
= Název cílového logického serveru pro elastický dotaz. Název databáze je zadán pomocí argumentuDATABASE_NAME
.
Další poznámky a pokyny při nastavování umístění:
- Databázový stroj při vytváření objektu neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.
CREDENTIAL = credential_name
Určuje přihlašovací údaje s oborem databáze pro ověřování v externím zdroji dat.
Další poznámky a pokyny při vytváření přihlašovacích údajů:
- Pokud chcete načíst data ze služby Azure Storage do služby Azure SQL Database, použijte sdílený přístupový podpis (token SAS).
-
CREDENTIAL
vyžaduje se pouze v případě, že jsou data zabezpečená.CREDENTIAL
nevyžaduje se u datových sad, které umožňují anonymní přístup. - Pokud se přihlašovací
TYPE
=BLOB_STORAGE
údaje musí vytvořit jakoSHARED ACCESS SIGNATURE
identita. - Při připojování ke službě Azure Storage přes konektor WASB[s] je potřeba provést ověřování pomocí klíče účtu úložiště, nikoli pomocí sdíleného přístupového podpisu (SAS).
- Pokud
TYPE
=HADOOP
je nutné vytvořit přihlašovací údaje pomocí klíče účtu úložiště jakoSECRET
klíče . -
TYPE
=BLOB_STORAGE
je povolena pouze pro hromadné operace; Nelze vytvořit externí tabulky pro externí zdroj dat sTYPE
=BLOB_STORAGE
.
Sdílený přístupový podpis můžete vytvořit několika způsoby:
Token SAS můžete vytvořit tak, že přejdete na web Azure Portal -><Your_Storage_Account> –> Sdílený přístupový podpis –> Konfigurace oprávnění –> Vygenerování SAS a připojovacího řetězce. Další informace najdete v tématu Generování sdíleného přístupového podpisu.
Sas můžete vytvořit a nakonfigurovat pomocí Průzkumníka služby Azure Storage.
Token SAS můžete vytvořit programově prostřednictvím PowerShellu, Azure CLI, .NET a rozhraní REST API. Další informace najdete v tématu Udělení omezeného přístupu k prostředkům Azure Storage pomocí sdílených přístupových podpisů (SAS).
Token SAS by měl být nakonfigurovaný takto:
- Když se vygeneruje token SAS, obsahuje na začátku tokenu otazník (?). Při konfiguraci tajného kódu vyloučí počáteční
?
. - Použijte platnou dobu vypršení platnosti (všechna data jsou v čase UTC).
- Když se vygeneruje token SAS, obsahuje na začátku tokenu otazník (?). Při konfiguraci tajného kódu vyloučí počáteční
Udělte alespoň oprávnění ke čtení souboru, který by se měl načíst (například
srt=o&sp=r
). Pro různé případy použití je možné vytvořit více sdílených přístupových podpisů. Oprávnění by měla být udělena následujícím způsobem:Činnost Povolení Čtení dat ze souboru Čti Čtení dat z více souborů a podsložek Číst a seznamovat Použití možnosti Vytvořit externí tabulku jako výběr (CETAS) Čtení, vytváření a zápis
Příklad použití příkazu CREDENTIAL
with SHARED ACCESS SIGNATURE
aTYPE
= BLOB_STORAGE
, viz Vytvoření externího zdroje dat pro provádění hromadných operací a načtení dat ze služby Azure Storage do SQL Database
Pokud chcete vytvořit přihlašovací údaje s vymezeným oborem databáze, přečtěte si téma CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
TYPE = * [ BLOB_STORAGE | RDBMS | SHARD_MAP_MANAGER ] *
Určuje typ nakonfigurovaného externího zdroje dat. Tento parametr není vždy povinný a měl by být k dispozici pouze pro některé externí zdroje dat.
- Používá se
RDBMS
pro dotazy napříč databázemi pomocí elastického dotazu ze služby SQL Database. - Používá se
SHARD_MAP_MANAGER
při vytváření externího zdroje dat při připojování k horizontálně dělené službě SQL Database. - Slouží
BLOB_STORAGE
pouze pro použití s předponouhttps
. Proabd
aadls
předpony nezadáteTYPE
.
Důležité
Nenastavujte TYPE
, pokud používáte jiný externí zdroj dat.
DATABASE_NAME = database_name
Nakonfigurujte tento argument, pokud je nastavena TYPE
RDBMS
na hodnotu nebo SHARD_MAP_MANAGER
.
TYP | Hodnota DATABASE_NAME |
---|---|
RDBMS |
Název vzdálené databáze na serveru poskytnutém pomocí LOCATION |
SHARD_MAP_MANAGER |
Název databáze, která funguje jako správce mapování horizontálních oddílů |
Příklad znázorňující, jak vytvořit externí zdroj dat, kde TYPE = RDBMS
, najdete v tématu Vytvoření externího zdroje dat RDBMS.
SHARD_MAP_NAME = shard_map_name
Používá se TYPE
, pokud je argument nastaven pouze pro SHARD_MAP_MANAGER
nastavení názvu mapování horizontálních oddílů.
Příklad znázorňující, jak vytvořit externí zdroj dat, kde TYPE
= SHARD_MAP_MANAGER
odkazuje na Vytvoření externího zdroje mapování horizontálních oddílů
Povolení
Vyžaduje CONTROL
oprávnění k databázi ve službě Azure SQL Database.
Uzamčení
Vezme sdílený zámek objektu EXTERNAL DATA SOURCE
.
Příklady
A. Vytvoření externího zdroje dat správce mapování horizontálních oddílů
Chcete-li vytvořit externí zdroj dat pro odkaz na SHARD_MAP_MANAGER
databázi , zadejte název serveru služby SQL Database, který je hostitelem správce mapování horizontálních oddílů ve službě SQL Database nebo databáze SQL Serveru na virtuálním počítači.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred
WITH IDENTITY = '<username>',
SECRET = '<password>';
CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc
WITH (
TYPE = SHARD_MAP_MANAGER,
LOCATION = '<server_name>.database.windows.net',
DATABASE_NAME = 'ElasticScaleStarterKit_ShardMapManagerDb',
CREDENTIAL = ElasticDBQueryCred,
SHARD_MAP_NAME = 'CustomerIDShardMap'
);
Podrobný kurz najdete v tématu Začínáme s elastickými dotazy pro horizontální dělení (horizontální dělení).
B. Vytvoření externího zdroje dat RDBMS
Chcete-li vytvořit externí zdroj dat, který bude odkazovat na rdBMS, určuje název serveru služby SQL Database vzdálené databáze ve službě SQL Database.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL SQL_Credential
WITH IDENTITY = '<username>',
SECRET = '<password>';
CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc
WITH (
TYPE = RDBMS,
LOCATION = '<server_name>.database.windows.net',
DATABASE_NAME = 'Customers',
CREDENTIAL = SQL_Credential
);
Podrobný kurz k RDBMS najdete v tématu Začínáme s dotazy napříč databázemi (vertikální dělení).
Příklady: Hromadné operace
Důležité
Při konfiguraci externího /
zdroje dat pro hromadné operace nepřidávejte LOCATION
koncové parametry, název souboru ani parametry sdíleného přístupového podpisu na konci adresy URL.
C. Vytvoření externího zdroje dat pro hromadné operace načítání dat z Azure Storage
Pro hromadné operace pomocí funkce BULK INSERT (Transact-SQL) nebo OPENROWSET (Transact-SQL) použijte následující zdroj dat. Přihlašovací údaje musí být nastavené SHARED ACCESS SIGNATURE
jako identita, nesmí mít v tokenu SAS počáteční ?
oprávnění, musí mít alespoň oprávnění ke čtení souboru, který by se měl načíst (například srt=o&sp=r
) a doba vypršení platnosti by měla být platná (všechna data jsou v čase UTC). Další informace o sdílených přístupových podpisech najdete v tématu Použití sdílených přístupových podpisů (SAS).
Vytvoření externího zdroje dat pro Azure Blob Storage (ABS) pomocí spravované identity:
CREATE DATABASE SCOPED CREDENTIAL DSC_MI
WITH IDENTITY = 'Managed Identity'
--Create external data source pointing to the file path, and referencing database-scoped credential:
CREATE EXTERNAL DATA SOURCE PrivateABS
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/'
,CREDENTIAL = [DSC_MI]);
Vytvoření externího zdroje dat pro Azure Data Lake Gen2 (ADLS) pomocí identity uživatele:
CREATE DATABASE SCOPED CREDENTIAL DSC_ADLS
WITH IDENTITY = 'User Identity'
--Create external data source pointing to the file path, and referencing database-scoped credential:
CREATE EXTERNAL DATA SOURCE PrivateADLS
WITH (
LOCATION = 'adls://<container>@<storage_account_name>.dfs.core.windows.net/'
,CREDENTIAL = [DSC_ADLS]);
Pokud se chcete podívat na tento příklad, podívejte se na příkaz BULK INSERT.
Příklady: Azure SQL Edge
Důležité
Informace o konfiguraci externích dat pro Azure SQL Edge najdete v tématu Streamování dat v Azure SQL Edge.
A. Vytvoření externího zdroje dat pro odkazování na Kafka
Platí jenom pro:Azure SQL Edge
V tomto příkladu je externím zdrojem dat server Kafka s IP adresou xxx.xxx.xxx.xxx a nasloucháním na portu 1900. Externí zdroj dat Kafka je určen pouze pro streamování dat a nepodporuje nabízení predikátů.
-- Create an External Data Source for Kafka
CREATE EXTERNAL DATA SOURCE MyKafkaServer
WITH (LOCATION = 'kafka://xxx.xxx.xxx.xxx:1900');
B. Vytvoření externího zdroje dat pro odkazování na EdgeHub
Platí jenom pro:Azure SQL Edge
V tomto příkladu je externím zdrojem dat EdgeHub spuštěný na stejném hraničním zařízení jako Azure SQL Edge. Externí zdroj dat EdgeHubu je určený jenom pro streamování dat a nepodporuje predikát push down.
-- Create an External Data Source for Kafka
CREATE EXTERNAL DATA SOURCE MyEdgeHub
WITH (LOCATION = 'edgehub://');
Související obsah
* Azure Synapse
Analýza *
Přehled: Azure Synapse Analytics
platí pro: Azure Synapse Analytics
Vytvoří externí zdroj dat pro virtualizaci dat. Externí zdroje dat se používají k navázání připojení a podpoře primárního případu virtualizace dat a načítání dat z externích zdrojů dat. Další informace najdete v tématu Použití externích tabulek se službou Synapse SQL.
Důležité
Pokud chcete vytvořit externí zdroj dat pro dotazování prostředku Azure Synapse Analytics pomocí azure SQL Database s elastickým dotazem, přečtěte si téma VYTVOŘENÍ EXTERNÍHO ZDROJE DAT pro Azure SQL Database.
Syntaxe
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = HADOOP ]
)
[ ; ]
Argumenty
data_source_name
Určuje uživatelem definovaný název zdroje dat. Název musí být jedinečný v rámci služby Azure SQL Database ve službě Azure Synapse Analytics.
LOCATION = '<prefix>://<path>'
Poskytuje protokol připojení a cestu k externímu zdroji dat.
Externí zdroj dat | Předpona umístění konektoru | Cesta k lokaci |
---|---|---|
Data Lake Storage* Gen1 | adl |
<storage_account>.azuredatalake.net |
Data Lake Storage Gen2 | abfs[s] |
<container>@<storage_account>.dfs.core.windows.net |
Azure Blob Storage (Úložiště Azure pro objekty typu blob) | wasbs |
<container>@<storage_account>.blob.core.windows.net |
Azure Blob Storage (Úložiště Azure pro objekty typu blob) | https |
<storage_account>.blob.core.windows.net/<container>/subfolders |
Data Lake Storage Gen1 | http[s] |
<storage_account>.azuredatalakestore.net/webhdfs/v1 |
Data Lake Storage Gen2 | http[s] |
<storage_account>.dfs.core.windows.net/<container>/subfolders |
Data Lake Storage Gen2 | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
* Microsoft Azure Data Lake Storage Gen1 má omezenou podporu. Gen2 se doporučuje pro veškerý nový vývoj.
Externí zdroj dat | Předpona umístění konektoru | Vyhrazené fondy SQL: PolyBase | Vyhrazené fondy SQL: nativní* | Bezserverové fondy SQL |
---|---|---|---|---|
Data Lake Storage** Gen1 | adl |
Ne | Ne | Ano |
Data Lake Storage Gen2 | abfs[s] |
Ano | Ano | Ano |
Azure Blob Storage (Úložiště Azure pro objekty typu blob) | wasbs |
Ano | Ano*** | Ano |
Azure Blob Storage (Úložiště Azure pro objekty typu blob) | https |
Ne | Ano | Ano |
Data Lake Storage Gen1 | http[s] |
Ne | Ne | Ano |
Data Lake Storage Gen2 | http[s] |
Ano | Ano | Ano |
Data Lake Storage Gen2 | wasb[s] |
Ano | Ano | Ano |
* Bezserverové a vyhrazené fondy SQL ve službě Azure Synapse Analytics používají různé základy kódu pro virtualizaci dat. Bezserverové fondy SQL podporují nativní technologii virtualizace dat. Vyhrazené fondy SQL podporují nativní i virtualizaci dat PolyBase. Virtualizace dat PolyBase se používá při vytváření EXTERNÍHO ZDROJE DAT s TYPE=HADOOP
.
** Microsoft Azure Data Lake Storage Gen1 má omezenou podporu. Gen2 se doporučuje pro veškerý nový vývoj.
wasbs
Bezpečnější konektor se doporučuje více wasb
než . Pouze nativní virtualizace dat ve vyhrazených fondech SQL (kde TYPE nerovná HADOOP) podporuje wasb
.
Cesta k umístění:
-
<container>
= kontejner účtu úložiště, ve kterém jsou uložená data. Kořenové kontejnery jsou jen pro čtení, data se nedají zapsat zpět do kontejneru. -
<storage_account>
= název účtu úložiště prostředku Azure.
Další poznámky a pokyny při nastavování umístění:
- Výchozí možností je použít
enable secure SSL connections
při zřizování Azure Data Lake Storage Gen2. Pokud je tato možnost povolená, musíte použítabfss
, když je vybrané zabezpečené připojení TLS/SSL, i kdyžabfss
funguje i pro nezabezpečená připojení TLS. Další informace najdete v ovladači systému souborů Azure Blob (ABFS). - Azure Synapse při vytváření objektu neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.
- Při dotazování Hadoopu použijte stejný externí zdroj dat pro všechny tabulky, abyste zajistili konzistentní sémantiku dotazování.
-
https:
Předpona umožňuje v cestě používat podsložku.https
není k dispozici pro všechny metody přístupu k datům. -
wasbs
se doporučuje, protože se data posílají pomocí zabezpečeného připojení TLS. - Hierarchické obory názvů se nepodporují u účtů úložiště Azure V2 při přístupu k datům pomocí staršího
wasb://
rozhraní, ale použitíwasbs://
podporuje hierarchické obory názvů.
CREDENTIAL = credential_name
Volitelný. Určuje přihlašovací údaje s vymezeným oborem databáze pro ověřování v externím zdroji dat. Externí zdroj dat bez přihlašovacích údajů má přístup k veřejnému účtu úložiště nebo používá identitu Microsoft Entra volajícího pro přístup k souborům v úložišti Azure.
Další poznámky a pokyny při vytváření přihlašovacích údajů:
- Pokud chcete načíst data ze služby Azure Storage nebo Azure Data Lake Store (ADLS) Gen2 do Azure Synapse Analytics, použijte klíč úložiště Azure.
-
CREDENTIAL
vyžaduje se pouze v případě, že jsou data zabezpečená.CREDENTIAL
nevyžaduje se u datových sad, které umožňují anonymní přístup.
Pokud chcete vytvořit přihlašovací údaje s vymezeným oborem databáze, přečtěte si téma CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
V bezserverovém fondu SQL můžou přihlašovací údaje v oboru databáze určovat spravovanou identitu pracovního prostoru, název instančního objektu nebo token sdíleného přístupového podpisu (SAS). Přístup prostřednictvím identity uživatele, označované také jako předávání Microsoft Entra, je také možný v přihlašovacích údajích s vymezeným oborem databáze, stejně jako anonymní přístup k veřejně dostupnému úložišti. Další informace naleznete v tématu Podporované typy autorizace úložiště.
Ve vyhrazeném fondu SQL můžou přihlašovací údaje s vymezeným oborem databáze určovat token sdíleného přístupového podpisu (SAS), přístupový klíč úložiště, instanční objekt, spravovanou identitu pracovního prostoru nebo předávání Microsoft Entra.
TYPE = HADOOP
Volitelné, nedoporučuje se.
Typ můžete zadat pouze s vyhrazenými fondy SQL.
HADOOP
je jediná povolená hodnota, pokud je zadána. Externí zdroje dat s TYPE=HADOOP
jsou k dispozici pouze ve vyhrazených fondech SQL.
Pro starší implementace použijte HADOOP, jinak se doporučuje použít novější nativní přístup k datům. Nezadávejte argument TYP pro použití novějšího nativního přístupu k datům.
Příklad použití TYPE = HADOOP
k načtení dat ze služby Azure Storage najdete v tématu Vytvoření externího zdroje dat pro odkazování na Azure Data Lake Store Gen1 nebo 2 pomocí instančního objektu.
Bezserverové a vyhrazené fondy SQL ve službě Azure Synapse Analytics používají různé základy kódu pro virtualizaci dat. Bezserverové fondy SQL podporují nativní technologii virtualizace dat. Vyhrazené fondy SQL podporují nativní i virtualizaci dat PolyBase. Virtualizace dat PolyBase se používá při vytváření EXTERNÍHO ZDROJE DAT s TYPE=HADOOP
.
Povolení
Vyžaduje CONTROL
oprávnění k databázi.
Uzamčení
Vezme sdílený zámek objektu EXTERNAL DATA SOURCE
.
Bezpečnost
Většina externích zdrojů dat podporuje ověřování na základě proxy serveru pomocí přihlašovacích údajů v oboru databáze k vytvoření účtu proxy serveru.
Pro ověřování účtů Azure Data Lake Store Gen2 se podporují klíče sdíleného přístupového podpisu (SAS). Zákazníci, kteří chtějí provést ověření pomocí sdíleného přístupového podpisu, musí vytvořit přihlašovací údaje s vymezeným oborem databáze, kde IDENTITY = "Shared Access Signature"
a jako tajný klíč zadat token SAS.
Pokud vytvoříte přihlašovací údaje s vymezeným oborem databáze, kde IDENTITY = "Shared Access Signature"
a jako tajný klíč použijete hodnotu klíče úložiště, zobrazí se následující chybová zpráva:
'HdfsBridge::isDirExist - Unexpected error encountered checking whether directory exists or not: AbfsRestOperationException: Operation failed: "Server failed to authenticate the request. Please refer to the information in the www-authenticate header.", 401, HEAD, [Storage path URL]'
Příklady
A. Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Storage pomocí rozhraní wasb://
V tomto příkladu je externím zdrojem dat účet Azure Storage V2 s názvem logs
. Kontejner úložiště se nazývá daily
. Externí zdroj dat Azure Storage je určený pouze pro přenos dat. Nepodporuje predikát push-down. Hierarchické obory názvů nejsou podporovány při přístupu k datům přes wasb://
rozhraní. Při připojování ke službě Azure Storage prostřednictvím wasb
nebo wasbs
musí být ověřování provedeno pomocí klíče účtu úložiště, nikoli se sdíleným přístupovým podpisem (SAS).
V tomto příkladu se používá starší verze metody přístupu založené na javě HADOOP. Následující ukázka ukazuje, jak vytvořit přihlašovací údaje s vymezeným oborem databáze pro ověřování ve službě Azure Storage. Zadejte klíč účtu služby Azure Storage v tajném klíči přihlašovacích údajů databáze. V identitě přihlašovacích údajů s oborem databáze můžete zadat libovolný řetězec, protože se nepoužívá při ověřování v úložišti Azure.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential,
TYPE = HADOOP
);
B. Vytvoření externího zdroje dat pro odkazování na Azure Data Lake Store Gen1 nebo 2 pomocí instančního objektu
Připojení ke službě Azure Data Lake Store může být založené na identifikátoru ADLS URI a instančním objektu vaší aplikace Microsoft Entra. Dokumentaci k vytvoření této aplikace najdete v ověřování Data Lake Store pomocí Microsoft Entra ID.
-- If you do not have a Master Key on your DW you will need to create one.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- These values come from your Microsoft Entra application used to authenticate to ADLS
CREATE DATABASE SCOPED CREDENTIAL ADLS_credential
WITH
-- IDENTITY = '<clientID>@<OAuth2.0TokenEndPoint>' ,
IDENTITY = '536540b4-4239-45fe-b9a3-629f97591c0c@https://login.microsoftonline.com/42f988bf-85f1-41af-91ab-2d2cd011da47/oauth2/token',
-- SECRET = '<KEY>'
SECRET = 'BjdIlmtKp4Fpyh9hIvr8HJlUida/seM5kQ3EpLAmeDI=';
-- For Gen 1 - Create an external data source
-- TYPE: HADOOP - PolyBase uses Hadoop APIs to access data in Azure Data Lake Storage.
-- LOCATION: Provide Data Lake Storage Gen 1 account name and URI
-- CREDENTIAL: Provide the credential created in the previous step
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH (
LOCATION = 'adl://newyorktaxidataset.azuredatalakestore.net',
CREDENTIAL = ADLS_credential,
TYPE = HADOOP
);
-- For Gen2 - Create an external data source
-- TYPE: HADOOP - PolyBase uses Hadoop APIs to access data in Azure Data Lake Storage.
-- LOCATION: Provide Data Lake Storage Gen2 account name and URI
-- CREDENTIAL: Provide the credential created in the previous step
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH (
-- Note the abfss endpoint when your account has secure transfer enabled
LOCATION = 'abfss://data@newyorktaxidataset.dfs.core.windows.net',
CREDENTIAL = ADLS_credential,
TYPE = HADOOP
);
C. Vytvoření externího zdroje dat pro odkazování na Azure Data Lake Store Gen2 pomocí klíče účtu úložiště
-- If you do not have a Master Key on your DW you will need to create one.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL ADLS_credential
WITH
-- IDENTITY = '<storage_account_name>' ,
IDENTITY = 'newyorktaxidata',
-- SECRET = '<storage_account_key>'
SECRET = 'yz5N4+bxSb89McdiysJAzo+9hgEHcJRJuXbF/uC3mhbezES/oe00vXnZEl14U0lN3vxrFKsphKov16C0w6aiTQ==';
-- Note this example uses a Gen2 secured endpoint (abfss)
CREATE EXTERNAL DATA SOURCE < data_source_name >
WITH (
LOCATION = 'abfss://2013@newyorktaxidataset.dfs.core.windows.net',
CREDENTIAL = ADLS_credential,
TYPE = HADOOP
);
D. Vytvoření externího zdroje dat do Azure Data Lake Store Gen2 pomocí abfs://
Při připojování k účtu Azure Data Lake Store Gen2 pomocí mechanismu spravované identity není nutné zadávat TAJNÝ KÓD.
-- If you do not have a Master Key on your DW you will need to create one
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
--Create database scoped credential with **IDENTITY = 'Managed Service Identity'**
CREATE DATABASE SCOPED CREDENTIAL msi_cred
WITH IDENTITY = 'Managed Service Identity';
--Create external data source with abfss:// scheme for connecting to your Azure Data Lake Store Gen2 account
CREATE EXTERNAL DATA SOURCE ext_datasource_with_abfss
WITH (
TYPE = HADOOP,
LOCATION = 'abfss://myfile@mystorageaccount.dfs.core.windows.net',
CREDENTIAL = msi_cred
);
Související obsah
- Vytvořit přihlašovací údaje k databázi (Transact-SQL)
- CREATE EXTERNAL FILE FORMAT (Transact-SQL)
- VYTVOŘIT EXTERNÍ TABULKU (Transact-SQL)
- CREATE EXTERNAL TABLE AS SELECT (Azure Synapse Analytics)
- CREATE TABLE AS SELECT (Azure Synapse Analytics)
- sys.external_data_sources (Transact-SQL)
- Použití sdílených přístupových podpisů (SAS)
Azure Synapse
analýzy
*Analytika
Systém platformy (PDW) *
Přehled: Systém analytických platforem
Platí pro: Analytics Platform System (PDW)
Vytvoří externí zdroj dat pro dotazy PolyBase. Externí zdroje dat slouží k navázání připojení a podpoře následujícího případu použití: Virtualizace dat a načítání dat pomocí virtualizace dat s PolyBase na SQL Serveru.
Syntaxe
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = HADOOP ]
[ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]
Argumenty
data_source_name
Určuje uživatelem definovaný název zdroje dat. Název musí být jedinečný v rámci serveru v systému PDW (Analytics Platform System).
LOCATION = '<prefix>://<path[:p ort]>'
Poskytuje protokol připojení a cestu k externímu zdroji dat.
Externí zdroj dat | Předpona umístění konektoru | Cesta k lokaci |
---|---|---|
Cloudera CDH nebo Hortonworks HDP | hdfs |
<Namenode>[:port] |
Účet služby Azure Storage | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Cesta k umístění:
-
<Namenode>
= název počítače, identifikátor URI služby name nebo IP adresa clusteruNamenode
Hadoop. PolyBase musí přeložit všechny názvy DNS používané clusterem Hadoop. -
port
= Port, na který externí zdroj dat naslouchá. V Hadoopu najdete port pomocí konfiguračního parametrufs.defaultFS
. Výchozí hodnota je 8020. -
<container>
= kontejner účtu úložiště, ve kterém jsou uložená data. Kořenové kontejnery jsou jen pro čtení, data se nedají zapsat zpět do kontejneru. -
<storage_account>
= název účtu úložiště prostředku Azure.
Další poznámky a pokyny při nastavování umístění:
- Modul PDW při vytváření objektu neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.
- Při dotazování Hadoopu použijte stejný externí zdroj dat pro všechny tabulky, abyste zajistili konzistentní sémantiku dotazování.
-
wasbs
se doporučuje, protože se data posílají pomocí zabezpečeného připojení TLS. - Hierarchické obory názvů se nepodporují při použití s účty Azure Storage přes wasb://.
- Pokud chcete zajistit úspěšné dotazy PolyBase během převzetí služeb při selhání Hadoopu
Namenode
, zvažte použití virtuální IP adresy proNamenode
cluster Hadoop. Pokud ne, spusťte PŘÍKAZ ALTER EXTERNAL DATA SOURCE tak, aby odkazovat na nové umístění.
CREDENTIAL = credential_name
Určuje přihlašovací údaje s oborem databáze pro ověřování v externím zdroji dat.
Další poznámky a pokyny při vytváření přihlašovacích údajů:
- Pokud chcete načíst data ze služby Azure Storage do Azure Synapse nebo PDW, použijte klíč úložiště Azure.
-
CREDENTIAL
vyžaduje se pouze v případě, že jsou data zabezpečená.CREDENTIAL
nevyžaduje se u datových sad, které umožňují anonymní přístup.
TYP = * [ HADOOP ] *
Určuje typ nakonfigurovaného externího zdroje dat. Tento parametr není vždy povinný.
- Hadoop použijte, pokud je externím zdrojem dat Cloudera CDH, Hortonworks HDP nebo Azure Storage.
Příklad použití TYPE
= HADOOP
k načtení dat ze služby Azure Storage najdete v tématu Vytvoření externího zdroje dat pro odkazování na Hadoop.
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
V SQL Serveru 2019 (15.x) nezadávejte RESOURCE_MANAGER_LOCATION, pokud se nepřipojíte ke cloudera CDH, Hortonworks HDP, účtu Azure Storage.
Tuto volitelnou hodnotu nakonfigurujte pouze při připojování k Cloudera CDH, Hortonworks HDP nebo účtu Azure Storage. Úplný seznam podporovaných verzí Hadoopu najdete v tématu Konfigurace připojení PolyBase (Transact-SQL).
RESOURCE_MANAGER_LOCATION
Když je definován, optimalizátor dotazů provede rozhodnutí na základě nákladů za účelem zlepšení výkonu. Úlohu MapReduce lze použít k posunu výpočtů do Hadoopu. Určením RESOURCE_MANAGER_LOCATION
může výrazně snížit objem dat přenášených mezi Hadoopem a SQL, což může vést ke zlepšení výkonu dotazů.
Pokud není Zadaný Resource Manager, je nabízení výpočetních prostředků do Hadoopu zakázané pro dotazy PolyBase. Vytvoření externího zdroje dat pro odkazování na Hadoop s povoleným push-down poskytuje konkrétní příklad a další pokyny.
Hodnota RESOURCE_MANAGER_LOCATION se při vytváření externího zdroje dat neověřuje. Zadání nesprávné hodnoty může způsobit selhání dotazu při spuštění při každém pokusu o nasdílení změn, protože zadaná hodnota by nebyla schopna vyřešit.
Aby polyBase fungovala správně s externím zdrojem dat Hadoop, musí být otevřené porty pro následující komponenty clusteru Hadoop:
- Porty HDFS
- Uzel NameNode
- Datový uzel
- Resource Manager
- Odeslání úlohy
- Historie úlohy
Pokud není port zadaný, zvolí se výchozí hodnota s použitím aktuálního nastavení pro konfiguraci připojení hadoop.
Připojení Hadoopu | Výchozí port Resource Manageru |
---|---|
1 |
50300 |
2 |
50300 |
3 |
8021 |
4 |
8032 |
5 |
8050 |
6 |
8032 |
7 |
8050 |
Následující tabulka uvádí výchozí porty pro tyto komponenty. Existuje závislost na verzi Hadoopu i možnost vlastní konfigurace, která nepoužívá výchozí přiřazení portu.
Komponenta clusteru Hadoop | Výchozí port |
---|---|
Uzel NameNode | 8020 |
Datový uzel (přenos dat, port IPC bez oprávnění) | 50010 |
Datový uzel (přenos dat, port IPC oprávnění) | 1019 |
Odeslání úlohy Resource Manageru (Hortonworks 1.3) | 50300 |
Odeslání úlohy Resource Manageru (Cloudera 4.3) | 8021 |
Odeslání úlohy Resource Manageru (Hortonworks 2.0 ve Windows, Cloudera 5.x v Linuxu) | 8032 |
Odeslání úlohy Resource Manageru (Hortonworks 2.x, 3.0 v Linuxu, Hortonworks 2.1-3 ve Windows) | 8050 |
Historie úloh Resource Manageru | 10020 |
Povolení
Vyžaduje CONTROL
oprávnění k databázi v systému PDW (Analytics Platform System).
Poznámka:
V předchozích verzích PDW vytvořte požadovaná ALTER ANY EXTERNAL DATA SOURCE
oprávnění k externímu zdroji dat.
Uzamčení
Vezme sdílený zámek objektu EXTERNAL DATA SOURCE
.
Bezpečnost
PolyBase podporuje ověřování na základě proxy serveru pro většinu externích zdrojů dat. Vytvořte přihlašovací údaje s vymezeným oborem databáze a vytvořte účet proxy serveru.
Token SAS s typem HADOOP
není podporován. Podporuje se pouze u typu = BLOB_STORAGE
při použití přístupového klíče účtu úložiště. Pokus o vytvoření externího zdroje dat s typem HADOOP
a přihlašovací údaje SAS selžou s následující chybou:
Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account are not valid.: Error [Parameters provided to connect to the Azure storage account are not valid.] occurred while accessing external file.'
Příklady
A. Vytvoření externího zdroje dat pro odkazování na Hadoop
Pokud chcete vytvořit externí zdroj dat, který bude odkazovat na hortonworks HDP nebo Cloudera CDH, zadejte název počítače nebo IP adresu Hadoopu Namenode
a portu.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8050',
TYPE = HADOOP
);
B. Vytvoření externího zdroje dat pro odkazování na Hadoop s povoleným push-down
RESOURCE_MANAGER_LOCATION
Zadejte možnost povolení výpočtu push-down do Hadoopu pro dotazy PolyBase. Jakmile je tato možnost povolená, polyBase provede rozhodnutí na základě nákladů, které určí, jestli se má výpočet dotazu odeslat do Hadoopu.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8020',
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
C. Vytvoření externího zdroje dat pro odkazování na Hadoop zabezpečený protokolem Kerberos
Pokud chcete ověřit, jestli je cluster Hadoop zabezpečený protokolem Kerberos, zkontrolujte hodnotu hadoop.security.authentication
vlastnosti v systému Hadoop core-site.xml. Pokud chcete odkazovat na cluster Hadoop zabezpečený protokolem Kerberos, musíte zadat přihlašovací údaje s oborem databáze, které obsahují vaše uživatelské jméno a heslo kerberos. Hlavní klíč databáze slouží k šifrování tajného klíče přihlašovacích údajů s vymezeným oborem databáze.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH IDENTITY = '<hadoop_user_name>',
SECRET = '<hadoop_password>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Storage pomocí rozhraní wasb://
V tomto příkladu je externím zdrojem dat účet azure V2 Storage s názvem logs
. Kontejner úložiště se nazývá daily
. Externí zdroj dat Azure Storage je určený pouze pro přenos dat. Nepodporuje predikát push-down. Hierarchické obory názvů nejsou podporovány při přístupu k datům přes wasb://
rozhraní. Při připojování ke službě Azure Storage prostřednictvím wasb
nebo wasbs
musí být ověřování provedeno pomocí klíče účtu úložiště, nikoli se sdíleným přístupovým podpisem (SAS).
Tento příklad ukazuje, jak vytvořit přihlašovací údaje s vymezeným oborem databáze pro ověřování ve službě Azure Storage. Zadejte klíč účtu úložiště Azure v tajném kódu přihlašovacích údajů databáze. V identitě přihlašovacích údajů s oborem databáze můžete zadat libovolný řetězec, protože se nepoužívá při ověřování v úložišti Azure.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential,
TYPE = HADOOP
);
Související obsah
* SQL Managed Instance *
Azure Synapse
analýzy
Přehled: Azure SQL Managed Instance
Platí pro: Azure SQL Managed Instance
Vytvoří externí zdroj dat ve službě Azure SQL Managed Instance. Úplné informace najdete v tématu Virtualizace dat pomocí služby Azure SQL Managed Instance.
Virtualizace dat ve službě Azure SQL Managed Instance poskytuje přístup k externím datům v různých formátech souborů prostřednictvím OPENROWSET nebo CREATE EXTERNAL TABLE.
Syntaxe
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
)
[ ; ]
Argumenty
data_source_name
Určuje uživatelem definovaný název zdroje dat. Název musí být v databázi jedinečný.
LOCATION = '<prefix>://<path[:p ort]>'
Poskytuje protokol připojení a cestu k externímu zdroji dat.
Externí zdroj dat | Předpona umístění | Cesta k lokaci |
---|---|---|
Azure Blob Storage (Úložiště Azure pro objekty typu blob) | abs |
abs://<container>@<storage_account>.blob.core.windows.net/<path>/<file_name> |
Azure Data Lake Service Gen2 | adls |
adls://<container>@<storage_account>.dfs.core.windows.net/<path>/<file_name> |
Databázový stroj při vytváření objektu neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.
Při konfiguraci externího / zdroje dat pro hromadné operace nepřidávejte LOCATION
koncové parametry, název souboru ani parametry sdíleného přístupového podpisu na konci adresy URL.
CREDENTIAL = credential_name
Určuje přihlašovací údaje s oborem databáze pro ověřování v externím zdroji dat.
Další poznámky a pokyny při vytváření přihlašovacích údajů:
- Pokud chcete načíst data ze služby Azure Storage do spravované instance Azure SQL, použijte sdílený přístupový podpis (token SAS).
-
CREDENTIAL
vyžaduje se pouze v případě, že jsou data zabezpečená.CREDENTIAL
nevyžaduje se u datových sad, které umožňují anonymní přístup. - Pokud se vyžaduje přihlašovací údaje, musí se přihlašovací údaje vytvořit pomocí
Managed Identity
identity neboSHARED ACCESS SIGNATURE
jako identita. Pokud chcete vytvořit přihlašovací údaje s vymezeným oborem databáze, přečtěte si téma CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
Použití identity spravované služby pro přihlašovací údaje v oboru databáze:
Specifikovat
WITH IDENTITY = 'Managed Identity'
Použijte identitu spravované služby přiřazené systémem spravované instance Azure SQL, která musí být povolená, pokud se má pro tento účel použít.
- Udělte čtenáři roli Azure RBAC identitě spravované služby přiřazené systémem spravované instance Azure SQL k potřebným kontejnerům Azure Blob Storage. Například prostřednictvím webu Azure Portal si přečtěte téma Přiřazení rolí Azure pomocí webu Azure Portal.
Vytvoření sdíleného přístupového podpisu (SAS) pro přihlašovací údaje v oboru databáze:
Specifikovat
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = ...
Sdílený přístupový podpis můžete vytvořit několika způsoby:
- Token SAS můžete získat tak, že přejdete na web Azure Portal -><Your_Storage_Account> –> Sdílený přístupový podpis –> Konfigurace oprávnění –> Vygenerování SAS a připojovacího řetězce. Další informace najdete v tématu Generování sdíleného přístupového podpisu.
- Sas můžete vytvořit a nakonfigurovat pomocí Průzkumníka služby Azure Storage.
- Token SAS můžete vytvořit programově prostřednictvím PowerShellu, Azure CLI, .NET a rozhraní REST API. Další informace najdete v tématu Udělení omezeného přístupu k prostředkům Azure Storage pomocí sdílených přístupových podpisů (SAS).
Token SAS by měl být nakonfigurovaný takto:
- Když se vygeneruje token SAS, obsahuje na začátku tokenu otazník (?). Při konfiguraci tajného kódu vyloučí počáteční
?
. - Použijte platnou dobu vypršení platnosti (všechna data jsou v čase UTC).
- Když se vygeneruje token SAS, obsahuje na začátku tokenu otazník (?). Při konfiguraci tajného kódu vyloučí počáteční
Udělte alespoň oprávnění ke čtení souboru, který by se měl načíst (například
srt=o&sp=r
). Pro různé případy použití je možné vytvořit více sdílených přístupových podpisů. Oprávnění by měla být udělena následujícím způsobem:Činnost Povolení Čtení dat ze souboru Čti Čtení dat z více souborů a podsložek Číst a seznamovat Použití možnosti Vytvořit externí tabulku jako výběr (CETAS) Čtení, vytváření a zápis
Povolení
Vyžaduje CONTROL
oprávnění k databázi ve službě Azure SQL Managed Instance.
Uzamčení
Vezme sdílený zámek objektu EXTERNAL DATA SOURCE
.
Příklady
Další příklady najdete v tématu Virtualizace dat se službou Azure SQL Managed Instance.
A. Dotazování externích dat ze spravované instance Azure SQL pomocí OPENROWSET nebo externí tabulky
Další příklady najdete v tématu VYTVOŘENÍ EXTERNÍHO ZDROJE DAT (Transact-SQL) nebo v tématu Virtualizace dat se službou Azure SQL Managed Instance.
Pokud neexistuje, vytvořte hlavní klíč databáze.
-- Optional: Create MASTER KEY if it doesn't exist in the database: CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong Password>' GO
Vytvořte přihlašovací údaje s vymezeným oborem databáze pomocí tokenu SAS. Můžete také použít spravovanou identitu.
CREATE DATABASE SCOPED CREDENTIAL MyCredential WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<KEY>' ; --Removing leading '?' GO
Vytvořte externí zdroj dat pomocí přihlašovacích údajů.
--Create external data source pointing to the file path, and referencing database-scoped credential: CREATE EXTERNAL DATA SOURCE MyPrivateExternalDataSource WITH ( LOCATION = 'abs://public@pandemicdatalake.blob.core.windows.net/curated/covid-19/bing_covid-19_data/latest', CREDENTIAL = [MyCredential] );
Dotazování datového souboru Parquet v externím zdroji dat pomocí syntaxe OPENROWSET T-SQL, která spoléhá na odvozování schématu a umožňuje rychle zkoumat data bez znalosti schématu.
--Query data with OPENROWSET, relying on schema inference. SELECT TOP 10 * FROM OPENROWSET ( BULK 'bing_covid-19_data.parquet', DATA_SOURCE = 'MyExternalDataSource', FORMAT = 'parquet' ) AS filerows;
Nebo se dotazujte na data pomocí openROWSET klauzule WITH místo toho, abyste se spoléhali na odvozování schématu, což by mohlo způsobovat náklady na spuštění dotazu. U sdíleného svazku clusteru není odvození schématu podporováno.
--Or, query data using the WITH clause on a CSV, where schema inference is not supported SELECT TOP 10 id, updated, confirmed, confirmed_change FROM OPENROWSET ( BULK 'bing_covid-19_data.csv', DATA_SOURCE = 'MyExternalDataSource', FORMAT = 'CSV', FIRSTROW = 2 ) WITH ( id INT, updated DATE, confirmed INT, confirmed_change INT ) AS filerows;
Nebo vytvořte FORMÁT EXTERNÍHO SOUBORU a EXTERNÍ TABULKU pro dotazování dat jako místní tabulky.
-- Or, create an EXTERNAL FILE FORMAT and an EXTERNAL TABLE --Create external file format CREATE EXTERNAL FILE FORMAT DemoFileFormat WITH (FORMAT_TYPE = PARQUET) GO --Create external table: CREATE EXTERNAL TABLE tbl_TaxiRides ( vendorID VARCHAR(100) COLLATE Latin1_General_BIN2, tpepPickupDateTime DATETIME2, tpepDropoffDateTime DATETIME2, passengerCount INT, tripDistance FLOAT, puLocationId VARCHAR(8000), doLocationId VARCHAR(8000), startLon FLOAT, startLat FLOAT, endLon FLOAT, endLat FLOAT, rateCodeId SMALLINT, storeAndFwdFlag VARCHAR(8000), paymentType VARCHAR(8000), fareAmount FLOAT, extra FLOAT, mtaTax FLOAT, improvementSurcharge VARCHAR(8000), tipAmount FLOAT, tollsAmount FLOAT, totalAmount FLOAT ) WITH ( LOCATION = 'yellow/puYear=*/puMonth=*/*.parquet', DATA_SOURCE = NYCTaxiExternalDataSource, FILE_FORMAT = MyFileFormat\.\./\.\./\.\./azure-sql/ ); GO --Then, query the data via an external table with T-SQL: SELECT TOP 10 * FROM tbl_TaxiRides; GO