VYTVOŘENÍ EXTERNÍHO ZDROJE DAT (Transact-SQL)

Applies to: SQL Server 2016 (13.x) a novější verze Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL v Microsoft FabricWarehouse v Microsoft FabricSQL 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 *  

 

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 INSERT nebo OPENROWSET

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.

Transact-SQL konvence syntaxe

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 clusteru Namenode Hadoop. PolyBase musí přeložit všechny názvy DNS používané clusterem Hadoop.
  • port = Port, na který externí zdroj dat naslouchá. V Hadoopu najdete port pomocí konfiguračního parametru fs.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í.
  • wasbs je 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 pro Namenode cluster 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
);

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 INSERT nebo OPENROWSET

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.

Transact-SQL konvence syntaxe

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 clusteru Namenode Hadoop. PolyBase musí přeložit všechny názvy DNS používané clusterem Hadoop.
  • port = Port, na který externí zdroj dat naslouchá. V Hadoopu najdete port pomocí konfiguračního parametru fs.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řes ODBC.
  • wasbs je 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 pro Namenode cluster 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ů:

  • CREDENTIAL vyžaduje se pouze v případě, že jsou data zabezpečená. CREDENTIAL nevyžaduje se u datových sad, které umožňují anonymní přístup.
  • Pokud se přihlašovací TYPE = BLOB_STORAGEúdaje musí vytvořit jako SHARED ACCESS SIGNATURE identita.
  • TYPE = BLOB_STORAGE je 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 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).
  • Pokud TYPE = HADOOP je nutné vytvořit přihlašovací údaje pomocí klíče účtu úložiště jako SECRETklíč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).
  • 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_STORAGE př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 úmyslu HADOOP proti Azure Storage použijte CREATE 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.

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 INSERT nebo OPENROWSET

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.

Transact-SQL konvence syntaxe

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 clusteru Namenode Hadoop. PolyBase musí přeložit všechny názvy DNS používané clusterem Hadoop.
  • port = Port, na který externí zdroj dat naslouchá. V Hadoopu najdete port pomocí konfiguračního parametru fs.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 sqlserver můž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řes ODBC.
  • Použití wasbs nebo abfss je 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 abfs nebo abfss se 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 pro Namenode cluster Hadoop. Pokud ne, spusťte PŘÍKAZ ALTER EXTERNAL DATA SOURCE tak, aby odkazovat na nové umístění.
  • Typy sqlhdfs a sqldatapool typy se podporují pro připojení mezi hlavní instancí a fondem úložiště clusteru s velkými objemy dat. Pro Cloudera CDH nebo Hortonworks HDP použijte hdfs. Další informace o použití sqlhdfs pro 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 TNSNamesFile určuje cestu k souboru umístěnému tnsnames.ora na serveru Oracle.
  • Klíčové slovo ServerName určuje alias použitý uvnitř tnsnames.ora , který se použije k nahrazení názvu hostitele a portu.

Posun = ZAPNUTO | PRYČ

Určeno pouze pro SQL Server 2019 (15.x). Uvádí, zda je možné výpočty odeslat do externího zdroje dat. Ve výchozím nastavení je zapnutá .

PUSHDOWN se podporuje při připojování k SQL 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ů:

  • CREDENTIAL vyžaduje se pouze v případě, že jsou data zabezpečená. CREDENTIAL nevyžaduje se u datových sad, které umožňují anonymní přístup.
  • Pokud se přihlašovací TYPE = BLOB_STORAGEúdaje musí vytvořit jako SHARED ACCESS SIGNATURE identita.
  • TYPE = BLOB_STORAGE je 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).
  • 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_STORAGE př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žijte HADOOP.
  • 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
);

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 INSERT nebo OPENROWSET

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 sqlserver můž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řes ODBC.
  • Možnost Hierarchický obor názvů pro Azure Storage Accounts(V2) používající předponu adls se 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] na abs.
  • 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] na adls.
  • 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) nebo abs://<storage_account_name>.blob.core.windows.net/<container>.
  • Azure Data Lake Gen2 podporuje: adls://<container>@<storage_account_name>.blob.core.windows.net (doporučeno) nebo adls://<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 TNSNamesFile určuje cestu k souboru umístěnému tnsnames.ora na serveru Oracle.
  • Klíčové slovo ServerName určuje alias použitý uvnitř tnsnames.ora , který se použije k nahrazení názvu hostitele a portu.

PUSHDOWN = ZAPNUTO | PRYČ

Platí pro: SQL Server 2019 (15.x) a novější verze. Uvádí, zda je možné výpočty odeslat do externího zdroje dat. Je ve výchozím nastavení zapnutý.

PUSHDOWN se podporuje při připojování k SQL 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ů:

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).
  • 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é typy prostředků: Container a Object musí být vybrány pro vygenerování tokenu SAS.

Příklad použití CREDENTIAL úložiště objektů kompatibilních s S3 a PolyBase najdete v tématu Konfigurace PolyBase pro přístup k externím datům v úložišti objektů kompatibilním s S3.

Pokud chcete vytvořit přihlašovací údaje s vymezeným oborem databáze, přečtěte si téma CREATE DATABASE SCOPED CREDENTIAL.

Povolení

Vyžaduje 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.

  1. Přejděte na portál Azure a požadovaný účet úložiště.

  2. V nabídce Úložiště dat přejděte do požadovaného kontejneru.

  3. Vyberte Sdílené přístupové tokeny.

  4. 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
  5. Zvolte datum vypršení platnosti tokenu.

  6. Vygenerujte token SAS a adresu URL.

  7. 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,
);

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 INSERT nebo OPENROWSET

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 sqlserver můž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řes ODBC.

  • Možnost Hierarchický obor názvů pro Azure Storage Accounts(V2) používající předponu adls se 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] na abs

  • předpona použitá pro Azure Data Lake Storage Gen2 se změnila z abfs[s] na adls

  • 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) a novější verze plně podporují dva formáty adres URL pro Azure Storage Account v2 (abs) a Azure Data Lake Gen2 (adls).

    • Cesta LOCATION může používat formáty: <container>@<storage_account_name>.. (doporučeno) nebo <storage_account_name>../<container>. Například:

      • účet Azure Storage v2: abs://<container>@<storage_account_name>.blob.core.windows.net (doporučeno) nebo abs://<storage_account_name>.blob.core.windows.net/<container>.
  • Azure Data Lake Gen2 podporuje: adls://<container>@<storage_account_name>.blob.core.windows.net (doporučeno) nebo adls://<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 TNSNamesFile určuje cestu k souboru umístěnému tnsnames.ora na serveru Oracle.
  • Klíčové slovo ServerName určuje alias použitý uvnitř tnsnames.ora , který se použije k nahrazení názvu hostitele a portu.

možnosti 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ů:

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 AzureYour_Storage_Account> Sdílený přístupový podpisKonfigurovaná 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 jako SECRET.

    • 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é typy prostředků: Container a Object musí být vybrány pro vygenerování tokenu SAS.

Příklad použití CREDENTIAL úložiště objektů kompatibilních s S3 a PolyBase najdete v tématu Konfigurace PolyBase pro přístup k externím datům v úložišti objektů kompatibilním s S3.

Pokud chcete vytvořit přihlašovací údaje s vymezeným oborem databáze, přečtěte si téma CREATE DATABASE SCOPED CREDENTIAL.

Povolení

Vyžaduje 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.

  1. Přejděte na portál Azure a požadovaný účet úložiště.
  2. V nabídce Úložiště dat přejděte do požadovaného kontejneru.
  3. Vyberte Sdílené přístupové tokeny.
  4. 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
  1. Zvolte datum vypršení platnosti tokenu.
  2. Vygenerujte token SAS a adresu URL.
  3. 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
);

* SQL databáze *  

 

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

Transact-SQL konvence syntaxe

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ů. Argument DATABASE_NAME poskytuje databázi použitou k hostování mapy horizontálních oddílů a SHARD_MAP_NAME používá se pro samotnou mapu horizontálních oddílů.
  • <remote_server_name> = Název cílového logického serveru pro elastický dotaz. Název databáze je zadán pomocí argumentu DATABASE_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).
  • CREDENTIAL vyžaduje se pouze v případě, že jsou data zabezpečená. CREDENTIAL nevyžaduje se u datových sad, které umožňují anonymní přístup.
  • Pokud se přihlašovací TYPE = BLOB_STORAGEúdaje musí vytvořit jako SHARED ACCESS SIGNATURE identita.
  • 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 = HADOOP je nutné vytvořit přihlašovací údaje pomocí klíče účtu úložiště jako SECRETklíče .
  • TYPE = BLOB_STORAGE je 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).
  • 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 RDBMS pro dotazy napříč databázemi pomocí elastického dotazu ze služby SQL Database.
  • Používá se SHARD_MAP_MANAGER při vytváření externího zdroje dat při připojování k horizontálně dělené službě SQL Database.

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_STORAGE pouze pro použití s předponou https . Pro abd a adls předpony nezadávejte TYPE.

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://'
);

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

Transact-SQL konvence syntaxe

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žít abfss , když je vybrané zabezpečené připojení TLS/SSL, i když abfss funguje 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. https není k dispozici pro všechny metody přístupu k datům.
  • wasbs se doporučuje, protože se data posílají pomocí zabezpečeného připojení TLS.
  • Hierarchické obory názvů se nepodporují u účtů úložiště Azure V2 při přístupu k datům pomocí starší 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.
  • 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.

  • 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
);

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

Transact-SQL konvence syntaxe

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 clusteru Namenode Hadoop. PolyBase musí přeložit všechny názvy DNS používané clusterem Hadoop.
  • port = Port, na který externí zdroj dat naslouchá. V Hadoopu najdete port pomocí konfiguračního parametru fs.defaultFS . Výchozí hodnota je 8020.
  • <container> = kontejner účtu úložiště, ve kterém jsou uložená data. Kořenové kontejnery jsou jen pro čtení, data se nedají zapsat zpět do kontejneru.
  • <storage_account> = název účtu úložiště prostředku Azure.

Další poznámky a pokyny při nastavování umístění:

  • Modul PDW při vytváření objektu neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.
  • Při dotazování Hadoopu použijte stejný externí zdroj dat pro všechny tabulky, abyste zajistili konzistentní sémantiku dotazování.
  • wasbs se doporučuje, protože se data posílají pomocí zabezpečeného připojení TLS.
  • Hierarchické obory názvů se nepodporují při použití s účty Azure Storage přes wasb://.
  • Pokud chcete zajistit úspěšné dotazy PolyBase během převzetí služeb při selhání Hadoopu Namenode , zvažte použití virtuální IP adresy pro Namenode cluster 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.
  • CREDENTIAL vyžaduje se pouze v případě, že jsou data zabezpečená. CREDENTIAL nevyžaduje se u datových sad, které umožňují anonymní přístup.

TYP = * [ HADOOP ] *

Určuje typ nakonfigurovaného externího zdroje dat. Tento parametr není vždy povinný.

  • HadOOP použijte, pokud je externím zdrojem dat Cloudera CDH, Hortonworks HDP nebo Azure Storage.

Příklad použití TYPE = HADOOP k načtení dat 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
);

* SQL Managed Instance *  

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.

Transact-SQL konvence syntaxe

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).
  • CREDENTIAL vyžaduje se pouze v případě, že jsou data zabezpečená. CREDENTIAL nevyžaduje se u datových sad, které umožňují anonymní přístup.
  • Pokud se vyžaduje přihlašovací údaje, musí se přihlašovací údaje vytvořit pomocí Managed Identity identity nebo SHARED ACCESS SIGNATURE jako identita. Pokud chcete vytvořit přihlašovací údaje s vymezeným oborem databáze, přečtěte si téma CREATE DATABASE SCOPED CREDENTIAL.

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 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).
  • 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.

  1. Pokud neexistuje, vytvořte hlavní klíč databáze.

    -- Optional: Create MASTER KEY if it doesn't exist in the database:
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong Password>'
    GO
    
  2. Vytvořte přihlašovací údaje s vymezeným oborem databáze pomocí tokenu SAS. Můžete také použít spravovanou identitu.

    CREATE DATABASE SCOPED CREDENTIAL MyCredential
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
    SECRET = '<KEY>' ; --Removing leading '?'
    GO
    
  3. Vytvořte externí zdroj dat pomocí přihlašovacích údajů.

    --Create external data source pointing to the file path, and referencing database-scoped credential:
    CREATE EXTERNAL DATA SOURCE MyPrivateExternalDataSource
    WITH (
        LOCATION = 'abs://public@pandemicdatalake.blob.core.windows.net/curated/covid-19/bing_covid-19_data/latest',
        CREDENTIAL = [MyCredential]
    );
    
  4. 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;
    
  5. 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;
    
  6. 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
    

*Microsoft Fabric Data Warehouse *

Přehled: Microsoft Fabric Data Warehouse

Applies to: Fabric Data Warehouse

Vytvoří externí zdroj dat.

Transact-SQL konvence syntaxe

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

  1. 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'
    );
    
  2. 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'
    );
    
  3. 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;
    

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

Transact-SQL konvence syntaxe

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'
);