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.
Applies to: SQL Server 2016 (13.x) a novější verze
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL v Microsoft Fabric
Warehouse v Microsoft Fabric
SQL v databázi Microsoft Fabric
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
Applies to: 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 v SQL Server
- Operace hromadného načítání s využitím
BULK INSERTneboOPENROWSET
Poznámka:
Syntaxe CREATE EXTERNAL DATA SOURCE se liší v různých verzích SQL Database Engine. Pomocí rozevíracího seznamu selektoru verzí zvolte příslušnou verzi produktu.
Pokud chcete zobrazit funkce SQL Server 2019 (15.x), navštivte KREATE EXTERNÍ ZDROJ DAT.
Pokud si chcete prohlédnout funkce SQL Server 2022 (16.x), navštivte KREATE EXTERNÍ ZDROJ 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 v databázi v SQL Server 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í 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 Azure Storage (V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Od SQL Server 2016 (13.x) Hierarchický obor názvů není podporován. |
klíč účtu Azure Storage |
Cesta k umístění:
-
<Namenode>= název počítače, identifikátor URI služby name nebo IP adresa clusteruNamenodeHadoop. 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 SQL Server pojmenované instance. Používá se, pokud máte v cílové instanci spuštěnou službu prohlížeče SQL Server.
Další poznámky a pokyny při nastavování umístění:
- Při vytváření objektu SQL Server Database Engine 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í.
-
wasbsje nepovinný, ale doporučuje se v SQL Server 2016 (13.x) pro přístup k Azure Storage Accounts, protože se data posílají 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 proNamenodecluster Hadoop. Pokud ne, spusťte PŘÍKAZ ALTER EXTERNAL DATA SOURCE tak, aby odkazovat na nové umístění.
KVALIFIKACE = 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.
TYP = * [ HADOOP ] *
Určuje typ nakonfigurovaného externího zdroje dat. V SQL Server 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 pozdějších verzích 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 v Azure Storage pomocí rozhraní wasb://
RESOURCE_MANAGER_LOCATION = *'ResourceManager_URI[:p ort]'
Tuto volitelnou hodnotu nakonfigurujte pouze při připojování k účtu 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 přenášených dat mezi Hadoopem a SQL Server, 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í pokaždé, když se pokusíte nasdílení změn, protože zadaná hodnota by nemohla 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 Manager |
|---|---|
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 |
| Resource Manager odeslání úlohy (Hortonworks 1.3) | 50300 |
| Resource Manager odeslání úlohy (Cloudera 4.3) | 8021 |
| Resource Manager odeslání úlohy (Hortonworks 2.0 na Windows, Cloudera 5.x v Linuxu) | 8032 |
| Resource Manager odeslání úlohy (Hortonworks 2.x, 3.0 v Linuxu, Hortonworks 2.1-3 v Windows) | 8050 |
| Historie úloh Resource Manager | 10020 |
Povolení
Vyžaduje oprávnění CONTROL k databázi v SQL Server.
Uzamčení
Vezme sdílený zámek objektu EXTERNAL DATA SOURCE .
Zabezpečení
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 najdete v tématu Install PolyBase on 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 (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050'
);
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 (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8020',
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 (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. Vytvoření externího zdroje dat pro přístup k datům v Azure Storage pomocí rozhraní wasb://
V tomto příkladu je externím zdrojem dat Azure účet úložiště V2 s názvem logs. Úložný kontejner se jmenuje daily. Azure Storage externí zdroj dat 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í pro účet úložiště Azure V2. Zadejte klíč účtu Azure Storage 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 při ověřování nepoužívá k Azure Storage. Při připojování k Azure Storage přes wasb nebo wasbs se musí ověřování provádět pomocí klíče účtu úložiště, ne pomocí sdíleného přístupového podpisu (SAS).
V SQL Server 2016 (13.x) by měl být TYPE nastaven na HADOOP i při přístupu k 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 (
TYPE = HADOOP,
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential
);
Související obsah
Přehled: SQL Server 2017
Applies to: 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 v SQL Server
- Operace hromadného načítání s využitím
BULK INSERTneboOPENROWSET
Poznámka:
Syntaxe CREATE EXTERNAL DATA SOURCE se liší v různých verzích SQL Server on Linux. K výběru vhodné verze použijte rozevírací seznam selektoru verzí.
Pokud chcete zobrazit funkce SQL Server 2019 (15.x), navštivte KREATE EXTERNÍ ZDROJ DAT.
Pokud si chcete prohlédnout funkce SQL Server 2022 (16.x), navštivte KREATE EXTERNÍ ZDROJ DAT.
Poznámka:
Syntaxe CREATE EXTERNAL DATA SOURCE se liší v různých verzích SQL Database Engine. Pomocí rozevíracího seznamu selektoru verzí zvolte příslušnou verzi produktu.
Pokud chcete zobrazit funkce SQL Server 2019 (15.x), navštivte KREATE EXTERNÍ ZDROJ DAT.
Pokud si chcete prohlédnout funkce SQL Server 2022 (16.x), navštivte KREATE EXTERNÍ ZDROJ 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 v databázi v SQL Server 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í 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) až SQL Server 2019 (pouze 15.x) | Anonymní nebo základní ověřování |
| účet Azure Storage (V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Od SQL Server 2016 (13.x) Hierarchický obor názvů není podporován. |
klíč účtu Azure Storage |
| Hromadné operace | https |
<storage_account>.blob.core.windows.net/<container> |
Počínaje SQL Server 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 clusteruNamenodeHadoop. 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 SQL Server pojmenované instance. Používá se, pokud máte v cílové instanci spuštěnou službu prohlížeče SQL Server.
Další poznámky a pokyny při nastavování umístění:
- Při vytváření objektu SQL Server Database Engine 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. -
wasbsje nepovinný, ale doporučuje se v SQL Server 2017 (14.x) pro přístup k Azure Storage Accounts, protože data se posílají 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 proNamenodecluster Hadoop. Pokud ne, spusťte PŘÍKAZ ALTER EXTERNAL DATA SOURCE tak, aby odkazovat na nové umístění.
KVALIFIKACE = 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ů:
-
CREDENTIALvyžaduje se pouze v případě, že jsou data zabezpečená.CREDENTIALnevyž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 SIGNATUREidentita. -
TYPE=BLOB_STORAGEje povolena pouze pro hromadné operace; Nemůžete vytvořit externí tabulky pro externí zdroj dat pomocíTYPE=BLOB_STORAGE. - Při připojování k Azure Storage přes
wasbnebowasbsse musí ověřování provádět pomocí klíče účtu úložiště, ne pomocí sdíleného přístupového podpisu (SAS). - Pokud
TYPE=HADOOPje nutné vytvořit přihlašovací údaje pomocí klíče účtu úložiště jakoSECRETklíč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 portál Azure -><Your_Storage_Account> -> sdílený přístupový podpis -> Konfigurovat oprávnění -> Generování SAS a connection string. Další informace najdete v tématu Generování sdíleného přístupového podpisu.
Můžete vytvořit a nakonfigurovat SAS pomocí Azure Storage Explorer.
Token SAS můžete vytvořit programově prostřednictvím PowerShellu, Azure CLI, .NET a rozhraní REST API. Další informace najdete v tématu Grant omezený přístup 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í CREDENTIAL s SHARED ACCESS SIGNATURE a TYPE = BLOB_STORAGE najdete v tématu Vytvoření externího zdroje dat pro provádění hromadných operací a načtení dat z Azure Storage do služby 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.
TYP = * [ 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í ke cloudera CDH, Hortonworks HDP, účtu Azure Storage nebo Azure Data Lake Storage Gen2.
- Použijte
HADOOP, pokud je externím zdrojem dat Cloudera CDH, Hortonworks HDP, účet Azure Storage nebo Azure Data Lake Storage Gen2. - Použití
BLOB_STORAGEpři provádění hromadných operací z účtu Azure Storage pomocí BULK INSERT nebo OPENROWSET BULK. Představeno s SQL Server 2017 (14.x). Při úmysluHADOOPproti Azure Storage použijteCREATE EXTERNAL TABLE.
Poznámka:
TYPE by měly být nastaveny na HADOOP i při přístupu k 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 v Azure Storage pomocí rozhraní wasb://
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
Tuto volitelnou hodnotu nakonfigurujte pouze při připojování k účtu 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 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 přenášených dat mezi Hadoopem a SQL Server, 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 neověřuje při vytváření externího zdroje dat. Zadání nesprávné hodnoty může způsobit selhání dotazu při spuštění pokaždé, když se pokusíte nasdílení změn, protože zadaná hodnota by nemohla 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 Manager |
|---|---|
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 |
| Resource Manager odeslání úlohy (Hortonworks 1.3) | 50300 |
| Resource Manager odeslání úlohy (Cloudera 4.3) | 8021 |
| Resource Manager odeslání úlohy (Hortonworks 2.0 na Windows, Cloudera 5.x v Linuxu) | 8032 |
| Resource Manager odeslání úlohy (Hortonworks 2.x, 3.0 v Linuxu, Hortonworks 2.1-3 v Windows) | 8050 |
| Historie úloh Resource Manager | 10020 |
Povolení
Vyžaduje oprávnění CONTROL k databázi v SQL Server.
Uzamčení
Vezme sdílený zámek objektu EXTERNAL DATA SOURCE .
Zabezpečení
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 aren't valid.: Error [Parameters provided to connect to the Azure storage account aren't valid.] occurred while accessing external file.'
Příklady
Důležité
Informace o instalaci a povolení PolyBase najdete v tématu Install PolyBase on 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 (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050'
);
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 (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8020',
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 (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. Vytvoření externího zdroje dat pro přístup k datům v Azure Storage pomocí rozhraní wasb://
V tomto příkladu je externím zdrojem dat Azure účet úložiště V2 s názvem logs. Úložný kontejner se jmenuje daily. Azure Storage externí zdroj dat 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í k Azure Storage přes wasb nebo wasbs se musí ověřování provádět pomocí klíče účtu úložiště, ne pomocí sdíleného přístupového podpisu (SAS).
Tento příklad ukazuje, jak vytvořit přihlašovací údaje s vymezeným oborem databáze pro ověřování pro účet úložiště Azure V2. Zadejte klíč účtu Azure Storage 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 při ověřování nepoužívá k 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 (
TYPE = HADOOP,
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential
);
Příklady: Hromadné operace
Důležité
Při konfiguraci externího / zdroje dat pro hromadné operace nepřidávejte koncové LOCATIONparametry, 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
Applies to: SQL Server 2017 (14.x) a novější verze.
Pro hromadné operace použijte následující zdroj dat pomocí BULK INSERT nebo OPENROWSET BULK. 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',
SECRET = -- Remove ? from the beginning of the SAS token'<azure_storage_account_key>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://newinvoices.blob.core.windows.net/week3',
CREDENTIAL = AccessAzureInvoices
);
Pokud se chcete podívat na tento příklad, podívejte se na příkaz BULK INSERT.
Související obsah
- externí zdroj dat ALTER (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 v SQL Server
- Operace hromadného načítání s využitím
BULK INSERTneboOPENROWSET
Poznámka:
Syntaxe CREATE EXTERNAL DATA SOURCE se liší v různých verzích SQL Database Engine. Pomocí rozevíracího seznamu selektoru verzí zvolte příslušnou verzi produktu.
Pokud si chcete prohlédnout funkce SQL Server 2022 (16.x), navštivte KREATE EXTERNÍ ZDROJ DAT.
Poznámka:
Syntaxe CREATE EXTERNAL DATA SOURCE se liší v různých verzích SQL Database Engine. Pomocí rozevíracího seznamu selektoru verzí zvolte příslušnou verzi produktu.
Pokud si chcete prohlédnout funkce SQL Server 2022 (16.x), navštivte KREATE EXTERNÍ ZDROJ 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 v databázi v SQL Server 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í 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 Azure Storage (V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Od SQL Server 2016 (13.x) Hierarchický obor názvů není podporován. |
klíč účtu Azure Storage |
| SQL Server | sqlserver |
<server_name>[\<instance_name>][:port] |
Počínaje SQL Server 2019 (15.x) | Pouze ověřování SQL |
| Věštírna | oracle |
<server_name>[:port] |
Počínaje SQL Server 2019 (15.x) | Pouze základní ověřování |
| Teradata | teradata |
<server_name>[:port] |
Počínaje SQL Server 2019 (15.x) | Pouze základní ověřování |
| MongoDB nebo cosmos DB API pro MongoDB | mongodb |
<server_name>[:port] |
Počínaje SQL Server 2019 (15.x) | Pouze základní ověřování |
| Obecné ODBC | odbc |
<server_name>[:port] |
Od SQL Server 2019 (15.x) – pouze Windows | Pouze základní ověřování |
| Hromadné operace | https |
<storage_account>.blob.core.windows.net/<container> |
Počínaje SQL Server 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 Server 2019 (15.x) CU11+. | Přístupový klíč úložiště |
| SQL Server Big Data Clusters fondu dat | sqldatapool |
sqldatapool://controller-svc/default |
Podporováno pouze v Big Data Clusters SQL Server 2019 | Pouze základní ověřování |
| SQL Server Big Data Clusters fondu úložiště | sqlhdfs |
sqlhdfs://controller-svc/default |
Podporováno pouze v Big Data Clusters SQL Server 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 clusteruNamenodeHadoop. 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 SQL Server pojmenované instance. Používá se, pokud máte v cílové instanci spuštěnou službu prohlížeče SQL Server.
Další poznámky a pokyny při nastavování umístění:
- Při vytváření objektu SQL Server Database Engine 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
sqlservermůžete použít k připojení SQL Server 2019 (15.x) k jinému SQL Server nebo k Azure SQL Database. -
Driver={<Name of Driver>}Zadejte při připojování přesODBC. - Použití
wasbsneboabfssje volitelné, ale doporučuje se v SQL Server 2019 (15.x) pro přístup k Azure Storage Accounts, protože se data posílají pomocí zabezpečeného připojení TLS/SSL. - Rozhraní API
abfsneboabfssse podporují při přístupu k Azure Storage Accounts počínaje SQL Server 2019 (15.x) CU11. Další informace najdete v tématu pokud Azure ovladač systému souborů objektů blob (ABFS). - Možnost Hierarchický obor názvů pro Azure Storage Accounts(V2) používající
abfs[s]se podporuje prostřednictvím Azure Data Lake Storage Gen2 počínaje SQL Server 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 proNamenodecluster Hadoop. Pokud ne, spusťte PŘÍKAZ ALTER EXTERNAL DATA SOURCE tak, aby odkazovat na nové umístění. - Typy
sqlhdfsasqldatapooltypy 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ísqlhdfspro dotazování fondů úložiště SQL Server Big Data Clusters najdete v tématu Query HDFS v clusteru SQL Server 2019 pro velké objemy dat. - SQL Server podpora externích zdrojů dat HDFS Cloudera (CDP) a Hortonworks (HDP) byla vyřazena a není součástí SQL Server 2022 (16.x) a novějších verzích. Další informace najdete v tématu Big 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á připojení ODBC a také integrované konektory ODBC pro SQL Server, Oracle, Teradata, MongoDB a Azure Cosmos DB API 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 o každém poskytovateli najdete v tématu KREATE EXTERNÍ ZDROJ DAT (Transact-SQL) CONNECTION_OPTIONS.
SQL Server 2019 (15.x) Kumulativní aktualizace 19 a novější verze představují další klíčová slova pro podporu souborů Oracle TNS:
- Klíčové slovo
TNSNamesFileurčuje cestu k souboru umístěnémutnsnames.orana serveru Oracle. - Klíčové slovo
ServerNameurč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 Server, Oracle, Teradata, MongoDB, rozhraní API Azure Cosmos DB pro MongoDB nebo ROZHRANÍ ODBC na úrovni externího zdroje dat.
Povolení nebo zakázání nabízení na úrovni dotazu se dosahuje pomocí nápovědy EXTERNALPUSHDOWN.
KVALIFIKACE = 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ů:
-
CREDENTIALvyžaduje se pouze v případě, že jsou data zabezpečená.CREDENTIALnevyž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 SIGNATUREidentita. -
TYPE=BLOB_STORAGEje povolena pouze pro hromadné operace; Nemůžete vytvořit externí tabulky pro externí zdroj dat pomocíTYPE=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 portál Azure -><Your_Storage_Account> -> sdílený přístupový podpis -> Konfigurovat oprávnění -> Generování SAS a connection string. Další informace najdete v tématu Generování sdíleného přístupového podpisu.
Můžete vytvořit a nakonfigurovat SAS pomocí Azure Storage Explorer.
Token SAS můžete vytvořit programově prostřednictvím PowerShellu, Azure CLI, .NET a rozhraní REST API. Další informace najdete v tématu Grant omezený přístup 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í CREDENTIAL s SHARED ACCESS SIGNATURE a TYPE = BLOB_STORAGE najdete v tématu Vytvoření externího zdroje dat pro provádění hromadných operací a načtení dat z Azure Storage do služby 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.
TYP = * [ 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í ke cloudera CDH, Hortonworks HDP, účtu Azure Storage nebo Azure Data Lake Storage Gen2.
- V SQL Server 2019 (15.x) nezadávejte TYP, pokud se nepřipojíte ke cloudera CDH, Hortonworks HDP, účtu Azure Storage.
- Použijte
HADOOP, pokud je externím zdrojem dat Cloudera CDH, Hortonworks HDP, účet Azure Storage nebo Azure Data Lake Storage Gen2. - Použití
BLOB_STORAGEpři provádění hromadných operací z účtu Azure Storage pomocí BULK INSERT nebo OPENROWSET BULK s SQL Server 2017 (14.x). Pokud chcete vytvořit externí tabulku pro Azure Storage, použijteHADOOP. - SQL Server podpora externích zdrojů dat HDFS Cloudera (CDP) a Hortonworks (HDP) byla vyřazena a není součástí SQL Server 2022 (16.x) a novějších verzích. Další informace najdete v tématu Big 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 v Azure Storage pomocí rozhraní wasb://.
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
V SQL Server 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 účtu 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 přenášených dat mezi Hadoopem a SQL Server, 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í pokaždé, když se pokusíte nasdílení změn, protože zadaná hodnota by nemohla 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 Manager |
|---|---|
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 |
| Resource Manager odeslání úlohy (Hortonworks 1.3) | 50300 |
| Resource Manager odeslání úlohy (Cloudera 4.3) | 8021 |
| Resource Manager odeslání úlohy (Hortonworks 2.0 na Windows, Cloudera 5.x v Linuxu) | 8032 |
| Resource Manager odeslání úlohy (Hortonworks 2.x, 3.0 v Linuxu, Hortonworks 2.1-3 v Windows) | 8050 |
| Historie úloh Resource Manager | 10020 |
Povolení
Vyžaduje oprávnění CONTROL k databázi v SQL Server.
Uzamčení
Vezme sdílený zámek objektu EXTERNAL DATA SOURCE .
Zabezpečení
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 SQL Server 2019 pro velké objemy dat, 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 aren't valid.: Error [Parameters provided to connect to the Azure storage account aren't valid.] occurred while accessing external file.'
Příklady
Důležité
Informace o instalaci a povolení PolyBase najdete v tématu Install PolyBase on Windows
A. Vytvoření externího zdroje dat v SQL Server 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',
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ě můžete použít ověřování TNS.
Počínaje kumulativní aktualizací 19 SQL Server 2019 (15.x) CREATE EXTERNAL DATA SOURCE nyní 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 během SQL Server modulu runtime hledat umístění souboru tnsnames.ora určené TNSNamesFile a vyhledat 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 (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050'
);
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 (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8020',
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 (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
E. Vytvoření externího zdroje dat pro přístup k datům v Azure Storage pomocí rozhraní wasb://
V tomto příkladu je externím zdrojem dat Azure účet úložiště V2 s názvem logs. Úložný kontejner se jmenuje daily. Azure Storage externí zdroj dat 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í k Azure Storage přes wasb nebo wasbs se musí ověřování provádět pomocí klíče účtu úložiště, ne pomocí sdíleného přístupového podpisu (SAS).
Tento příklad ukazuje, jak vytvořit přihlašovací údaje s vymezeným oborem databáze pro ověřování pro účet úložiště Azure V2. Zadejte klíč účtu Azure Storage 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 při ověřování nepoužívá k 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 (
TYPE = HADOOP,
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential
);
F. Vytvoření externího zdroje dat pro odkazování na pojmenovanou instanci SQL Server prostřednictvím připojení PolyBase
Applies to: SQL Server 2019 (15.x) a novější
Chcete-li vytvořit externí zdroj dat, který odkazuje na pojmenovanou instanci SQL Server, zadejte název instance pomocí CONNECTION_OPTIONS.
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 SQL Server výchozí instanci.
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
Applies to: SQL Server 2019 (15.x) a novější
Chcete-li vytvořit externí zdroj dat, který odkazuje na čitelný sekundární repliku SQL Server, použijte CONNECTION_OPTIONS k určení ApplicationIntent=ReadOnly. Musíte také nastavit databázi dostupnosti jako Database={dbname} in CONNECTION_OPTIONSnebo nastavit databázi dostupnosti jako výchozí databázi přihlášení použitého pro přihlašovací údaje s vymezeným oborem databáze. Musíte to 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
Příklady: Hromadné operace
Důležité
Při konfiguraci externího / zdroje dat pro hromadné operace nepřidávejte koncové LOCATIONparametry, 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
Applies to: SQL Server 2017 (14.x) a SQL Server 2019 (15.x)
Pro hromadné operace použijte následující zdroj dat pomocí BULK INSERT nebo OPENROWSET BULK. 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',
SECRET = -- Remove ? from the beginning of the SAS token'<azure_shared_access_signature>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://newinvoices.blob.core.windows.net/week3',
CREDENTIAL = AccessAzureInvoices
);
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 v Azure Storage pomocí rozhraní abfs://
Applies to: SQL Server 2019 (15.x) CU11 a novější
V tomto příkladu je externím zdrojem dat Azure Data Lake Storage Gen2 účet logs pomocí pokud Azure ovladač systému souborů objektů blob (ABFS). Úložný kontejner se jmenuje daily. Azure Data Lake Storage Gen2 externí zdroj dat je určen pouze pro přenos dat, protože predikát push-down není podporován.
Tento příklad ukazuje, jak vytvořit přihlašovací údaje s vymezeným oborem databáze pro ověřování pro účet Azure Data Lake Storage Gen2. Zadejte klíč účtu Azure Storage 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 při ověřování nepoužívá k 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 (
TYPE = HADOOP,
LOCATION = 'abfss://daily@logs.dfs.core.windows.net/',
CREDENTIAL = AzureStorageCredential
);
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 POSTGRES1s 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
- externí zdroj dat ALTER (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
Applies to: 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 v SQL Server
- Operace hromadného načítání s využitím
BULK INSERTneboOPENROWSET
Poznámka:
Syntaxe CREATE EXTERNAL DATA SOURCE se liší v různých verzích SQL Database Engine. Pomocí rozevíracího seznamu selektoru verzí zvolte příslušnou verzi produktu. 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 v databázi v SQL Server 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í konektoru | Cesta k lokaci | Podporovaná umístění podle produktu nebo služby | Autentizace |
|---|---|---|---|---|
| účet 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> |
Počínaje SQL Server 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 Server 2022 (16.x) | Sdílený přístupový podpis (SAS) |
| SQL Server | sqlserver |
<server_name>[\<instance_name>][:port] |
Počínaje SQL Server 2019 (15.x) | Pouze ověřování SQL |
| Věštírna | oracle |
<server_name>[:port] |
Počínaje SQL Server 2019 (15.x) | Pouze základní ověřování |
| Teradata | teradata |
<server_name>[:port] |
Počínaje SQL Server 2019 (15.x) | Pouze základní ověřování |
| MongoDB nebo cosmos DB API pro MongoDB | mongodb |
<server_name>[:port] |
Počínaje SQL Server 2019 (15.x) | Pouze základní ověřování |
| Obecné ODBC | odbc |
<server_name>[:port] |
Od SQL Server 2019 (15.x) – pouze Windows | Pouze základní ověřování |
| Hromadné operace | https |
<storage_account>.blob.core.windows.net/<container> |
Počínaje SQL Server 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 Server 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 SQL Server pojmenované instance. Používá se, pokud máte v cílové instanci spuštěnou službu prohlížeče SQL Server. -
<ip_address>:<port>= pouze pro úložiště objektů kompatibilní s S3 (počínaje SQL Server 2022 (16.x)), 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 Server 2022 (16.x)), specifické pro platformu úložiště. -
<region>= pouze pro úložiště objektů kompatibilní s S3 (počínaje SQL Server 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í:
- Při vytváření objektu SQL Server Database Engine neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.
- Konektor
sqlservermůžete použít k připojení SQL Server 2019 (15.x) k jinému SQL Server nebo k Azure SQL Database. -
Driver={<Name of Driver>}Zadejte při připojování přesODBC. - Možnost Hierarchický obor názvů pro Azure Storage Accounts(V2) používající předponu
adlsse podporuje prostřednictvím Azure Data Lake Storage Gen2 v SQL Server 2022 (16.x).
- SQL Server podpora externích zdrojů dat HDFS Cloudera (CDP) a Hortonworks (HDP) se vyřazuje z provozu a nezahrnuje SQL Server 2022 (16.x). Argument TYP není nutné použít v SQL Server 2022 (16.x).
- Další informace o úložišti objektů kompatibilních s S3 a PolyBase počínaje SQL Server 2022 (16.x) najdete v tématu Konfigurujte PolyBase pro přístup k externím datům v úložišti objektů kompatibilních 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í a v SQL Server 2022 (16.x) se předpona použitá pro účet Azure Storage (v2) změnila z
wasb[s]naabs. - Rozdíl od předchozích verzí, v SQL Server 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 v 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 Azure Storage Account v2 (
abs) a 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 Azure Storage v2:
abs://<container>@<storage_account_name>.blob.core.windows.net(doporučeno) neboabs://<storage_account_name>.blob.core.windows.net/<container>.
- účet 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á připojení ODBC a také integrované konektory ODBC pro SQL Server, Oracle, Teradata, MongoDB a Azure Cosmos DB API 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 o každém poskytovateli najdete v tématu KREATE EXTERNÍ ZDROJ DAT (Transact-SQL) CONNECTION_OPTIONS.
Od SQL Server 2022 (16.x) Kumulativní aktualizace 2 byla zavedena další klíčová slova pro podporu souborů Oracle TNS:
- Klíčové slovo
TNSNamesFileurčuje cestu k souboru umístěnémutnsnames.orana serveru Oracle. - Klíčové slovo
ServerNameurč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 Server, Oracle, Teradata, MongoDB, rozhraní API Azure Cosmos DB pro MongoDB nebo ROZHRANÍ ODBC na úrovni externího zdroje dat.
Povolení nebo zakázání nabízení na úrovni dotazu se dosahuje pomocí nápovědy EXTERNALPUSHDOWN.
KVALIFIKACE = 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ů:
-
CREDENTIALvyžaduje se pouze v případě, že jsou data zabezpečená.CREDENTIALnevyž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 musí být
IDENTITYSHARED 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 z 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 portál Azure -><Your_Storage_Account> -> sdílený přístupový podpis -> Konfigurovat oprávnění -> Generování SAS a connection string. Další informace najdete v tématu Generování sdíleného přístupového podpisu.
Můžete vytvořit a nakonfigurovat SAS pomocí Azure Storage Explorer.
Token SAS můžete vytvořit programově prostřednictvím PowerShellu, Azure CLI, .NET a rozhraní REST API. Další informace najdete v tématu Grant omezený přístup 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 Gen 2:
- 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ů:
ContaineraObjectmusí 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 oprávnění CONTROL k databázi v SQL Server.
Uzamčení
Vezme sdílený zámek objektu EXTERNAL DATA SOURCE .
Zabezpečení
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 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 = HADOOPpomocí a všechny externí tabulky, které používají tento externí zdroj dat.
Uživatelé budou také muset nakonfigurovat externí zdroje dat tak, aby při připojování k Azure Storage používali nové konektory.
| Externí zdroj dat | Od | K |
|---|---|---|
| Azure Blob Storage | wasb[s] |
abs |
| ADLS Gen2 | abfs[s] |
adls |
Příklady
Důležité
Informace o instalaci a povolení PolyBase najdete v tématu Install PolyBase on Windows
A. Vytvoření externího zdroje dat v SQL Server 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.
Od SQL Server 2022 (16.x) kumulativní aktualizace 2 CREATE EXTERNAL DATA SOURCE nyní 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 během SQL Server modulu runtime hledat umístění souboru tnsnames.ora určené TNSNamesFile a vyhledat 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 Server prostřednictvím připojení PolyBase
Applies to: SQL Server 2019 (15.x) a novější
Chcete-li vytvořit externí zdroj dat, který odkazuje na pojmenovanou instanci SQL Server, zadejte název instance pomocí CONNECTION_OPTIONS.
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 SQL Server výchozí instanci.
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
Applies to: SQL Server 2019 (15.x) a novější
Chcete-li vytvořit externí zdroj dat, který odkazuje na čitelný sekundární repliku SQL Server, použijte CONNECTION_OPTIONS k určení ApplicationIntent=ReadOnly. Musíte také nastavit databázi dostupnosti jako Database={dbname} in CONNECTION_OPTIONSnebo nastavit databázi dostupnosti jako výchozí databázi přihlášení použitého pro přihlašovací údaje s vymezeným oborem databáze. Musíte to 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
Applies to: 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 v SQL Server. 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 POSTGRES1s 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
U 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 portál Azure 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 v Azure Blob Storage pomocí rozhraní abs://
Applies to: SQL Server 2022 (16.x) a novější
Počínaje SQL Server 2022 (16.x) použijte pro účet Azure Storage v2 novou předponu abs. 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 v 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
Applies to: SQL Server 2022 (16.x) a novější verze
Počínaje SQL Server 2022 (16.x) použijte pro Azure Data Lake Gen2 novou předponu adls a nahraďte abfs použitou 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 na 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é LOCATIONparametry, 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
Applies to: SQL Server 2022 (16.x) a novější verze.
Pro hromadné operace použijte následující zdroj dat pomocí BULK INSERT nebo OPENROWSET BULK. 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
- externí zdroj dat ALTER (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í na: SQL Server 2025 (17.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 v SQL Server
- Operace hromadného načítání s využitím
BULK INSERTneboOPENROWSET
Podporuje připojení spravované identity pro instance povolené Azure Arc. Podrobnosti najdete v tématu Pojení k Azure Storage se spravovanou identitou z PolyBase.
Poznámka:
Syntaxe CREATE EXTERNAL DATA SOURCE se liší v různých verzích SQL Database Engine. Pomocí rozevíracího seznamu selektoru verzí zvolte příslušnou verzi produktu. Tento obsah platí pro SQL Server 2025 (17.x) 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 v databázi v SQL Server 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í konektoru | Cesta k lokaci | Podporovaná umístění podle produktu nebo služby | Autentizace |
|---|---|---|---|---|
| účet 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> |
Počínaje SQL Server 2022 (16.x) Podporuje se hierarchický obor názvů. |
Sdílený přístupový podpis (SAS) nebo podpora PolyBase pro spravovanou identitu pro Azure Storage1 |
| 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 Server 2022 (16.x) | Sdílený přístupový podpis (SAS) nebo podpora PolyBase pro spravovanou identitu pro Azure Storage1 |
| SQL Server | sqlserver |
<server_name>[\<instance_name>][:port] |
Počínaje SQL Server 2019 (15.x) | Pouze ověřování SQL |
| Věštírna | oracle |
<server_name>[:port] |
Počínaje SQL Server 2019 (15.x) | Pouze základní ověřování |
| Teradata | teradata |
<server_name>[:port] |
Počínaje SQL Server 2019 (15.x) | Pouze základní ověřování |
| MongoDB nebo cosmos DB API pro MongoDB | mongodb |
<server_name>[:port] |
Počínaje SQL Server 2019 (15.x) | Pouze základní ověřování |
| Obecné ODBC | odbc |
<server_name>[:port] |
Od SQL Server 2019 (15.x) – pouze Windows | Pouze základní ověřování |
| Hromadné operace | https |
<storage_account>.blob.core.windows.net/<container> |
Počínaje SQL Server 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 Server 2022 (16.x) | Základní nebo průchozí (STS) 2 |
1 Vyžaduje SQL Server instanci 2025 (17.x) povolenou Azure Arc. Podrobnosti najdete v tématu Pojení k Azure Storage se spravovanou identitou z PolyBase.
2 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 SQL Server pojmenované instance. Používá se, pokud máte v cílové instanci spuštěnou službu prohlížeče SQL Server. |
<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í:
Při vytváření objektu SQL Server Database Engine neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.
Konektor
sqlservermůžete použít k připojení SQL Server 2019 (15.x) k jinému SQL Server nebo k Azure SQL Database.Driver={<Name of Driver>}Zadejte při připojování přesODBC.Možnost Hierarchický obor názvů pro Azure Storage Accounts(V2) používající předponu
adlsse podporuje prostřednictvím Azure Data Lake Storage Gen2 v SQL Server 2022 (16.x) a novějších verzích.SQL Server podpora externích zdrojů dat HDFS Cloudera (CDP) a Hortonworks (HDP) se vyřazuje a nejsou zahrnuté v SQL Server 2022 (16.x) a novějších verzích. V SQL Server 2025 (17.x) není nutné použít argument
TYPE.Další informace o úložišti objektů kompatibilních s S3 a PolyBase v SQL Server 2022 (16.x) a novějších verzích najdete v tématu Konfigurování PolyBase pro přístup k externím datům v úložišti objektů kompatibilních 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 Server 2022 (16.x) a novějších verzích:
předpona použitá pro účet Azure Storage (v2) se změnila z
wasb[s]naabspředpona použitá pro Azure Data Lake Storage Gen2 se změnila z
abfs[s]naadlsPříklad použití PolyBase k virtualizaci souboru CSV v 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 Azure Storage Account v2 (
abs) a Azure Data Lake Gen2 (adls).Cesta
LOCATIONmůže používat formáty:<container>@<storage_account_name>..(doporučeno) nebo<storage_account_name>../<container>. Například:- účet Azure Storage v2:
abs://<container>@<storage_account_name>.blob.core.windows.net(doporučeno) neboabs://<storage_account_name>.blob.core.windows.net/<container>.
- účet 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
Applies to: 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á připojení ODBC a také integrované konektory ODBC pro SQL Server, Oracle, Teradata, MongoDB a Azure Cosmos DB API 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 o každém poskytovateli najdete v tématu KREATE EXTERNÍ ZDROJ DAT (Transact-SQL) CONNECTION_OPTIONS.
Od SQL Server 2022 (16.x) Kumulativní aktualizace 2 byla zavedena další klíčová slova pro podporu souborů Oracle TNS:
- Klíčové slovo
TNSNamesFileurčuje cestu k souboru umístěnémutnsnames.orana serveru Oracle. - Klíčové slovo
ServerNameurčuje alias použitý uvnitřtnsnames.ora, který se použije k nahrazení názvu hostitele a portu.
možnosti Encryption v SQL Server 2025 (17.x)
Počínaje SQL Server 2025 (17.x) při použití sqlserver jako zdroje dat je výchozí ovladač Microsoft ODBC verze 18 pro SQL Server. Tato možnost je povinná (, nebo Encryption) a Yes je k dispozici (NoneboStrict). TrustServerCertificateYesNo 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 , HostnameInCertificatelze 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 možnostech Encryption, certifikátech serveru a TrustServerCertificate najdete v tématu Poatury ovladače MICROSOFT ODBC pro SQL Server na Windows.
Vždy byste měli používat nejnovější ovladač. SQL Server 2025 (17.x) však také podporuje Microsoft ovladač ODBC verze 17 pro SQL Server kvůli zpětné kompatibilitě. Další informace o tom, jak změnit verzi ovladače používané PolyBase, najdete v tématu Zange verze ovladače SQL Server pro PolyBase.
PUSHDOWN = ZAPNUTO | PRYČ
Applies to: 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 Server, Oracle, Teradata, MongoDB, rozhraní API Azure Cosmos DB pro MongoDB nebo ROZHRANÍ ODBC na úrovni externího zdroje dat.
Povolení nebo zakázání nabízení na úrovni dotazu se dosahuje pomocí nápovědy.
KVALIFIKACE = 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ů:
CREDENTIALvyžaduje se pouze v případě, že jsou data zabezpečená.CREDENTIALnevyž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 musí být
IDENTITYSHARED 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 z 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 portál
Azure Your_Storage_Account > Sdílený přístupový podpis Konfigurovaná oprávnění Generate SAS a connection string . Další informace najdete v tématu Generování sdíleného přístupového podpisu.Můžete vytvořit a nakonfigurovat SAS pomocí Azure Storage Explorer.
Token SAS můžete vytvořit programově prostřednictvím PowerShellu, Azure CLI, .NET a rozhraní REST API. Další informace najdete v tématu Grant omezený přístup 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 Gen 2:
- 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ů:
ContaineraObjectmusí 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 oprávnění CONTROL k databázi v SQL Server.
Uzamčení
Vezme sdílený zámek objektu EXTERNAL DATA SOURCE .
Zabezpečení
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 SQL Server 2022 (16.x) a novějších verzích se externí zdroje dat Hadoop nepodporují. Je nutné ručně znovu vytvořit externí zdroje dat vytvořené TYPE = HADOOPpomocí a všechny externí tabulky, které používají tento externí zdroj dat.
Uživatelé budou také muset nakonfigurovat externí zdroje dat tak, aby při připojování k Azure Storage používali nové konektory.
| Externí zdroj dat | Od | K |
|---|---|---|
| Azure Blob Storage | wasb[s] | břišní svaly |
| ADLS Gen2 | abfs[s] | adls |
Příklady
Důležité
Informace o instalaci a povolení PolyBase najdete v tématu Install PolyBase na Windows.
A. Vytvoření externího zdroje dat v SQL Server 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.
Od SQL Server 2022 (16.x) kumulativní aktualizace 2 CREATE EXTERNAL DATA SOURCE nyní 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 během SQL Server modulu runtime hledat umístění souboru tnsnames.ora určené TNSNamesFile a vyhledat 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 Server prostřednictvím připojení PolyBase
Applies to: SQL Server 2019 (15.x) a novější verze.
Chcete-li vytvořit externí zdroj dat, který odkazuje na pojmenovanou instanci SQL Server, zadejte název instance pomocí CONNECTION_OPTIONS.
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 SQL Server výchozí instanci.
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
Applies to: SQL Server 2019 (15.x) a novější verze.
Chcete-li vytvořit externí zdroj dat, který odkazuje na čitelný sekundární repliku 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
Applies to: 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 v SQL Server. 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 POSTGRES1s 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 portál Azure 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 následující tabulku:
| Č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 v Azure Blob Storage pomocí rozhraní abs://
Applies to: SQL Server 2022 (16.x) a novější verze.
Pro účet Azure Storage v2 použijte novou předponu abs. 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 v 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
Applies to: SQL Server 2022 (16.x) a novější verze.
Pro Azure Data Lake Gen2 použijte novou předponu adls a nahraďte abfs použitou 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 na 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é LOCATIONparametry, 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
Applies to: 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 Server
Applies to: SQL Server 2025 (17.x) a novější verze.
Pokud pro SQL Server používáte nejnovější Microsoft ovladač ODBC 18, je také podporována možnost Encryption v části CONNECTION_OPTIONS a TrustServerCertificate. 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 58137a je to výchozí instance. Zadáním , Encrypt=Strictpř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 = 'Encrypt=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 = 'Encrypt=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 = 'Encrypt=no;'
CREDENTIAL = SQLServerCredentials
);
Související obsah
- externí zdroj dat ALTER (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 databáze *
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 INSERTneboOPENROWSET - Dotazování vzdálených instancí SLUŽBY SQL Database nebo Azure Synapse pomocí služby 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 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 v Azure SQL Edge. |
| účet 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ý je hostitelem správce mapování horizontálních oddílů. ArgumentDATABASE_NAMEposkytuje databázi použitou k hostování mapy horizontálních oddílů aSHARD_MAP_NAMEpouží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í:
- Při vytváření objektu Database Engine neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.
KVALIFIKACE = 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 z Azure Storage do Azure SQL Database, použijte sdílený přístupový podpis (token SAS).
-
CREDENTIALvyžaduje se pouze v případě, že jsou data zabezpečená.CREDENTIALnevyž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 SIGNATUREidentita. - Pokud připojení k Azure Storage používá konektor WASB[s], 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=HADOOPje nutné vytvořit přihlašovací údaje pomocí klíče účtu úložiště jakoSECRETklíče . -
TYPE=BLOB_STORAGEje povolena pouze pro hromadné operace; Nemůžete vytvořit externí tabulky pro externí zdroj dat pomocíTYPE=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 portál Azure -><Your_Storage_Account> -> sdílený přístupový podpis -> Konfigurovat oprávnění -> Generování SAS a connection string. Další informace najdete v tématu Generování sdíleného přístupového podpisu.
Můžete vytvořit a nakonfigurovat SAS pomocí Azure Storage Explorer.
Token SAS můžete vytvořit programově prostřednictvím PowerShellu, Azure CLI, .NET a rozhraní REST API. Další informace najdete v tématu Grant omezený přístup 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í CREDENTIAL s SHARED ACCESS SIGNATURE a TYPE = BLOB_STORAGE najdete v tématu Vytvoření externího zdroje dat pro provádění hromadných operací a načtení dat z Azure Storage do služby 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.
TYP = * [ 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
RDBMSpro dotazy napříč databázemi pomocí elastického dotazu ze služby SQL Database. - Používá se
SHARD_MAP_MANAGERpři vytváření externího zdroje dat při připojování k horizontálně dělené službě SQL Database.
Důležité
Elastický dotaz v režimu správce mapování horizontálních oddílů (horizontální dělení) pomocí EXTERNAL DATA SOURCE typu SHARD_MAP_MANAGERdosahuje konce podpory 31. března 2027. Po tomto datu budou stávající úlohy nadále fungovat, ale už nebudou dostávat podporu a vytváření nových externích zdrojů dat typu SHARD_MAP_MANAGER už nebude možné. Možnosti migrace najdete v průvodci migrací z režimu správce mapování horizontálních oddílů elastických dotazů.
- Slouží
BLOB_STORAGEpouze pro použití s předponouhttps. Proabdaadlspředpony nezadávejteTYPE.
Důležité
Nenastavujte TYPE , pokud používáte jiný externí zdroj dat.
DATABASE_NAME = database_name
Nakonfigurujte tento argument, pokud je nastavena TYPERDBMS 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 oprávnění CONTROL k databázi v 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ů
Důležité
Elastický dotaz v režimu správce mapování horizontálních oddílů (horizontální dělení) pomocí EXTERNAL DATA SOURCE typu SHARD_MAP_MANAGERdosahuje konce podpory 31. března 2027. Po tomto datu budou stávající úlohy nadále fungovat, ale už nebudou dostávat podporu a vytváření nových externích zdrojů dat typu SHARD_MAP_MANAGER už nebude možné. Možnosti migrace najdete v průvodci migrací z režimu správce mapování horizontálních oddílů elastických dotazů.
Chcete-li vytvořit externí zdroj dat pro odkaz na SHARD_MAP_MANAGER, 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 Server 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 koncové LOCATIONparametry, 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 použijte následující zdroj dat pomocí BULK INSERT nebo OPENROWSET BULK. 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 Data streaming in Azure SQL Edge.
A. Vytvoření externího zdroje dat pro odkazování na Kafka
Applies to:Azure SQL Edgeonly
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
Applies to:Azure SQL Edgeonly
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
Applies to: 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í Azure Synapse Analytics prostředku pomocí Azure SQL Database s elastickým dotazem, přečtěte si téma KREATE EXTERNÍ ZDROJ 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 Azure SQL Database v 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 | wasbs |
<container>@<storage_account>.blob.core.windows.net |
| Azure Blob Storage | 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 | wasbs |
Ano | Ano*** | Ano |
| Azure Blob Storage | 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 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 wasbnež . Pouze nativní virtualizace dat ve vyhrazených fondech SQL (kde TYPE se 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 při zřizování Azure Data Lake Storage Gen2
enable secure SSL connections. Pokud je tato možnost povolená, musíte použítabfss, když je vybrané zabezpečené připojení TLS/SSL, i kdyžabfssfunguje i pro nezabezpečená připojení TLS. Další informace najdete v tématu pokud Azure ovladač systému souborů objektů 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.httpsnení k dispozici pro všechny metody přístupu k datům. -
wasbsse 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ší verze rozhraní
wasb://, ale použitíwasbs://podporuje hierarchické obory názvů.
KVALIFIKACE = 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 volajícího Microsoft Entra 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 z Azure Storage nebo Azure Data Lake Store (ADLS) Gen2 do Azure Synapse Analytics, použijte klíč Azure Storage.
-
CREDENTIALvyžaduje se pouze v případě, že jsou data zabezpečená.CREDENTIALnevyž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.
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 Microsoft Entra předávání, je také možný v přihlašovacích údajích s 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 Microsoft Entra předávání.
TYP = 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 z Azure Storage najdete v tématu Vytvoření externího zdroje dat pro odkazování na Azure Data Lake Store Gen 1 nebo 2 pomocí instančního objektu.
Bezserverové a vyhrazené fondy SQL ve 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 .
Zabezpečení
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ů úložiš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 v Azure Storage pomocí rozhraní wasb://
V tomto příkladu je externím zdrojem dat Azure Storage účet V2 s názvem logs. Úložný kontejner se jmenuje daily. Azure Storage externí zdroj dat 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í k Azure Storage přes wasb nebo wasbs se musí ověřování provádět pomocí klíče účtu úložiště, ne pomocí sdíleného přístupového podpisu (SAS).
Tento příklad používá starší metodu přístupu na základě HADOOP Java. Následující ukázka ukazuje, jak vytvořit přihlašovací údaje s vymezeným oborem databáze pro ověřování, které se mají Azure Storage. Zadejte klíč účtu Azure Storage 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 při ověřování nepoužívá k Azure úložiště.
-- 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 (
TYPE = HADOOP,
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential
);
B. Vytvoření externího zdroje dat pro referenci na Azure Data Lake Store Gen 1 nebo 2 pomocí instančního objektu
připojení Azure Data Lake Store může být založené na identifikátoru ADLS URI a instančním objektu aplikace Microsoft Entra. Dokumentaci k vytvoření této aplikace najdete v tématu 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 (
TYPE = HADOOP,
LOCATION = 'adl://newyorktaxidataset.azuredatalakestore.net',
CREDENTIAL = ADLS_credential
);
-- 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
TYPE = HADOOP,
LOCATION = 'abfss://data@newyorktaxidataset.dfs.core.windows.net',
CREDENTIAL = ADLS_credential
);
C. Vytvoření externího zdroje dat pro referenci 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 pro Azure Data Lake Store Gen2 pomocí abfs://
Při připojování k účtu Azure Data Lake Store Gen2 s SECRET není nutné zadávat .
-- 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í PolyBase v SQL Server.
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 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 clusteruNamenodeHadoop. 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í.
-
wasbsse 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 proNamenodecluster Hadoop. Pokud ne, spusťte PŘÍKAZ ALTER EXTERNAL DATA SOURCE tak, aby odkazovat na nové umístění.
KVALIFIKACE = 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 z Azure Storage do Azure Synapse nebo PDW, použijte klíč Azure Storage.
-
CREDENTIALvyžaduje se pouze v případě, že jsou data zabezpečená.CREDENTIALnevyž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 z 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 Server 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 účtu 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í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í pokaždé, když se pokusíte nasdílení změn, protože zadaná hodnota by nemohla 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 Manager |
|---|---|
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 |
| Resource Manager odeslání úlohy (Hortonworks 1.3) | 50300 |
| Resource Manager odeslání úlohy (Cloudera 4.3) | 8021 |
| Resource Manager odeslání úlohy (Hortonworks 2.0 na Windows, Cloudera 5.x v Linuxu) | 8032 |
| Resource Manager odeslání úlohy (Hortonworks 2.x, 3.0 v Linuxu, Hortonworks 2.1-3 v Windows) | 8050 |
| Historie úloh Resource Manager | 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 .
Zabezpečení
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 aren't valid.: Error [Parameters provided to connect to the Azure storage account aren't 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 (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050'
);
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 (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8020',
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 (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. Vytvoření externího zdroje dat pro přístup k datům v Azure Storage pomocí rozhraní wasb://
V tomto příkladu je externím zdrojem dat Azure účet úložiště V2 s názvem logs. Úložný kontejner se jmenuje daily. Azure Storage externí zdroj dat 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í k Azure Storage přes wasb nebo wasbs se musí ověřování provádět pomocí klíče účtu úložiště, ne pomocí sdíleného přístupového podpisu (SAS).
Tento příklad ukazuje, jak vytvořit přihlašovací údaje s vymezeným oborem databáze pro ověřování pro Azure úložiště. V tajném kódu přihlašovacích údajů databáze zadejte klíč účtu úložiště Azure. V identitě přihlašovacích údajů s oborem databáze můžete zadat libovolný řetězec, protože se při ověřování nepoužívá k Azure úložiště.
-- 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 (
TYPE = HADOOP,
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential
);
Související obsah
* SQL Managed Instance *
Azure Synapse
analýzy
Přehled: Azure SQL Managed Instance
Applies to: Azure SQL Managed Instance
Vytvoří externí zdroj dat v Azure SQL Managed Instance. Úplné informace najdete v tématu Data virtualization with Azure SQL Managed Instance.
Virtualizace dat v 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 | 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> |
Při vytváření objektu Database Engine 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 koncové LOCATIONparametry, název souboru ani parametry sdíleného přístupového podpisu na konci adresy URL.
KVALIFIKACE = 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 z Azure Storage do Azure SQL Managed Instance, použijte sdílený přístupový podpis (token SAS).
-
CREDENTIALvyžaduje se pouze v případě, že jsou data zabezpečená.CREDENTIALnevyž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 Identityidentity neboSHARED ACCESS SIGNATUREjako 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.
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 Azure SQL Managed Instance, která musí být povolená, pokud se má pro tento účel použít.
- Udělte roli RBAC Reader Azure roli RBAC systému přiřazené identitě spravované služby Azure SQL Managed Instance potřebným kontejnerům Azure Blob Storage. Například prostřednictvím portálu Azure se podívejte na role Assign Azure pomocí portálu Azure.
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 portál Azure -><Your_Storage_Account> -> Sdílený přístupový podpis -> Konfigurovat oprávnění -> Generovat SAS a connection string. Další informace najdete v tématu Generování sdíleného přístupového podpisu.
- Můžete vytvořit a nakonfigurovat SAS pomocí Azure Storage Explorer.
- Token SAS můžete vytvořit programově prostřednictvím PowerShellu, Azure CLI, .NET a rozhraní REST API. Další informace najdete v tématu Grant omezený přístup 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 oprávnění CONTROL k databázi v Azure SQL Managed Instance.
Uzamčení
Vezme sdílený zámek objektu EXTERNAL DATA SOURCE .
Příklady
Další příklady najdete v tématu Data virtualization with Azure SQL Managed Instance.
A. Dotazování externích dat z Azure SQL Managed Instance pomocí OPENROWSET nebo externí tabulky
Další příklady najdete v tématu CREATE EXTERNAL DATA SOURCE nebo se podívejte na Data virtualization with 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>' GOVytvoř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 '?' GOVytvoř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 podporované.
--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
Související obsah
Azure Synapse
analýzy
*Microsoft Fabric Data Warehouse *
Přehled: Microsoft Fabric Data Warehouse
Applies to: Fabric Data Warehouse
Vytvoří externí zdroj dat.
Syntaxe
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( LOCATION = '<prefix>://<path>[:<port>]' )
[ ; ]
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 | https |
https://<storage_account>.blob.core.windows.net/<container>/<path> |
| Azure Data Lake Service Gen2 | abfss |
abfss://<container>@<storage_account>.dfs.core.windows.net/<path> |
Při vytváření objektu Database Engine neověřuje existenci externího zdroje dat.
Při konfiguraci externího / zdroje dat pro hromadné operace nepřidávejte koncové LOCATIONparametry, název souboru ani parametry sdíleného přístupového podpisu na konci adresy URL.
Povolení
Pokud je cílový účet úložiště soukromý, musí mít objekt zabezpečení také oprávnění ke čtení odkazovaných souborů.
- Pro Azure Data Lake Storage a Azure Blob Storage musí mít objekt zabezpečení přiřazenou roli Storage Blob Data Reader (nebo vyšší) na úrovni kontejneru nebo účtu úložiště.
- Pro Fabric One Lake Storage musí mít objekt zabezpečení oprávnění ReadAll.
Uzamčení
Vezme sdílený zámek objektu EXTERNAL DATA SOURCE .
Příklady
A. Dotazování externích dat pomocí OPENROWSET nebo externí tabulky
Vytvořte externí zdroj dat.
--Create external data source pointing to the file path, and referencing database-scoped credential: CREATE EXTERNAL DATA SOURCE MyPrivateExternalDataSource WITH ( LOCATION = 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest' );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 = 'MyPrivateExternalDataSource' );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.
--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 = 'MyPrivateExternalDataSource' FIRSTROW = 2 ) WITH ( id INT, updated DATE, confirmed INT, confirmed_change INT ) AS filerows;
Související obsah
Azure Synapse
analýzy
* Fabric SQL Database *
Přehled: Databáze SQL v Microsoft Fabric
Applies to: SQL database in Microsoft Fabric
Vytvoří externí zdroj dat pro virtualizaci dat Data v databázi SQL v Fabric.
Syntaxe
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ ; ]
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.
Fabric databáze SQL jako zdroj dat podporuje pouze OneLake (abfss).
| Externí zdroj dat | Předpona umístění konektoru | Cesta k lokaci | Dostupnost |
|---|---|---|---|
| OneLake | abfss |
abfss://<workspaceid>@<tenant>.dfs.fabric.microsoft.com/ |
Fabric databáze SQL |
Další poznámky a pokyny při nastavování umístění:
- Při vytváření objektu Database Engine neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.
Povolení
Vyžaduje oprávnění CONTROL k databázi v Azure SQL Database.
Uzamčení
Vezme sdílený zámek objektu EXTERNAL DATA SOURCE .
Příklady
A. Vytvořte externí zdroj dat do složky Lakehouse
Tento příklad zahrnuje připojení externího datového zdroje s MyLakeHouse názvem Lakehouse za účelem přístupu k souborům Parquet a CSV, které byly nahrány. Tyto soubory v tomto vzorku se nacházejí v adresáři Files pod složkou Contoso .
Pokud chcete vytvořit zdroj dat Fabric Lakehouse, musíte zadat ID pracovního prostoru, tenanta a ID lakehouse. Pokud chcete najít umístění souboru ABFSS u jezera, přejděte na portál Fabric. Přejděte do svého Lakehouse, přejděte na požadované umístění složky, vyberte ..., Properties. Zkopírujte ABFS cestu, která vypadá asi takto: abfss://<WorkSpaceID>@<Tenant>.dfs.fabric.microsoft.com/<LakehouseID>/Files/Contoso.
Vzhledem k tomu, že Fabric databáze SQL podporuje pouze Microsoft Entra ID předávací ověřování, není nutné zadat přihlašovací údaje v oboru databáze, připojení vždy použije přihlašovací údaje uživatele pro přístup k umístění.
CREATE EXTERNAL DATA SOURCE MyLakeHouse
WITH (
LOCATION = 'abfss://<workspace id>@<tenant>.dfs.fabric.microsoft.com/<lakehouseid>/Files/Contoso'
);