Sdílet prostřednictvím


CREATE EXTERNAL DATA SOURCE (Transact-SQL)

platí pro: SQL Server 2016 (13.x) a novější Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Vytvoří externí zdroj dat pro dotazování externích dat, který se používá pro funkce PolyBase a virtualizace dat.

Tento článek obsahuje syntaxi, argumenty, poznámky, oprávnění a příklady pro vámi zvolený produkt SQL.

Výběr produktu

V následujícím řádku vyberte název produktu, který vás zajímá, a zobrazí se jenom informace o daném produktu.

* SQL Server *  

 

Přehled: SQL Server 2016

Platí pro: SQL Server 2016 (13.x)

Vytvoří externí zdroj dat pro dotazy PolyBase. Externí zdroje dat slouží k navázání připojení a podpoře těchto primárních případů použití:

  • Virtualizace dat a načítání dat pomocí PolyBase
  • Operace hromadného načítání s využitím BULK INSERT nebo OPENROWSET

Poznámka:

Tato syntaxe se liší v různých verzích SQL Serveru. K výběru vhodné verze použijte rozevírací seznam selektoru verzí.
Informace o funkcích SQL Serveru 2019 (15.x) najdete v tématu VYTVOŘENÍ EXTERNÍHO ZDROJE DAT. Informace o funkcích SQL Serveru 2022 (16.x) najdete v tématu VYTVOŘENÍ EXTERNÍHO ZDROJE DAT.

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 jedinečný v rámci databáze na SQL Serveru.

LOCATION = '<prefix>://<path[:p ort]>'

Poskytuje protokol připojení a cestu k externímu zdroji dat.

Externí zdroj dat Předpona umístění konektoru Cesta k lokaci Podporovaná umístění podle produktu nebo služby Autentizace
Cloudera CDH nebo Hortonworks HDP hdfs <Namenode>[:port] SQL Server 2016 (13.x) na SQL Server 2019 (15.x) Anonymní nebo základní ověřování
Účet služby Azure Storage (V2) wasb[s] <container>@<storage_account>.blob.core.windows.net Počínaje SQL Serverem 2016 (13.x)
Hierarchický obor názvů není podporován.
Klíč účtu služby Azure Storage

Cesta k umístění:

  • <Namenode> = název počítače, identifikátor URI služby name nebo IP adresa 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 pojmenované instance SQL Serveru. Používá se, pokud máte službu SQL Server Browser spuštěnou v cílové instanci.

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

  • Databázový stroj SQL Serveru při vytváření objektu neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.
  • Při dotazování Hadoopu použijte stejný externí zdroj dat pro všechny tabulky, abyste zajistili konzistentní sémantiku dotazování.
  • wasbs je nepovinný, ale doporučuje se v SQL Serveru 2016 (13.x) pro přístup k účtům azure Storage, protože se budou odesílat data pomocí zabezpečeného připojení TLS/SSL.
  • Pokud chcete zajistit úspěšné dotazy PolyBase během převzetí služeb při selhání Hadoopu Namenode , zvažte použití virtuální IP adresy pro Namenode cluster Hadoop. Pokud ne, spusťte PŘÍKAZ ALTER EXTERNAL DATA SOURCE tak, aby odkazovat na nové umístění.

CREDENTIAL = credential_name

Určuje přihlašovací údaje s oborem databáze pro ověřování v externím zdroji dat.

CREDENTIAL vyžaduje se pouze v případě, že jsou data zabezpečená. CREDENTIAL nevyžaduje se u datových sad, které umožňují anonymní přístup.

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

TYP = * [ HADOOP ] *

Určuje typ nakonfigurovaného externího zdroje dat. V SQL Serveru 2016 je tento parametr vždy povinný a měl by být zadán pouze jako HADOOP. Podporuje připojení ke službě Cloudera CDH, Hortonworks HDP nebo účtu azure Storage. Chování tohoto parametru se liší v novějších verzích SQL Serveru.

Příklad použití TYPE = HADOOP k načtení dat z účtu azure Storage najdete v tématu Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Storage pomocí rozhraní wasb://

RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'

Tuto volitelnou hodnotu nakonfigurujte pouze při připojování k Cloudera CDH, Hortonworks HDP nebo účtu Azure Storage. Úplný seznam podporovaných verzí Hadoopu najdete v tématu Konfigurace připojení PolyBase.

RESOURCE_MANAGER_LOCATION Když je definován, optimalizátor dotazů provede rozhodnutí na základě nákladů za účelem zlepšení výkonu. Úlohu MapReduce lze použít k posunu výpočtů do Hadoopu. Určení RESOURCE_MANAGER_LOCATION může výrazně snížit objem dat přenášených mezi Hadoopem a SQL Serverem, což může vést ke zlepšení výkonu dotazů.

Pokud není Zadaný Resource Manager, je nabízení výpočetních prostředků do Hadoopu zakázané pro dotazy PolyBase. Vytvoření externího zdroje dat pro odkazování na Hadoop s povoleným push-down poskytuje konkrétní příklad a další pokyny.

Hodnota RESOURCE_MANAGER_LOCATION se při vytváření externího zdroje dat neověřuje. Zadání nesprávné hodnoty může způsobit selhání dotazu při spuštění při každém pokusu o nasdílení změn, protože zadaná hodnota by nebyla schopna vyřešit.

Aby polyBase fungovala správně s externím zdrojem dat Hadoop, musí být otevřené porty pro následující komponenty clusteru Hadoop:

  • Porty HDFS
    • Uzel NameNode
    • Datový uzel
  • Resource Manager
    • Odeslání úlohy
  • Historie úlohy

Pokud není port zadaný, zvolí se výchozí hodnota s použitím aktuálního nastavení pro konfiguraci připojení hadoop.

Připojení Hadoopu Výchozí port Resource Manageru
1 50300
2 50300
3 8021
4 8032
5 8050
6 8032
7 8050
8 8032

Následující tabulka uvádí výchozí porty pro tyto komponenty. Existuje závislost na verzi Hadoopu i možnost vlastní konfigurace, která nepoužívá výchozí přiřazení portu.

Komponenta clusteru Hadoop Výchozí port
Uzel NameNode 8020
Datový uzel (přenos dat, port IPC bez oprávnění) 50010
Datový uzel (přenos dat, port IPC oprávnění) 1019
Odeslání úlohy Resource Manageru (Hortonworks 1.3) 50300
Odeslání úlohy Resource Manageru (Cloudera 4.3) 8021
Odeslání úlohy Resource Manageru (Hortonworks 2.0 ve Windows, Cloudera 5.x v Linuxu) 8032
Odeslání úlohy Resource Manageru (Hortonworks 2.x, 3.0 v Linuxu, Hortonworks 2.1-3 ve Windows) 8050
Historie úloh Resource Manageru 10020

Povolení

Vyžaduje CONTROL oprávnění k databázi na SQL Serveru.

Uzamčení

Vezme sdílený zámek objektu EXTERNAL DATA SOURCE .

Bezpečnost

PolyBase podporuje ověřování na základě proxy serveru pro většinu externích zdrojů dat. Vytvořte přihlašovací údaje s vymezeným oborem databáze a vytvořte účet proxy serveru.

Příklady

Důležité

Informace o instalaci a povolení PolyBase naleznete v tématu Instalace PolyBase ve Windows.

A. Vytvoření externího zdroje dat pro odkazování na Hadoop

Pokud chcete vytvořit externí zdroj dat, který bude odkazovat na cluster Hortonworks HDP nebo Cloudera CDH Hadoop, zadejte název počítače nebo IP adresu Hadoopu Namenode a portu.

CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
    LOCATION = 'hdfs://10.10.10.10:8050',
    TYPE = HADOOP
);

B. Vytvoření externího zdroje dat pro odkazování na Hadoop s povoleným push-down

RESOURCE_MANAGER_LOCATION Zadejte možnost povolení výpočtu push-down do Hadoopu pro dotazy PolyBase. Jakmile je tato možnost povolená, polyBase provede rozhodnutí na základě nákladů, které určí, jestli se má výpočet dotazu odeslat do Hadoopu.

CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
    LOCATION = 'hdfs://10.10.10.10:8020',
    TYPE = HADOOP,
    RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);

C. Vytvoření externího zdroje dat pro odkazování na Hadoop zabezpečený protokolem Kerberos

Pokud chcete ověřit, jestli je cluster Hadoop zabezpečený protokolem Kerberos, zkontrolujte hodnotu hadoop.security.authentication vlastnosti v systému Hadoop core-site.xml. Pokud chcete odkazovat na cluster Hadoop zabezpečený protokolem Kerberos, musíte zadat přihlašovací údaje s oborem databáze, které obsahují vaše uživatelské jméno a heslo kerberos. Hlavní klíč databáze slouží k šifrování tajného klíče přihlašovacích údajů s vymezeným oborem databáze.

-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
    WITH IDENTITY = '<hadoop_user_name>',
    SECRET = '<hadoop_password>';

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
    LOCATION = 'hdfs://10.10.10.10:8050',
    CREDENTIAL = HadoopUser1,
    TYPE = HADOOP,
    RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);

D. Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Storage pomocí rozhraní wasb://

V tomto příkladu je externím zdrojem dat účet azure V2 Storage s názvem logs. Kontejner úložiště se nazývá daily. Externí zdroj dat Azure Storage je určený pouze pro přenos dat. Nepodporuje predikát push-down. Hierarchické obory názvů nejsou podporovány při přístupu k datům přes wasb:// rozhraní.

Tento příklad ukazuje, jak vytvořit přihlašovací údaje s vymezeným oborem databáze pro ověřování k účtu azure V2 Storage. Zadejte klíč účtu služby Azure Storage v tajném klíči přihlašovacích údajů databáze. V identitě přihlašovacích údajů s vymezeným oborem databáze můžete zadat libovolný řetězec, protože se nepoužívá při ověřování ve službě Azure Storage. Při připojování ke službě Azure Storage prostřednictvím wasb nebo wasbsmusí být ověřování provedeno pomocí klíče účtu úložiště, nikoli se sdíleným přístupovým podpisem (SAS).

V SQL Serveru 2016 (13.x) TYPE by se měl nastavit i HADOOP při přístupu ke službě Azure Storage.

-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
    WITH IDENTITY = '<my_account>',
    SECRET = '<azure_storage_account_key>';

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
    LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
    CREDENTIAL = AzureStorageCredential,
    TYPE = HADOOP
);

Přehled: SQL Server 2017

Platí pro: SQL Server 2017 (14.x)

Vytvoří externí zdroj dat pro dotazy PolyBase. Externí zdroje dat slouží k navázání připojení a podpoře těchto primárních případů použití:

  • Virtualizace dat a načítání dat pomocí PolyBase na SQL Serveru
  • Operace hromadného načítání s využitím BULK INSERT nebo OPENROWSET

Poznámka:

Tato syntaxe se liší v různých verzích SQL Serveru v Linuxu. K výběru vhodné verze použijte rozevírací seznam selektoru verzí.
Informace o funkcích SQL Serveru 2019 (15.x) najdete v tématu VYTVOŘENÍ EXTERNÍHO ZDROJE DAT. Informace o funkcích SQL Serveru 2022 (16.x) najdete v tématu VYTVOŘENÍ EXTERNÍHO ZDROJE DAT.

Poznámka:

Tato syntaxe se liší v různých verzích SQL Serveru. K výběru vhodné verze použijte rozevírací seznam selektoru verzí.
Informace o funkcích SQL Serveru 2019 (15.x) najdete v tématu VYTVOŘENÍ EXTERNÍHO ZDROJE DAT. Informace o funkcích SQL Serveru 2022 (16.x) najdete v tématu VYTVOŘENÍ EXTERNÍHO ZDROJE DAT.

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 jedinečný v rámci databáze na SQL Serveru.

LOCATION = '<prefix>://<path[:p ort]>'

Poskytuje protokol připojení a cestu k externímu zdroji dat.

Externí zdroj dat Předpona umístění konektoru Cesta k lokaci Podporovaná umístění podle produktu nebo služby Autentizace
Cloudera CDH nebo Hortonworks HDP hdfs <Namenode>[:port] POUZE SQL Server 2016 (13.x) na SQL Server 2019 (15.x) Anonymní nebo základní ověřování
Účet služby Azure Storage (V2) wasb[s] <container>@<storage_account>.blob.core.windows.net Počínaje SQL Serverem 2016 (13.x)
Hierarchický obor názvů není podporován.
Klíč účtu služby Azure Storage
Hromadné operace https <storage_account>.blob.core.windows.net/<container> Počínaje SQL Serverem 2017 (14.x) Sdílený přístupový podpis (SAS)

Cesta k umístění:

  • <Namenode> = název počítače, identifikátor URI služby name nebo IP adresa 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 pojmenované instance SQL Serveru. Používá se, pokud máte službu SQL Server Browser spuštěnou v cílové instanci.

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

  • Databázový stroj SQL Serveru při vytváření objektu neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.
  • Při dotazování Hadoopu použijte stejný externí zdroj dat pro všechny tabulky, abyste zajistili konzistentní sémantiku dotazování.
  • Driver={<Name of Driver>} Zadejte při připojování přes ODBC.
  • wasbs je nepovinný, ale doporučuje se v SQL Serveru 2017 (14.x) pro přístup k účtům azure Storage, protože se budou odesílat data pomocí zabezpečeného připojení TLS/SSL.
  • Pokud chcete zajistit úspěšné dotazy PolyBase během převzetí služeb při selhání Hadoopu Namenode , zvažte použití virtuální IP adresy pro Namenode cluster Hadoop. Pokud ne, spusťte PŘÍKAZ ALTER EXTERNAL DATA SOURCE tak, aby odkazovat na nové umístění.

CREDENTIAL = credential_name

Určuje přihlašovací údaje s oborem databáze pro ověřování v externím zdroji dat.

Další poznámky a pokyny při vytváření přihlašovacích údajů:

  • CREDENTIAL vyžaduje se pouze v případě, že jsou data zabezpečená. CREDENTIAL nevyžaduje se u datových sad, které umožňují anonymní přístup.
  • Pokud se přihlašovací TYPE = BLOB_STORAGEúdaje musí vytvořit jako SHARED ACCESS SIGNATURE identita.
  • TYPE = BLOB_STORAGE je povolena pouze pro hromadné operace; Nelze vytvořit externí tabulky pro externí zdroj dat s TYPE = BLOB_STORAGE.
  • Při připojování ke službě Azure Storage prostřednictvím wasb nebo wasbsmusí 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 .

Sdílený přístupový podpis můžete vytvořit několika způsoby:

  • Token SAS můžete vytvořit tak, že přejdete na web Azure Portal -><Your_Storage_Account> –> Sdílený přístupový podpis –> Konfigurace oprávnění –> Vygenerování SAS a připojovacího řetězce. Další informace najdete v tématu Generování sdíleného přístupového podpisu.

  • Sas můžete vytvořit a nakonfigurovat pomocí Průzkumníka služby Azure Storage.

  • Token SAS můžete vytvořit programově prostřednictvím PowerShellu, Azure CLI, .NET a rozhraní REST API. Další informace najdete v tématu Udělení omezeného přístupu k prostředkům Azure Storage pomocí sdílených přístupových podpisů (SAS).

  • Token SAS by měl být nakonfigurovaný takto:

    • Když se vygeneruje token SAS, obsahuje na začátku tokenu otazník (?). Při konfiguraci tajného kódu vyloučí počáteční ? .
    • Použijte platnou dobu vypršení platnosti (všechna data jsou v čase UTC).
  • Udělte alespoň oprávnění ke čtení souboru, který by se měl načíst (například srt=o&sp=r). Pro různé případy použití je možné vytvořit více sdílených přístupových podpisů. Oprávnění by měla být udělena následujícím způsobem:

    Činnost Povolení
    Čtení dat ze souboru Čti
    Čtení dat z více souborů a podsložek Číst a seznamovat

Příklad použití příkazu CREDENTIAL with SHARED ACCESS SIGNATURE aTYPE = BLOB_STORAGE , viz Vytvoření externího zdroje dat pro provádění hromadných operací a načtení dat ze služby Azure Storage do SQL Database

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

TYPE = * [ HADOOP | BLOB_STORAGE ] *

Určuje typ nakonfigurovaného externího zdroje dat. Tento parametr není vždy povinný a měl by být zadán pouze při připojování k Cloudera CDH, Hortonworks HDP, účtu Azure Storage nebo Azure Data Lake Storage Gen2.

  • Použijte HADOOP , když externí zdroj dat je Cloudera CDH, Hortonworks HDP, účet Azure Storage nebo Azure Data Lake Storage Gen2.
  • Používá se BLOB_STORAGE při provádění hromadných operací z účtu služby Azure Storage pomocí funkce BULK INSERT nebo OPENROWSET. Představeno s SQL Serverem 2017 (14.x). Používá HADOOP se při úmyslu použít pro CREATE EXTERNAL TABLE Azure Storage.

Poznámka:

TYPE měla by být nastavená i HADOOP při přístupu ke službě Azure Storage.

Příklad použití TYPE = HADOOP k načtení dat z účtu azure Storage najdete v tématu Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Storage pomocí rozhraní wasb://

RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'

Tuto volitelnou hodnotu nakonfigurujte pouze při připojování k Cloudera CDH, Hortonworks HDP nebo účtu Azure Storage. Úplný seznam podporovaných verzí Hadoopu najdete v tématu Konfigurace připojení PolyBase (Transact-SQL).

RESOURCE_MANAGER_LOCATION Po definování provede optimalizátor dotazů rozhodnutí na základě nákladů za účelem zlepšení výkonu. Úlohu MapReduce lze použít k posunu výpočtů do Hadoopu. Určení RESOURCE_MANAGER_LOCATION může výrazně snížit objem dat přenášených mezi Hadoopem a SQL Serverem, což může vést ke zlepšení výkonu dotazů.

Pokud není Zadaný Resource Manager, je nabízení výpočetních prostředků do Hadoopu zakázané pro dotazy PolyBase. Vytvoření externího zdroje dat pro odkazování na Hadoop s povoleným push-down poskytuje konkrétní příklad a další pokyny.

Při RESOURCE_MANAGER_LOCATION vytváření externího zdroje dat se tato hodnota neověřuje. Zadání nesprávné hodnoty může způsobit selhání dotazu při spuštění při každém pokusu o nasdílení změn, protože zadaná hodnota by nebyla schopna vyřešit.

Aby polyBase fungovala správně s externím zdrojem dat Hadoop, musí být otevřené porty pro následující komponenty clusteru Hadoop:

  • Porty HDFS
    • Uzel NameNode
    • Datový uzel
  • Resource Manager
    • Odeslání úlohy
  • Historie úlohy

Pokud není port zadaný, zvolí se výchozí hodnota s použitím aktuálního nastavení pro konfiguraci připojení hadoop.

Připojení Hadoopu Výchozí port Resource Manageru
1 50300
2 50300
3 8021
4 8032
5 8050
6 8032
7 8050
8 8032

Následující tabulka uvádí výchozí porty pro tyto komponenty. Existuje závislost na verzi Hadoopu i možnost vlastní konfigurace, která nepoužívá výchozí přiřazení portu.

Komponenta clusteru Hadoop Výchozí port
Uzel NameNode 8020
Datový uzel (přenos dat, port IPC bez oprávnění) 50010
Datový uzel (přenos dat, port IPC oprávnění) 1019
Odeslání úlohy Resource Manageru (Hortonworks 1.3) 50300
Odeslání úlohy Resource Manageru (Cloudera 4.3) 8021
Odeslání úlohy Resource Manageru (Hortonworks 2.0 ve Windows, Cloudera 5.x v Linuxu) 8032
Odeslání úlohy Resource Manageru (Hortonworks 2.x, 3.0 v Linuxu, Hortonworks 2.1-3 ve Windows) 8050
Historie úloh Resource Manageru 10020

Povolení

Vyžaduje CONTROL oprávnění k databázi na SQL Serveru.

Uzamčení

Vezme sdílený zámek objektu EXTERNAL DATA SOURCE .

Bezpečnost

PolyBase podporuje ověřování na základě proxy serveru pro většinu externích zdrojů dat. Vytvořte přihlašovací údaje s vymezeným oborem databáze a vytvořte účet proxy serveru.

Token SAS s typem HADOOP není podporován. Podporuje se pouze u typu = BLOB_STORAGE při použití přístupového klíče účtu úložiště. Pokus o vytvoření externího zdroje dat s typem HADOOP a přihlašovací údaje SAS selžou s následující chybou:

Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account are not valid.: Error [Parameters provided to connect to the Azure storage account are not valid.] occurred while accessing external file.'

Příklady

Důležité

Informace o instalaci a povolení PolyBase naleznete v tématu Instalace PolyBase ve Windows.

A. Vytvoření externího zdroje dat pro odkazování na Hadoop

Pokud chcete vytvořit externí zdroj dat, který bude odkazovat na cluster Hortonworks HDP nebo Cloudera CDH Hadoop, zadejte název počítače nebo IP adresu Hadoopu Namenode a portu.

CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
    LOCATION = 'hdfs://10.10.10.10:8050',
    TYPE = HADOOP
);

B. Vytvoření externího zdroje dat pro odkazování na Hadoop s povoleným push-down

RESOURCE_MANAGER_LOCATION Zadejte možnost povolení výpočtu push-down do Hadoopu pro dotazy PolyBase. Jakmile je tato možnost povolená, polyBase provede rozhodnutí na základě nákladů, které určí, jestli se má výpočet dotazu odeslat do Hadoopu.

CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
    LOCATION = 'hdfs://10.10.10.10:8020',
    TYPE = HADOOP,
    RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);

C. Vytvoření externího zdroje dat pro odkazování na Hadoop zabezpečený protokolem Kerberos

Pokud chcete ověřit, jestli je cluster Hadoop zabezpečený protokolem Kerberos, zkontrolujte hodnotu hadoop.security.authentication vlastnosti v systému Hadoop core-site.xml. Pokud chcete odkazovat na cluster Hadoop zabezpečený protokolem Kerberos, musíte zadat přihlašovací údaje s oborem databáze, které obsahují vaše uživatelské jméno a heslo kerberos. Hlavní klíč databáze slouží k šifrování tajného klíče přihlašovacích údajů s vymezeným oborem databáze.

-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
    WITH IDENTITY = '<hadoop_user_name>',
    SECRET = '<hadoop_password>';

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
    LOCATION = 'hdfs://10.10.10.10:8050',
    CREDENTIAL = HadoopUser1,
    TYPE = HADOOP,
    RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);

D. Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Storage pomocí rozhraní wasb://

V tomto příkladu je externím zdrojem dat účet azure V2 Storage s názvem logs. Kontejner úložiště se nazývá daily. Externí zdroj dat Azure Storage je určený pouze pro přenos dat. Nepodporuje predikát push-down. Hierarchické obory názvů nejsou podporovány při přístupu k datům přes wasb:// rozhraní. Při připojování ke službě Azure Storage prostřednictvím wasb nebo wasbsmusí být ověřování provedeno pomocí klíče účtu úložiště, nikoli se sdíleným přístupovým podpisem (SAS).

Tento příklad ukazuje, jak vytvořit přihlašovací údaje s vymezeným oborem databáze pro ověřování k účtu azure V2 Storage. Zadejte klíč účtu služby Azure Storage v tajném klíči přihlašovacích údajů databáze. V identitě přihlašovacích údajů s vymezeným oborem databáze můžete zadat libovolný řetězec, protože se nepoužívá při ověřování ve službě Azure Storage.

-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
    WITH IDENTITY = '<my_account>',
    SECRET = '<azure_storage_account_key>';

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
    LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
    CREDENTIAL = AzureStorageCredential,
    TYPE = HADOOP
);

Příklady: Hromadné operace

Důležité

Při konfiguraci externího / zdroje dat pro hromadné operace nepřidávejte LOCATIONkoncové parametry, název souboru ani parametry sdíleného přístupového podpisu na konci adresy URL.

E. Vytvoření externího zdroje dat pro hromadné operace načítání dat z Azure Storage

Platí pro: SQL Server 2017 (14.x) a novější verze

Pro hromadné operace pomocí funkce BULK INSERT nebo OPENROWSET použijte následující zdroj dat. Přihlašovací údaje musí být nastavené SHARED ACCESS SIGNATURE jako identita, nesmí mít v tokenu SAS počáteční ? oprávnění, musí mít alespoň oprávnění ke čtení souboru, který by se měl načíst (například srt=o&sp=r) a doba vypršení platnosti by měla být platná (všechna data jsou v čase UTC). Další informace o sdílených přístupových podpisech najdete v tématu Použití sdílených přístupových podpisů (SAS).

CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
    -- Remove ? from the beginning of the SAS token
    SECRET = '<azure_storage_account_key>';

CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
    LOCATION = 'https://newinvoices.blob.core.windows.net/week3',
    CREDENTIAL = AccessAzureInvoices,
    TYPE = BLOB_STORAGE
);

Pokud se chcete podívat na tento příklad, podívejte se na příkaz BULK INSERT.

Přehled: SQL Server 2019

platí pro: SQL Server 2019 (15.x)

Vytvoří externí zdroj dat pro dotazy PolyBase. Externí zdroje dat slouží k navázání připojení a podpoře těchto primárních případů použití:

  • Virtualizace dat a načítání dat pomocí PolyBase na SQL Serveru
  • Operace hromadného načítání s využitím BULK INSERT nebo OPENROWSET

Poznámka:

Tato syntaxe se liší v různých verzích SQL Serveru. K výběru vhodné verze použijte rozevírací seznam selektoru verzí.
Informace o funkcích SQL Serveru 2022 (16.x) najdete v tématu VYTVOŘENÍ EXTERNÍHO ZDROJE DAT.

Poznámka:

Tato syntaxe se liší v různých verzích SQL Serveru. K výběru vhodné verze použijte rozevírací seznam selektoru verzí.
Informace o funkcích SQL Serveru 2022 (16.x) najdete v tématu VYTVOŘENÍ EXTERNÍHO ZDROJE DAT.

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 jedinečný v rámci databáze na SQL Serveru.

LOCATION = '<prefix>://<path[:p ort]>'

Poskytuje protokol připojení a cestu k externímu zdroji dat.

Externí zdroj dat Předpona umístění konektoru Cesta k lokaci Podporovaná umístění podle produktu nebo služby Autentizace
Cloudera CDH nebo Hortonworks HDP hdfs <Namenode>[:port] SQL Server 2016 (13.x) na SQL Server 2019 (15.x) Anonymní nebo základní ověřování
Účet služby Azure Storage (V2) wasb[s] <container>@<storage_account>.blob.core.windows.net Počínaje SQL Serverem 2016 (13.x)
Hierarchický obor názvů není podporován.
Klíč účtu služby Azure Storage
SQL Server sqlserver <server_name>[\<instance_name>][:port] Počínaje SQL Serverem 2019 (15.x) Pouze ověřování SQL
Věštírna oracle <server_name>[:port] Počínaje SQL Serverem 2019 (15.x) Pouze základní ověřování
Teradata teradata <server_name>[:port] Počínaje SQL Serverem 2019 (15.x) Pouze základní ověřování
MongoDB nebo cosmos DB API pro MongoDB mongodb <server_name>[:port] Počínaje SQL Serverem 2019 (15.x) Pouze základní ověřování
Obecné ODBC odbc <server_name>[:port] Od SQL Serveru 2019 (15.x) – jenom Windows Pouze základní ověřování
Hromadné operace https <storage_account>.blob.core.windows.net/<container> Počínaje SQL Serverem 2017 (14.x) Sdílený přístupový podpis (SAS)
Azure Data Lake Storage Gen2 abfs[s] abfss://<container>@<storage _account>.dfs.core.windows.net Počínaje SQL Serverem 2019 (15.x) CU11+. Přístupový klíč úložiště
Fond dat clusterů s velkými objemy dat SQL Serveru sqldatapool sqldatapool://controller-svc/default Podporováno pouze v clusterech s velkými objemy dat SQL Serveru 2019 Pouze základní ověřování
Fond úložiště clusterů s velkými objemy dat SQL Serveru sqlhdfs sqlhdfs://controller-svc/default Podporováno pouze v clusterech s velkými objemy dat SQL Serveru 2019 Pouze základní ověřování

Cesta k umístění:

  • <Namenode> = název počítače, identifikátor URI služby name nebo IP adresa 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 pojmenované instance SQL Serveru. Používá se, pokud máte službu SQL Server Browser spuštěnou v cílové instanci.

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

  • Databázový stroj SQL Serveru při vytváření objektu neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.
  • Při dotazování Hadoopu použijte stejný externí zdroj dat pro všechny tabulky, abyste zajistili konzistentní sémantiku dotazování.
  • Konektor můžete použít sqlserver k připojení SQL Serveru 2019 (15.x) k jinému SQL Serveru nebo k Azure SQL Database.
  • Driver={<Name of Driver>} Zadejte při připojování přes ODBC.
  • Použití wasbs nebo abfss je volitelné, ale doporučuje se v SQL Serveru 2019 (15.x) pro přístup k účtům azure Storage, protože se budou odesílat data pomocí zabezpečeného připojení TLS/SSL.
  • Rozhraní abfs API nebo abfss rozhraní API se podporují při přístupu k účtům azure Storage počínaje SQL Serverem 2019 (15.x) CU11. Další informace najdete v ovladači systému souborů Azure Blob (ABFS).
  • Možnost Hierarchický obor názvů pro účty Azure Storage (V2) používající abfs[s] se podporuje prostřednictvím Azure Data Lake Storage Gen2 počínaje SQL Serverem 2019 (15.x) CU11+. Možnost Hierarchický obor názvů není jinak podporovaná a tato možnost by měla zůstat zakázaná.
  • Pokud chcete zajistit úspěšné dotazy PolyBase během převzetí služeb při selhání Hadoopu Namenode , zvažte použití virtuální IP adresy 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šť sql Serveru pro velké objemy dat najdete v tématu Dotazování HDFS v clusteru s velkými objemy dat SQL Serveru 2019.
  • Podpora SQL Serveru pro externí zdroje dat HDFS Cloudera (CDP) a Hortonworks (HDP) byla vyřazena a není součástí SQL Serveru 2022 (16.x) a novějších verzí. Další informace najdete v tématu možnosti velkých objemů dat na platformě Microsoft SQL Server.

CONNECTION_OPTIONS = key_value_pair

Určeno pro SQL Server 2019 (15.x) a novější verze. Určuje další možnosti při připojování ODBC k externímu zdroji dat. Pokud chcete použít více možností připojení, oddělte je středníkem.

Platí pro obecná ODBC připojení a také integrované ODBC konektory pro SQL Server, Oracle, Teradata, MongoDB a rozhraní API služby Azure Cosmos DB pro MongoDB.

Jedná se key_value_pair o klíčové slovo a hodnotu konkrétní možnosti připojení. Dostupná klíčová slova a hodnoty závisí na typu externího zdroje dat. Název ovladače se vyžaduje minimálně, ale existují i další možnosti, jako APP='<your_application_name>' jsou nebo ApplicationIntent= ReadOnly|ReadWrite které jsou také užitečné k nastavení a můžou vám pomoct s řešením potíží.

Možné páry klíč-hodnota jsou specifické pro poskytovatele externího zdroje dat dodavatele. Další informace pro každého zprostředkovatele naleznete v tématu CREATE EXTERNAL DATA SOURCE (Transact-SQL) CONNECTION_OPTIONS.

Počínaje kumulativní aktualizací 19 SQL Serveru 2019 (15.x) byly zavedeny další klíčová slova pro podporu souborů Oracle TNS:

  • Klíčové slovo TNSNamesFile určuje cestu k souboru umístěné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 Serveru, Oracle, Teradata, MongoDB, rozhraní API služby Azure Cosmos DB pro MongoDB nebo ODBC na úrovni externího zdroje dat.

Povolení nebo zakázání nabízení na úrovni dotazu se dosahuje pomocí nápovědy EXTERNALPUSHDOWN.

CREDENTIAL = credential_name

Určuje přihlašovací údaje s oborem databáze pro ověřování v externím zdroji dat.

Další poznámky a pokyny při vytváření přihlašovacích údajů:

  • CREDENTIAL vyžaduje se pouze v případě, že jsou data zabezpečená. CREDENTIAL nevyžaduje se u datových sad, které umožňují anonymní přístup.
  • Pokud se přihlašovací TYPE = BLOB_STORAGEúdaje musí vytvořit jako SHARED ACCESS SIGNATURE identita.
  • TYPE = BLOB_STORAGE je povolena pouze pro hromadné operace; Nelze vytvořit externí tabulky pro externí zdroj dat s 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 web Azure Portal -><Your_Storage_Account> –> Sdílený přístupový podpis –> Konfigurace oprávnění –> Vygenerování SAS a připojovacího řetězce. Další informace najdete v tématu Generování sdíleného přístupového podpisu.

  • Sas můžete vytvořit a nakonfigurovat pomocí Průzkumníka služby Azure Storage.

  • Token SAS můžete vytvořit programově prostřednictvím PowerShellu, Azure CLI, .NET a rozhraní REST API. Další informace najdete v tématu Udělení omezeného přístupu k prostředkům Azure Storage pomocí sdílených přístupových podpisů (SAS).

  • Token SAS by měl být nakonfigurovaný takto:

    • Když se vygeneruje token SAS, obsahuje na začátku tokenu otazník (?). Při konfiguraci tajného kódu vyloučí počáteční ? .
    • Použijte platnou dobu vypršení platnosti (všechna data jsou v čase UTC).
  • Udělte alespoň oprávnění ke čtení souboru, který by se měl načíst (například srt=o&sp=r). Pro různé případy použití je možné vytvořit více sdílených přístupových podpisů. Oprávnění by měla být udělena následujícím způsobem:

    Činnost Povolení
    Čtení dat ze souboru Čti
    Čtení dat z více souborů a podsložek Číst a seznamovat

Příklad použití příkazu CREDENTIAL with SHARED ACCESS SIGNATURE aTYPE = BLOB_STORAGE , viz Vytvoření externího zdroje dat pro provádění hromadných operací a načtení dat ze služby Azure Storage do SQL Database

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

TYPE = * [ HADOOP | BLOB_STORAGE ] *

Určuje typ nakonfigurovaného externího zdroje dat. Tento parametr není vždy povinný a měl by být zadán pouze při připojování k Cloudera CDH, Hortonworks HDP, účtu Azure Storage nebo Azure Data Lake Storage Gen2.

  • V SQL Serveru 2019 (15.x) nezadávejte TYP, pokud se nepřipojíte ke cloudera CDH, Hortonworks HDP, účtu Azure Storage.
  • Použijte HADOOP , když externí zdroj dat je Cloudera CDH, Hortonworks HDP, účet Azure Storage nebo Azure Data Lake Storage Gen2.
  • Používá se BLOB_STORAGE při provádění hromadných operací z účtu služby Azure Storage pomocí příkazu BULK INSERT nebo OPENROWSET s SQL Serverem 2017 (14.x). Slouží HADOOP k vytvoření externí tabulky pro Azure Storage.
  • Podpora SQL Serveru pro externí zdroje dat HDFS Cloudera (CDP) a Hortonworks (HDP) byla vyřazena a není součástí SQL Serveru 2022 (16.x) a novějších verzí. Další informace najdete v tématu možnosti velkých objemů dat na platformě Microsoft SQL Server.

Příklad použití TYPE = HADOOP k načtení dat z účtu Azure Storage najdete v tématu Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Storage pomocí rozhraní wasb://.

RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'

V SQL Serveru 2019 (15.x) nezadávejte RESOURCE_MANAGER_LOCATION, pokud se nepřipojíte ke cloudera CDH, Hortonworks HDP, účtu Azure Storage.

Tuto volitelnou hodnotu nakonfigurujte pouze při připojování k Cloudera CDH, Hortonworks HDP nebo účtu Azure Storage. Úplný seznam podporovaných verzí Hadoopu najdete v tématu Konfigurace připojení PolyBase.

RESOURCE_MANAGER_LOCATION Když je definován, optimalizátor dotazů provede rozhodnutí na základě nákladů za účelem zlepšení výkonu. Úlohu MapReduce lze použít k posunu výpočtů do Hadoopu. Určení RESOURCE_MANAGER_LOCATION může výrazně snížit objem dat přenášených mezi Hadoopem a SQL Serverem, což může vést ke zlepšení výkonu dotazů.

Pokud není Zadaný Resource Manager, je nabízení výpočetních prostředků do Hadoopu zakázané pro dotazy PolyBase. Vytvoření externího zdroje dat pro odkazování na Hadoop s povoleným push-down poskytuje konkrétní příklad a další pokyny.

Hodnota RESOURCE_MANAGER_LOCATION se při vytváření externího zdroje dat neověřuje. Zadání nesprávné hodnoty může způsobit selhání dotazu při spuštění při každém pokusu o nasdílení změn, protože zadaná hodnota by nebyla schopna vyřešit.

Aby polyBase fungovala správně s externím zdrojem dat Hadoop, musí být otevřené porty pro následující komponenty clusteru Hadoop:

  • Porty HDFS
    • Uzel NameNode
    • Datový uzel
  • Resource Manager
    • Odeslání úlohy
  • Historie úlohy

Pokud není port zadaný, zvolí se výchozí hodnota s použitím aktuálního nastavení pro konfiguraci připojení hadoop.

Připojení Hadoopu Výchozí port Resource Manageru
1 50300
2 50300
3 8021
4 8032
5 8050
6 8032
7 8050
8 8032

Následující tabulka uvádí výchozí porty pro tyto komponenty. Existuje závislost na verzi Hadoopu i možnost vlastní konfigurace, která nepoužívá výchozí přiřazení portu.

Komponenta clusteru Hadoop Výchozí port
Uzel NameNode 8020
Datový uzel (přenos dat, port IPC bez oprávnění) 50010
Datový uzel (přenos dat, port IPC oprávnění) 1019
Odeslání úlohy Resource Manageru (Hortonworks 1.3) 50300
Odeslání úlohy Resource Manageru (Cloudera 4.3) 8021
Odeslání úlohy Resource Manageru (Hortonworks 2.0 ve Windows, Cloudera 5.x v Linuxu) 8032
Odeslání úlohy Resource Manageru (Hortonworks 2.x, 3.0 v Linuxu, Hortonworks 2.1-3 ve Windows) 8050
Historie úloh Resource Manageru 10020

Povolení

Vyžaduje CONTROL oprávnění k databázi na SQL Serveru.

Uzamčení

Vezme sdílený zámek objektu EXTERNAL DATA SOURCE .

Bezpečnost

PolyBase podporuje ověřování na základě proxy serveru pro většinu externích zdrojů dat. Vytvořte přihlašovací údaje s vymezeným oborem databáze a vytvořte účet proxy serveru.

Když se připojíte k úložišti nebo fondu dat v clusteru s velkými objemy dat SQL Serveru 2019, předají se přihlašovací údaje uživatele do back-endového systému. Vytvořte přihlášení v samotném fondu dat, abyste povolili předávací ověřování.

Token SAS s typem HADOOP není podporován. Podporuje se pouze u typu = BLOB_STORAGE při použití přístupového klíče účtu úložiště. Pokus o vytvoření externího zdroje dat s typem HADOOP a přihlašovací údaje SAS selžou s následující chybou:

Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account are not valid.: Error [Parameters provided to connect to the Azure storage account are not valid.] occurred while accessing external file.'

Příklady

Důležité

Informace o instalaci a povolení PolyBase naleznete v tématu Instalace PolyBase ve Windows.

A. Vytvoření externího zdroje dat v SQL Serveru 2019 pro referenci na Oracle

Pokud chcete vytvořit externí zdroj dat, který odkazuje na Oracle, ujistěte se, že máte přihlašovací údaje v oboru databáze. Volitelně můžete také povolit nebo zakázat nabízení výpočtů u tohoto zdroje dat.

-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
    WITH IDENTITY = 'oracle_username',
    SECRET = 'oracle_password';

CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH (
    LOCATION = 'oracle://145.145.145.145:1521',
    CREDENTIAL = OracleProxyAccount,
    PUSHDOWN = ON
);

Volitelně může externí zdroj dat oracle použít ověřování proxy serverem k zajištění podrobného řízení přístupu. Uživatele proxy serveru je možné nakonfigurovat tak, aby měl omezený přístup v porovnání s uživatelem, který se zosobní.

CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential]
    WITH IDENTITY = 'oracle_username',
    SECRET = 'oracle_password';

CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
WITH (
    LOCATION = 'oracle://145.145.145.145:1521',
    CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER',
    CREDENTIAL = [OracleProxyCredential]
);

Případně můžete použít ověřování TNS.

Počínaje kumulativní aktualizací SQL Serveru 2019 (15.x) 19 CREATE EXTERNAL DATA SOURCE teď podporuje použití souborů TNS při připojování k Oracle.

Parametr CONNECTION_OPTIONS byl rozbalený a nyní se používá TNSNamesFile a ServerName jako proměnné slouží k procházení tnsnames.ora souboru a navázání připojení k serveru.

V následujícím příkladu bude sql Server za běhu hledat tnsnames.ora umístění souboru určeného TNSNamesFile a hledat hostitele a síťový port určený ServerName.

CREATE EXTERNAL DATA SOURCE [external_data_source_name]
WITH (
    LOCATION = N'oracle://XE',
    CREDENTIAL = [OracleCredentialTest],
    CONNECTION_OPTIONS = N'TNSNamesFile=C:\Temp\tnsnames.ora;ServerName=XE'
);

Další příklady pro jiné zdroje dat, jako je MongoDB, najdete v tématu Konfigurace PolyBase pro přístup k externím datům v MongoDB.

B. Vytvoření externího zdroje dat pro odkazování na Hadoop

Pokud chcete vytvořit externí zdroj dat, který bude odkazovat na cluster Hortonworks HDP nebo Cloudera CDH Hadoop, zadejte název počítače nebo IP adresu Hadoopu Namenode a portu.

CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
    LOCATION = 'hdfs://10.10.10.10:8050',
    TYPE = HADOOP
);

C. Vytvoření externího zdroje dat pro odkazování na Hadoop s povoleným push-down

RESOURCE_MANAGER_LOCATION Zadejte možnost povolení výpočtu push-down do Hadoopu pro dotazy PolyBase. Jakmile je tato možnost povolená, polyBase provede rozhodnutí na základě nákladů, které určí, jestli se má výpočet dotazu odeslat do Hadoopu.

CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
    LOCATION = 'hdfs://10.10.10.10:8020',
    TYPE = HADOOP,
    RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);

D. Vytvoření externího zdroje dat pro odkazování na Hadoop zabezpečený protokolem Kerberos

Pokud chcete ověřit, jestli je cluster Hadoop zabezpečený protokolem Kerberos, zkontrolujte hodnotu hadoop.security.authentication vlastnosti v systému Hadoop core-site.xml. Pokud chcete odkazovat na cluster Hadoop zabezpečený protokolem Kerberos, musíte zadat přihlašovací údaje s oborem databáze, které obsahují vaše uživatelské jméno a heslo kerberos. Hlavní klíč databáze slouží k šifrování tajného klíče přihlašovacích údajů s vymezeným oborem databáze.

-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
    WITH IDENTITY = '<hadoop_user_name>',
    SECRET = '<hadoop_password>';

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
    LOCATION = 'hdfs://10.10.10.10:8050',
    CREDENTIAL = HadoopUser1,
    TYPE = HADOOP,
    RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);

E. Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Storage pomocí rozhraní wasb://

V tomto příkladu je externím zdrojem dat účet azure V2 Storage s názvem logs. Kontejner úložiště se nazývá daily. Externí zdroj dat Azure Storage je určený pouze pro přenos dat. Nepodporuje predikát push-down. Hierarchické obory názvů nejsou podporovány při přístupu k datům přes wasb:// rozhraní. Při připojování ke službě Azure Storage prostřednictvím wasb nebo wasbsmusí být ověřování provedeno pomocí klíče účtu úložiště, nikoli se sdíleným přístupovým podpisem (SAS).

Tento příklad ukazuje, jak vytvořit přihlašovací údaje s vymezeným oborem databáze pro ověřování k účtu azure V2 Storage. Zadejte klíč účtu služby Azure Storage v tajném klíči přihlašovacích údajů databáze. V identitě přihlašovacích údajů s vymezeným oborem databáze můžete zadat libovolný řetězec, protože se nepoužívá při ověřování ve službě Azure Storage.

-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
    WITH IDENTITY = '<my_account>',
    SECRET = '<azure_storage_account_key>';

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
    LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
    CREDENTIAL = AzureStorageCredential,
    TYPE = HADOOP
);

F. Vytvoření externího zdroje dat pro odkazování na pojmenovanou instanci SQL Serveru prostřednictvím připojení PolyBase

platí pro: SQL Server 2019 (15.x) a novější

Chcete-li vytvořit externí zdroj dat, který odkazuje na pojmenovanou instanci SQL Serveru, použijte CONNECTION_OPTIONS k určení názvu instance.

V následujícím příkladu WINSQL2019 je název hostitele a SQL2019 je to název instance. 'Server=%s\SQL2019' je pár klíč-hodnota.

CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
    LOCATION = 'sqlserver://WINSQL2019',
    CONNECTION_OPTIONS = 'Server=%s\SQL2019',
    CREDENTIAL = SQLServerCredentials
);

Případně můžete použít port pro připojení k výchozí instanci SQL Serveru.

CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
    LOCATION = 'sqlserver://WINSQL2019:58137',
    CREDENTIAL = SQLServerCredentials
);

G. Vytvoření externího zdroje dat pro odkazování na čitelný sekundární repliku skupiny dostupnosti AlwaysOn

platí pro: SQL Server 2019 (15.x) a novější

Chcete-li vytvořit externí zdroj dat, který odkazuje na čitelný sekundární repliku SYSTÉMU SQL Server, použijte CONNECTION_OPTIONS k určení ApplicationIntent=ReadOnly. Kromě toho budete muset buď nastavit databázi dostupnosti jako Database={dbname} in CONNECTION_OPTIONS, nebo nastavit databázi dostupnosti jako výchozí databázi přihlášení použitého pro přihlašovací údaje v oboru databáze. Budete to muset provést u všech replik dostupnosti skupiny dostupnosti.

Nejprve vytvořte přihlašovací údaje s vymezeným oborem databáze a uložíte přihlašovací údaje pro ověřené přihlášení SQL. Konektor SQL ODBC pro PolyBase podporuje pouze základní ověřování. Před vytvořením přihlašovacích údajů s vymezeným oborem databáze musí mít databáze hlavní klíč pro ochranu přihlašovacích údajů. Další informace naleznete v tématu CREATE MASTER KEY. Následující ukázka vytvoří přihlašovací údaje s vymezeným oborem databáze a poskytne vlastní přihlašovací údaje a heslo.

CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
    WITH IDENTITY = 'username',
    SECRET = 'password';

Dále vytvořte nový externí zdroj dat.

Bez ohledu na Database=dbname to, jestli jste do databáze dostupnosti zahrnuli CONNECTION_OPTIONS nebo nastavili výchozí databázi pro přihlášení v přihlašovacích údajích s vymezeným oborem databáze, musíte v parametru LOCATION zadat název databáze prostřednictvím názvu třídílné části příkazu CREATE EXTERNAL TABLE. Příklad najdete v tématu VYTVOŘENÍ EXTERNÍ TABULKY.

V následujícím příkladu WINSQL2019AGL je název naslouchacího procesu skupiny dostupnosti a dbname je to název databáze, která má být cílem příkazu CREATE EXTERNAL TABLE.

CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
    LOCATION = 'sqlserver://WINSQL2019AGL',
    CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
    CREDENTIAL = SQLServerCredentials
);

Chování přesměrování skupiny dostupnosti můžete předvést zadáním ApplicationIntent a vytvořením externí tabulky v systémovém zobrazení sys.servers. V následujícím ukázkovém skriptu se vytvoří dva externí zdroje dat a pro každou z nich se vytvoří jedna externí tabulka. Pomocí zobrazení otestujte, který server reaguje na připojení. Podobné výsledky je možné dosáhnout také pomocí funkce směrování jen pro čtení. Další informace najdete v tématu Konfigurace směrování jen pro čtení pro skupinu dostupnosti AlwaysOn.

CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadOnlyIntent]
WITH (
    LOCATION = 'sqlserver://WINSQL2019AGL',
    CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
    CREDENTIAL = [SQLServerCredentials]
);
GO

CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadWriteIntent]
WITH (
    LOCATION = 'sqlserver://WINSQL2019AGL',
    CONNECTION_OPTIONS = 'ApplicationIntent=ReadWrite',
    CREDENTIAL = [SQLServerCredentials]
);
GO

Uvnitř databáze ve skupině dostupnosti vytvořte zobrazení pro vrácení sys.servers a název místní instance, která vám pomůže identifikovat repliku, která odpovídá na dotaz. Další informace naleznete v tématu sys.servers.

CREATE VIEW vw_sys_servers
AS
SELECT [name]
FROM sys.servers
WHERE server_id = 0;
GO

Pak ve zdrojové instanci vytvořte externí tabulku:

CREATE EXTERNAL TABLE vw_sys_servers_ro (name SYSNAME NOT NULL)
WITH (
    DATA_SOURCE = [DataSource_SQLInstanceListener_ReadOnlyIntent],
    LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO

CREATE EXTERNAL TABLE vw_sys_servers_rw (name SYSNAME NOT NULL)
WITH (
    DATA_SOURCE = [DataSource_SQLInstanceListener_ReadWriteIntent],
    LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO

SELECT [name]
FROM dbo.vw_sys_servers_ro;--should return secondary replica instance

SELECT [name]
FROM dbo.vw_sys_servers_rw;--should return primary replica instance
GO

Příklady: Hromadné operace

Důležité

Při konfiguraci externího / zdroje dat pro hromadné operace nepřidávejte LOCATIONkoncové parametry, název souboru ani parametry sdíleného přístupového podpisu na konci adresy URL.

H. Vytvoření externího zdroje dat pro hromadné operace načítání dat z Azure Storage

Platí pro: SQL Server 2017 (14.x) a SQL Server 2019 (15.x)

Pro hromadné operace pomocí funkce BULK INSERT nebo OPENROWSET použijte následující zdroj dat. Přihlašovací údaje musí být nastavené SHARED ACCESS SIGNATURE jako identita, nesmí mít v tokenu SAS počáteční ? oprávnění, musí mít alespoň oprávnění ke čtení souboru, který by se měl načíst (například srt=o&sp=r) a doba vypršení platnosti by měla být platná (všechna data jsou v čase UTC). Další informace o sdílených přístupových podpisech najdete v tématu Použití sdílených přístupových podpisů (SAS).

CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
    -- Remove ? from the beginning of the SAS token
    SECRET = '<azure_shared_access_signature>';

CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
    LOCATION = 'https://newinvoices.blob.core.windows.net/week3',
    CREDENTIAL = AccessAzureInvoices,
    TYPE = BLOB_STORAGE
);

Pokud se chcete podívat na tento příklad, podívejte se na příkaz BULK INSERT.

Já. Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Storage pomocí rozhraní abfs://

Platí pro: SQL Server 2019 (15.x) CU11 a novější

V tomto příkladu je externím zdrojem dat účet logsAzure Data Lake Storage Gen2, který používá ovladač systému souborů Azure Blob (ABFS). Kontejner úložiště se nazývá daily. Externí zdroj dat Azure Data Lake Storage Gen2 je určený jenom pro přenos dat, protože predikát push-down se nepodporuje.

Tento příklad ukazuje, jak vytvořit přihlašovací údaje s vymezeným oborem databáze pro ověřování k účtu Azure Data Lake Storage Gen2. Zadejte klíč účtu služby Azure Storage v tajném klíči přihlašovacích údajů databáze. V identitě přihlašovacích údajů s vymezeným oborem databáze můžete zadat libovolný řetězec, protože se nepoužívá při ověřování ve službě Azure Storage.

-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
    WITH IDENTITY = '<my_account>',
    SECRET = '<azure_storage_account_key>';

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
    LOCATION = 'abfss://daily@logs.dfs.core.windows.net/',
    CREDENTIAL = AzureStorageCredential,
    TYPE = HADOOP
);

J. Vytvoření externího zdroje dat pomocí obecného rozhraní ODBC do PostgreSQL

Stejně jako v předchozích příkladech nejprve vytvořte hlavní klíč databáze a přihlašovací údaje v oboru databáze. Přihlašovací údaje v oboru databáze se použijí pro externí zdroj dat. Tento příklad také předpokládá, že na serveru je nainstalovaný obecný zprostředkovatel dat ODBC pro PostgreSQL.

V tomto příkladu se obecný zprostředkovatel dat ODBC používá k připojení k databázovému serveru PostgreSQL ve stejné síti, kde plně kvalifikovaný název domény serveru PostgreSQL je 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

platí pro: SQL Server 2022 (16.x) a novější verze

Vytvoří externí zdroj dat pro dotazy PolyBase. Externí zdroje dat slouží k navázání připojení a podpoře těchto primárních případů použití:

  • Virtualizace dat a načítání dat pomocí PolyBase na SQL Serveru
  • Operace hromadného načítání s využitím BULK INSERT nebo OPENROWSET

Poznámka:

Tato syntaxe se liší v různých verzích SQL Serveru. K výběru vhodné verze použijte rozevírací seznam selektoru verzí. Tento obsah platí pro SQL Server 2022 (16.x) a novější verze.

Syntaxe pro SQL Server 2022

Syntaxe pro SQL Server 2022 a novější verze

CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
  ( [ LOCATION = '<prefix>://<path>[:<port>]' ]
    [ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]]
    [ [ , ] CREDENTIAL = <credential_name> ]
    [ [ , ] PUSHDOWN = { ON | OFF } ]
  )
[ ; ]

Argumenty

data_source_name

Určuje uživatelem definovaný název zdroje dat. Název musí být jedinečný v rámci databáze na SQL Serveru.

LOCATION = '<prefix>://<path[:p ort]>'

Poskytuje protokol připojení a cestu k externímu zdroji dat.

Externí zdroj dat Předpona umístění konektoru Cesta k lokaci Podporovaná umístění podle produktu nebo služby Autentizace
Účet úložiště Azure (V2) abs abs://<container_name>@<storage_account_name>.blob.core.windows.net/
nebo
abs://<storage_account_name>.blob.core.windows.net/<container_name>
Počínaje SQL Serverem 2022 (16.x)
Podporuje se hierarchický obor názvů.
Sdílený přístupový podpis (SAS)
Azure Data Lake Storage Gen2 adls adls://<container_name>@<storage_account_name>.dfs.core.windows.net/
nebo
adls://<storage_account_name>.dfs.core.windows.net/<container_name>
Počínaje SQL Serverem 2022 (16.x) Sdílený přístupový podpis (SAS)
SQL Server sqlserver <server_name>[\<instance_name>][:port] Počínaje SQL Serverem 2019 (15.x) Pouze ověřování SQL
Věštírna oracle <server_name>[:port] Počínaje SQL Serverem 2019 (15.x) Pouze základní ověřování
Teradata teradata <server_name>[:port] Počínaje SQL Serverem 2019 (15.x) Pouze základní ověřování
MongoDB nebo cosmos DB API pro MongoDB mongodb <server_name>[:port] Počínaje SQL Serverem 2019 (15.x) Pouze základní ověřování
Obecné ODBC odbc <server_name>[:port] Od SQL Serveru 2019 (15.x) – jenom Windows Pouze základní ověřování
Hromadné operace https <storage_account>.blob.core.windows.net/<container> Počínaje SQL Serverem 2017 (14.x) Sdílený přístupový podpis (SAS)
Úložiště objektů kompatibilní s S3 s3 - Kompatibilní s S3: s3://<server_name>:<port>/
– AWS S3: s3://<bucket_name>.S3.amazonaws.com[:port]/<folder>
nebo s3://s3.amazonaws.com[:port]/<bucket_name>/<folder>
Počínaje SQL Serverem 2022 (16.x) Základní nebo průchozí (STS) *

* Musí to být přihlašovací údaje s oborem databáze, kde identita je pevně zakódovaná IDENTITY = 'S3 Access Key' a argument SECRET je ve formátu = '<AccessKeyID>:<SecretKeyID>' nebo používá předávací autorizaci (STS). Další informace naleznete v tématu Konfigurace PolyBase pro přístup k externím datům v úložišti objektů kompatibilním s S3.

Cesta k umístění:

  • port = Port, na který externí zdroj dat naslouchá. Volitelné v mnoha případech v závislosti na konfiguraci sítě.
  • <container_name> = kontejner účtu úložiště, ve kterém jsou uložená data. Kořenové kontejnery jsou jen pro čtení, data se nedají zapsat zpět do kontejneru.
  • <storage_account> = název účtu úložiště prostředku Azure.
  • <server_name> = název hostitele.
  • <instance_name> = název pojmenované instance SQL Serveru. Používá se, pokud máte službu SQL Server Browser spuštěnou v cílové instanci.
  • <ip_address>:<port> = Pouze pro úložiště objektů kompatibilní s S3 (počínaje SQL Serverem 2022 (16.x)) je koncový bod a port použitý pro připojení k úložišti kompatibilnímu s S3.
  • <bucket_name> = Pouze pro úložiště objektů kompatibilní s S3 (počínaje SQL Serverem 2022 (16.x)), specifické pro platformu úložiště.
  • <region> = Pouze pro úložiště objektů kompatibilní s S3 (počínaje SQL Serverem 2022 (16.x)), specifické pro platformu úložiště.
  • <folder> = Část cesty k úložišti v rámci adresy URL úložiště.

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

  • Databázový stroj SQL Serveru při vytváření objektu neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.
  • Konektor můžete použít sqlserver k připojení SQL Serveru 2019 (15.x) k jinému SQL Serveru nebo k Azure SQL Database.
  • Driver={<Name of Driver>} Zadejte při připojování přes ODBC.
  • Možnost Hierarchický obor názvů pro účty Azure Storage (V2) používající předponu adls se podporuje prostřednictvím Azure Data Lake Storage Gen2 v SQL Serveru 2022 (16.x).
  • Podpora SQL Serveru pro externí zdroje dat HDFS Cloudera (CDP) a Hortonworks (HDP) se vyřazuje z provozu a nezahrnuje SQL Server 2022 (16.x). Argument TYPE v SQL Serveru 2022 (16.x) není nutné používat.
  • Další informace o úložišti objektů kompatibilních s S3 a PolyBase od SQL Serveru 2022 (16.x) najdete v tématu Konfigurace PolyBase pro přístup k externím datům v úložišti objektů kompatibilním s S3. Příklad dotazování souboru parquet v úložišti objektů kompatibilních s S3 najdete v tématu Virtualizace souboru parquet v úložišti objektů kompatibilním s S3 pomocí PolyBase.
  • Liší se od předchozích verzí, v SQL Serveru 2022 (16.x) se předpona použitá pro účet úložiště Azure (v2) změnila z wasb[s] na abs.
  • Rozdíl od předchozích verzí, v SQL Serveru 2022 (16.x), předpona použitá pro Azure Data Lake Storage Gen2 se změnila z abfs[s] na adls.
  • Příklad použití PolyBase k virtualizaci souboru CSV ve službě Azure Storage najdete v tématu Virtualizace souboru CSV pomocí PolyBase.
  • Příklad použití PolyBase k virtualizaci rozdílové tabulky v ADLS Gen2 naleznete v tématu Virtualize delta table with PolyBase.
  • SQL Server 2022 (16.x) plně podporuje dva formáty adres URL pro účet Azure Storage verze 2 (abs) i Azure Data Lake Gen2 (adls).
    • Cesta UMÍSTĚNÍ může používat formáty: <container>@<storage_account_name>.. (doporučeno) nebo <storage_account_name>../<container>. Například:
      • Účet služby Azure Storage v2: abs://<container>@<storage_account_name>.blob.core.windows.net (doporučeno) 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á ODBC připojení a také integrované ODBC konektory pro SQL Server, Oracle, Teradata, MongoDB a rozhraní API služby Azure Cosmos DB pro MongoDB.

Jedná se key_value_pair o klíčové slovo a hodnotu konkrétní možnosti připojení. Dostupná klíčová slova a hodnoty závisí na typu externího zdroje dat. Název ovladače se vyžaduje minimálně, ale existují i další možnosti, jako APP='<your_application_name>' jsou nebo ApplicationIntent= ReadOnly|ReadWrite které jsou také užitečné k nastavení a můžou vám pomoct s řešením potíží.

Možné páry klíč-hodnota jsou specifické pro ovladač. Další informace pro každého zprostředkovatele naleznete v tématu CREATE EXTERNAL DATA SOURCE (Transact-SQL) CONNECTION_OPTIONS.

Počínaje kumulativní aktualizací SQL Serveru 2022 (16.x) byla zavedena další klíčová slova pro podporu souborů Oracle TNS:

  • Klíčové slovo TNSNamesFile určuje cestu k souboru umístěné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 Serveru, Oracle, Teradata, MongoDB, rozhraní API služby Azure Cosmos DB pro MongoDB nebo ODBC na úrovni externího zdroje dat.

Povolení nebo zakázání nabízení na úrovni dotazu se dosahuje pomocí nápovědy EXTERNALPUSHDOWN.

CREDENTIAL = credential_name

Určuje přihlašovací údaje s oborem databáze pro ověřování v externím zdroji dat.

Další poznámky a pokyny při vytváření přihlašovacích údajů:

Sdílený přístupový podpis můžete vytvořit několika způsoby:

  • Token SAS můžete vytvořit tak, že přejdete na web Azure Portal -><Your_Storage_Account> –> Sdílený přístupový podpis –> Konfigurace oprávnění –> Vygenerování SAS a připojovacího řetězce. Další informace najdete v tématu Generování sdíleného přístupového podpisu.

  • Sas můžete vytvořit a nakonfigurovat pomocí Průzkumníka služby Azure Storage.

  • Token SAS můžete vytvořit programově prostřednictvím PowerShellu, Azure CLI, .NET a rozhraní REST API. Další informace najdete v tématu Udělení omezeného přístupu k prostředkům Azure Storage pomocí sdílených přístupových podpisů (SAS).

  • Token SAS by měl být nakonfigurovaný takto:

    • Když se vygeneruje token SAS, obsahuje na začátku tokenu otazník (?). Při konfiguraci tajného kódu vyloučí počáteční ? .
    • Použijte platnou dobu vypršení platnosti (všechna data jsou v čase UTC).
  • Udělte alespoň oprávnění ke čtení souboru, který by se měl načíst (například srt=o&sp=r). Pro různé případy použití je možné vytvořit více sdílených přístupových podpisů. Oprávnění by měla být udělena následujícím způsobem:

    Činnost Povolení
    Čtení dat ze souboru Čti
    Čtení dat z více souborů a podsložek Číst a seznamovat
    Použití možnosti Vytvořit externí tabulku jako výběr (CETAS) Čtení, vytvoření, výpis a zápis
  • Pro Azure Blob Storage a Azure Data Lake Gen2:

    • Povolené služby: Je nutné vybrat, aby se vygeneroval token SAS. Blob
  • Povolené 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 (Transact-SQL).

Povolení

Vyžaduje CONTROL oprávnění k databázi na SQL Serveru.

Uzamčení

Vezme sdílený zámek objektu EXTERNAL DATA SOURCE .

Bezpečnost

PolyBase podporuje ověřování na základě proxy serveru pro většinu externích zdrojů dat. Vytvořte přihlašovací údaje s vymezeným oborem databáze a vytvořte účet proxy serveru.

Upgrade na SQL Server 2022

Od verze SQL Server 2022 (16.x) se už nepodporují externí zdroje dat Hadoop. Je nutné ručně znovu vytvořit externí zdroje dat vytvořené TYPE = HADOOPpomocí a všechny externí tabulky, které používají tento externí zdroj dat.

Uživatelé budou také muset nakonfigurovat své externí zdroje dat tak, aby při připojování ke službě Azure Storage používali nové konektory.

Externí zdroj dat Od K
Azure Blob Storage (Úložiště Azure pro objekty typu blob) wasb[s] abs
ADLS Gen2 abfs[s] adls

Příklady

Důležité

Informace o instalaci a povolení PolyBase naleznete v tématu Instalace PolyBase ve Windows.

A. Vytvoření externího zdroje dat na SQL Serveru pro odkazování na Oracle

Pokud chcete vytvořit externí zdroj dat, který odkazuje na Oracle, ujistěte se, že máte přihlašovací údaje v oboru databáze. Volitelně můžete také povolit nebo zakázat nabízení výpočtů u tohoto zdroje dat.

-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
    WITH IDENTITY = 'oracle_username',
    SECRET = 'oracle_password';

CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH (
    LOCATION = 'oracle://145.145.145.145:1521',
    CREDENTIAL = OracleProxyAccount,
    PUSHDOWN = ON
);

Volitelně může externí zdroj dat oracle použít ověřování proxy serverem k zajištění podrobného řízení přístupu. Uživatele proxy serveru je možné nakonfigurovat tak, aby měl omezený přístup v porovnání s uživatelem, který se zosobní.

CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential]
    WITH IDENTITY = 'oracle_username',
    SECRET = 'oracle_password';

CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
WITH (
    LOCATION = 'oracle://145.145.145.145:1521',
    CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER',
    CREDENTIAL = [OracleProxyCredential]
);

Případně se můžete ověřit pomocí TNS.

Počínaje kumulativní aktualizací 2022 (16.x) SQL Server 2 CREATE EXTERNAL DATA SOURCE teď podporuje použití souborů TNS při připojování k Oracle.

Parametr CONNECTION_OPTIONS byl rozbalený a nyní se používá TNSNamesFile a ServerName jako proměnné slouží k procházení tnsnames.ora souboru a navázání připojení k serveru.

V následujícím příkladu bude sql Server za běhu hledat tnsnames.ora umístění souboru určeného TNSNamesFile a hledat hostitele a síťový port určený ServerName.

CREATE EXTERNAL DATA SOURCE [external_data_source_name]
WITH (
    LOCATION = N'oracle://XE',
    CREDENTIAL = [OracleCredentialTest],
    CONNECTION_OPTIONS = N'TNSNamesFile=C:\Temp\tnsnames.ora;ServerName=XE'
);

B. Vytvoření externího zdroje dat pro odkazování na pojmenovanou instanci SQL Serveru prostřednictvím připojení PolyBase

platí pro: SQL Server 2019 (15.x) a novější

Chcete-li vytvořit externí zdroj dat, který odkazuje na pojmenovanou instanci SQL Serveru, použijte CONNECTION_OPTIONS k určení názvu instance.

Nejprve vytvořte přihlašovací údaje s vymezeným oborem databáze a uložíte přihlašovací údaje pro ověřené přihlášení SQL. Konektor SQL ODBC pro PolyBase podporuje pouze základní ověřování. Před vytvořením přihlašovacích údajů s vymezeným oborem databáze musí mít databáze hlavní klíč pro ochranu přihlašovacích údajů. Další informace naleznete v tématu CREATE MASTER KEY (Transact-SQL). Následující ukázka vytvoří přihlašovací údaje s vymezeným oborem databáze a poskytne vlastní přihlašovací údaje a heslo.

CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
    WITH IDENTITY = 'username',
    SECRET = 'password';

V následujícím příkladu WINSQL2019 je název hostitele a SQL2019 je to název instance. 'Server=%s\SQL2019' je pár klíč-hodnota.

CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
    LOCATION = 'sqlserver://WINSQL2019',
    CONNECTION_OPTIONS = 'Server=%s\SQL2019',
    CREDENTIAL = SQLServerCredentials
);

Případně můžete použít port pro připojení k výchozí instanci SQL Serveru.

CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
    LOCATION = 'sqlserver://WINSQL2019:58137',
    CREDENTIAL = SQLServerCredentials
);

C. Vytvoření externího zdroje dat pro odkazování na čitelný sekundární repliku skupiny dostupnosti AlwaysOn

platí pro: SQL Server 2019 (15.x) a novější

Chcete-li vytvořit externí zdroj dat, který odkazuje na čitelný sekundární repliku SYSTÉMU SQL Server, použijte CONNECTION_OPTIONS k určení ApplicationIntent=ReadOnly. Kromě toho budete muset buď nastavit databázi dostupnosti jako Database={dbname} in CONNECTION_OPTIONS, nebo nastavit databázi dostupnosti jako výchozí databázi přihlášení použitého pro přihlašovací údaje v oboru databáze. Budete to muset provést u všech replik dostupnosti skupiny dostupnosti.

Nejprve vytvořte přihlašovací údaje s vymezeným oborem databáze a uložíte přihlašovací údaje pro ověřené přihlášení SQL. Konektor SQL ODBC pro PolyBase podporuje pouze základní ověřování. Před vytvořením přihlašovacích údajů s vymezeným oborem databáze musí mít databáze hlavní klíč pro ochranu přihlašovacích údajů. Další informace naleznete v tématu CREATE MASTER KEY (Transact-SQL). Následující ukázka vytvoří přihlašovací údaje s vymezeným oborem databáze a poskytne vlastní přihlašovací údaje a heslo.

CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
    WITH IDENTITY = 'username',
    SECRET = 'password';

Dále vytvořte nový externí zdroj dat.

Bez ohledu na Database=dbname to, jestli jste do databáze dostupnosti zahrnuli CONNECTION_OPTIONS nebo nastavili výchozí databázi pro přihlášení v přihlašovacích údajích s vymezeným oborem databáze, musíte v parametru LOCATION zadat název databáze prostřednictvím názvu třídílné části příkazu CREATE EXTERNAL TABLE. Příklad najdete v tématu VYTVOŘENÍ EXTERNÍ TABULKY.

V následujícím příkladu WINSQL2019AGL je název naslouchacího procesu skupiny dostupnosti a dbname je to název databáze, která má být cílem příkazu CREATE EXTERNAL TABLE.

CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
    LOCATION = 'sqlserver://WINSQL2019AGL',
    CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
    CREDENTIAL = SQLServerCredentials
);

Chování přesměrování skupiny dostupnosti můžete předvést zadáním ApplicationIntent a vytvořením externí tabulky v systémovém zobrazení sys.servers. V následujícím ukázkovém skriptu se vytvoří dva externí zdroje dat a pro každou z nich se vytvoří jedna externí tabulka. Pomocí zobrazení otestujte, který server reaguje na připojení. Podobné výsledky je možné dosáhnout také pomocí funkce směrování jen pro čtení. Další informace najdete v tématu Konfigurace směrování jen pro čtení pro skupinu dostupnosti AlwaysOn.

CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadOnlyIntent]
WITH (
    LOCATION = 'sqlserver://WINSQL2019AGL',
    CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
    CREDENTIAL = [SQLServerCredentials]
);
GO

CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadWriteIntent]
WITH (
    LOCATION = 'sqlserver://WINSQL2019AGL',
    CONNECTION_OPTIONS = 'ApplicationIntent=ReadWrite',
    CREDENTIAL = [SQLServerCredentials]
);
GO

Uvnitř databáze ve skupině dostupnosti vytvořte zobrazení pro vrácení sys.servers a název místní instance, která vám pomůže identifikovat repliku, která odpovídá na dotaz. Další informace naleznete v tématu sys.servers.

CREATE VIEW vw_sys_servers
AS
SELECT [name]
FROM sys.servers
WHERE server_id = 0;
GO

Pak ve zdrojové instanci vytvořte externí tabulku:

CREATE EXTERNAL TABLE vw_sys_servers_ro (name SYSNAME NOT NULL)
WITH (
    DATA_SOURCE = [DataSource_SQLInstanceListener_ReadOnlyIntent],
    LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO

CREATE EXTERNAL TABLE vw_sys_servers_rw (name SYSNAME NOT NULL)
WITH (
    DATA_SOURCE = [DataSource_SQLInstanceListener_ReadWriteIntent],
    LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO

SELECT [name]
FROM dbo.vw_sys_servers_ro;--should return secondary replica instance

SELECT [name]
FROM dbo.vw_sys_servers_rw;--should return primary replica instance
GO

D. Vytvoření externího zdroje dat pro dotazování souboru parquet v úložišti objektů kompatibilním s S3 prostřednictvím PolyBase

platí pro: SQL Server 2022 (16.x) a novější

Následující ukázkový skript vytvoří externí zdroj dat s3_ds ve zdrojové uživatelské databázi na SQL Serveru. Externí zdroj dat odkazuje na přihlašovací údaje s3_dc databáze s vymezeným oborem.

CREATE DATABASE SCOPED CREDENTIAL s3_dc
    WITH IDENTITY = 'S3 Access Key', -- for S3-compatible object storage the identity must always be S3 Access Key
    SECRET = '<access_key_id>:<secret_key_id>' -- provided by the S3-compatible object storage
GO

CREATE EXTERNAL DATA SOURCE s3_ds
WITH (
    LOCATION = 's3://<ip_address>:<port>/',
    CREDENTIAL = s3_dc
);
GO

Ověřte nový externí zdroj dat pomocí sys.external_data_sources.

SELECT * FROM sys.external_data_sources;

Následující příklad ukazuje použití T-SQL k dotazování souboru parquet uloženého v úložišti objektů kompatibilním s S3 prostřednictvím dotazu OPENROWSET. Další informace naleznete v tématu Virtualize parquet file in a S3-compatible object storage with PolyBase.

SELECT *
FROM OPENROWSET (
    BULK '/<bucket>/<parquet_folder>',
    FORMAT = 'PARQUET',
    DATA_SOURCE = 's3_ds'
) AS [cc];

E. Vytvoření externího zdroje dat pomocí obecného rozhraní ODBC do PostgreSQL

Stejně jako v předchozích příkladech nejprve vytvořte hlavní klíč databáze a přihlašovací údaje v oboru databáze. Přihlašovací údaje v oboru databáze se použijí pro externí zdroj dat. Tento příklad také předpokládá, že na serveru je nainstalovaný obecný zprostředkovatel dat ODBC pro PostgreSQL.

V tomto příkladu se obecný zprostředkovatel dat ODBC používá k připojení k databázovému serveru PostgreSQL ve stejné síti, kde plně kvalifikovaný název domény serveru PostgreSQL je 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 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 web Azure Portal 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 ve službě Azure Blob Storage pomocí rozhraní abs://

platí pro: SQL Server 2022 (16.x) a novější

Počínaje SQL Serverem 2022 (16.x) použijte novou předponu abs pro účet služby Azure Storage v2. Předpona abs podporuje ověřování pomocí SHARED ACCESS SIGNATURE. Předpona abs nahrazuje wasb, použitá v předchozích verzích. HADOOP se už nepodporuje, už není potřeba používat TYPE = BLOB_STORAGE.

Klíč účtu úložiště Azure už není potřeba. Místo toho použijte token SAS, jak je vidět v následujícím příkladu:

-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
GO

CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredentialv2
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE', -- to use SAS the identity must be fixed as-is
    SECRET = '<Blob_SAS_Token>';
GO

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
    LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
    CREDENTIAL = AzureStorageCredentialv2
);

Podrobnější příklad přístupu k souborům CSV uloženým ve službě Azure Blob Storage najdete v tématu Virtualizace souboru CSV pomocí PolyBase.

G. Vytvoření externího zdroje dat pro přístup k datům v Azure Data Lake Gen2

Platí pro: SQL Server 2022 (16.x) a novější verze

Počínaje SQL Serverem 2022 (16.x) použijte novou předponu adls pro Azure Data Lake Gen2 a nahraďte abfs ji v předchozích verzích. Předpona adls také podporuje token SAS jako metodu ověřování, jak je znázorněno v tomto příkladu:

--Create a database scoped credential using SAS Token
CREATE DATABASE SCOPED CREDENTIAL datalakegen2
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
    SECRET = '<DataLakeGen2_SAS_Token>';
GO

CREATE EXTERNAL DATA SOURCE data_lake_gen2_dfs
WITH (
    LOCATION = 'adls://<container>@<storage_account>.dfs.core.windows.net',
    CREDENTIAL = datalakegen2
);

Podrobnější příklad přístupu k rozdílovým souborům uloženým v Azure Data Lake Gen2 najdete v tématu Virtualizace tabulky Delta pomocí PolyBase.

Příklady: Hromadné operace

Důležité

Při konfiguraci externího / zdroje dat pro hromadné operace nepřidávejte LOCATIONkoncové parametry, název souboru ani parametry sdíleného přístupového podpisu na konci adresy URL.

H. Vytvoření externího zdroje dat pro hromadné operace načítání dat z Azure Storage

platí pro: SQL Server 2022 (16.x) a novější verze.

Pro hromadné operace pomocí funkce BULK INSERT (Transact-SQL) nebo OPENROWSET (Transact-SQL) použijte následující zdroj dat. Přihlašovací údaje musí být nastavené SHARED ACCESS SIGNATURE jako identita, nesmí mít v tokenu SAS počáteční ? oprávnění, musí mít alespoň oprávnění ke čtení souboru, který by se měl načíst (například srt=o&sp=r) a doba vypršení platnosti by měla být platná (všechna data jsou v čase UTC). Další informace o sdílených přístupových podpisech najdete v tématu Použití sdílených přístupových podpisů (SAS).

CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
    -- Remove ? from the beginning of the SAS token
    SECRET = '<azure_shared_access_signature>';

CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
    LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
    CREDENTIAL = AccessAzureInvoices,
);

Přehled: SQL Server 2025

Platí pro: SQL Server 2025 (17.x) Preview a novější verze.

Vytvoří externí zdroj dat pro dotazy PolyBase. Externí zdroje dat slouží k navázání připojení a podpoře těchto primárních případů použití:

Poznámka:

Tato syntaxe se liší v různých verzích SQL Serveru. K výběru vhodné verze použijte rozevírací seznam selektoru verzí. Tento obsah platí pro SQL Server 2025 (17.x) Preview a novější verze.

Syntaxe pro SQL Server 2025 a novější verze

Další informace o konvencích syntaxe najdete v tématu Transact-SQL konvence syntaxe.

CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
  ( [ LOCATION = '<prefix>://<path>[:<port>]' ]
    [ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]]
    [ [ , ] CREDENTIAL = <credential_name> ]
    [ [ , ] PUSHDOWN = { ON | OFF } ]
  )
[ ; ]

Argumenty

data_source_name

Určuje uživatelem definovaný název zdroje dat. Název musí být jedinečný v rámci databáze na SQL Serveru.

LOCATION = '<prefix>://<path[:p ort]>'

Poskytuje protokol připojení a cestu k externímu zdroji dat.

Externí zdroj dat Předpona umístění konektoru Cesta k lokaci Podporovaná umístění podle produktu nebo služby Autentizace
Účet úložiště Azure (V2) abs abs://<container_name>@<storage_account_name>.blob.core.windows.net/
nebo
abs://<storage_account_name>.blob.core.windows.net/<container_name>
Počínaje SQL Serverem 2022 (16.x)
Podporuje se hierarchický obor názvů.
Sdílený přístupový podpis (SAS)
Azure Data Lake Storage Gen2 adls adls://<container_name>@<storage_account_name>.dfs.core.windows.net/
nebo
adls://<storage_account_name>.dfs.core.windows.net/<container_name>
Počínaje SQL Serverem 2022 (16.x) Sdílený přístupový podpis (SAS)
SQL Server sqlserver <server_name>[\<instance_name>][:port] Počínaje SQL Serverem 2019 (15.x) Pouze ověřování SQL
Věštírna oracle <server_name>[:port] Počínaje SQL Serverem 2019 (15.x) Pouze základní ověřování
Teradata teradata <server_name>[:port] Počínaje SQL Serverem 2019 (15.x) Pouze základní ověřování
MongoDB nebo cosmos DB API pro MongoDB mongodb <server_name>[:port] Počínaje SQL Serverem 2019 (15.x) Pouze základní ověřování
Obecné ODBC odbc <server_name>[:port] Od SQL Serveru 2019 (15.x) – jenom Windows Pouze základní ověřování
Hromadné operace https <storage_account>.blob.core.windows.net/<container> Počínaje SQL Serverem 2017 (14.x) Sdílený přístupový podpis (SAS)
Úložiště objektů kompatibilní s S3 s3 - Kompatibilní s S3: s3://<server_name>:<port>/
- AWS S3: s3://<bucket_name>.S3.amazonaws.com[:port]/<folder>
nebo s3://s3.amazonaws.com[:port]/<bucket_name>/<folder>
Počínaje SQL Serverem 2022 (16.x) Základní nebo průchozí (STS) 1

1 Musí být přihlašovací údaje s oborem databáze, kde IDENTITY je pevně zakódovaný IDENTITY = 'S3 Access Key' a SECRET argument je ve formátu = '<AccessKeyID>:<SecretKeyID>' nebo použít předávací autorizaci (STS). Další informace naleznete v tématu Konfigurace PolyBase pro přístup k externím datům v úložišti objektů kompatibilním s S3.

Cesta k umístění:

Cesta k lokaci Popis
port Port, na který externí zdroj dat naslouchá. Volitelné v mnoha případech v závislosti na konfiguraci sítě.
<container_name> Kontejner účtu úložiště, ve kterém jsou uložená data. Kořenové kontejnery jsou jen pro čtení, data se nedají zapsat zpět do kontejneru.
<storage_account> Název účtu úložiště prostředku Azure.
<server_name> Název hostitele.
<instance_name> Název pojmenované instance SYSTÉMU SQL Server. Používá se, pokud máte službu SQL Server Browser spuštěnou v cílové instanci.
<ip_address>:<port> 1 Pouze pro úložiště objektů kompatibilní s S3 se koncový bod a port použitý pro připojení k úložišti kompatibilnímu s S3.
<bucket_name> 1 Pouze pro úložiště objektů kompatibilní s S3, specifické pro platformu úložiště.
<region> 1 Pouze pro úložiště objektů kompatibilní s S3, specifické pro platformu úložiště.
<folder> Část cesty k úložišti v adrese URL úložiště.

1 SQL Server 2022 (16.x) a novější verze.

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

  • Databázový stroj SQL Serveru při vytváření objektu neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.

  • Konektor můžete použít sqlserver k připojení SQL Serveru 2019 (15.x) k jinému SQL Serveru nebo k Azure SQL Database.

  • Driver={<Name of Driver>} Zadejte při připojování přes ODBC.

  • Možnost Hierarchický obor názvů pro účty Azure Storage (V2) používající předponu adls se podporuje prostřednictvím Azure Data Lake Storage Gen2 v SQL Serveru 2022 (16.x) a novějších verzích.

  • Podpora SQL Serveru pro externí zdroje dat HDFS Cloudera (CDP) a Hortonworks (HDP) se vyřazuje z provozu a není součástí SQL Serveru 2022 (16.x) a novějších verzí. Argument v SQL Serveru 2025 (17.x) Preview nemusíte používat TYPE .

  • Další informace o úložišti objektů kompatibilních s S3 a PolyBase v SQL Serveru 2022 (16.x) a novějších verzích najdete v tématu Konfigurace PolyBase pro přístup k externím datům v úložišti objektů kompatibilním s S3. Příklad dotazování souboru parquet v úložišti objektů kompatibilních s S3 najdete v tématu Virtualizace souboru parquet v úložišti objektů kompatibilním s S3 pomocí PolyBase.

V SQL Serveru 2022 (16.x) a novějších verzích:

  • předpona použitá pro účet úložiště Azure (v2) se změnila z wasb[s] 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 ve službě Azure Storage najdete v tématu Virtualizace souboru CSV pomocí PolyBase.

  • Příklad použití PolyBase k virtualizaci rozdílové tabulky v ADLS Gen2 naleznete v tématu Virtualize delta table with PolyBase.

  • SQL Server 2022 (16.x) a novější verze plně podporují dva formáty adres URL pro účet Azure Storage verze 2 (abs) i Azure Data Lake Gen2 (adls).

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

      • Účet služby Azure Storage v2: abs://<container>@<storage_account_name>.blob.core.windows.net (doporučeno) 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

platí pro: SQL Server 2019 (15.x) a novější verze.

Určuje další možnosti při připojování ODBC k externímu zdroji dat. Pokud chcete použít více možností připojení, oddělte je středníkem.

Platí pro obecná ODBC připojení a také integrované ODBC konektory pro SQL Server, Oracle, Teradata, MongoDB a rozhraní API služby Azure Cosmos DB pro MongoDB.

Jedná se key_value_pair o klíčové slovo a hodnotu konkrétní možnosti připojení. Dostupná klíčová slova a hodnoty závisí na typu externího zdroje dat. Název ovladače se vyžaduje minimálně, ale existují i další možnosti, jako APP='<your_application_name>' jsou nebo ApplicationIntent= ReadOnly|ReadWrite které jsou také užitečné k nastavení a můžou vám pomoct s řešením potíží.

Možné páry klíč-hodnota jsou specifické pro ovladač. Další informace pro každého zprostředkovatele naleznete v tématu CREATE EXTERNAL DATA SOURCE (Transact-SQL) CONNECTION_OPTIONS.

Počínaje kumulativní aktualizací SQL Serveru 2022 (16.x) byla zavedena další klíčová slova pro podporu souborů Oracle TNS:

  • Klíčové slovo TNSNamesFile určuje cestu k souboru umístěné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 šifrování v SQL Serveru 2025 (17.x) Preview

Počínaje verzí SQL Server 2025 (17.x) Preview je při použití sqlserver jako zdroje dat výchozí ovladač ovladače Microsoft ODBC verze 18 pro SQL Server. Tato možnost je povinná (, nebo Encryption) a Yes je k dispozici (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 Encryption možnostech, serverových certifikátech a TrustServerCertificatenaleznete v tématu Funkce ovladače Microsoft ODBC pro SQL Server ve Windows.

Vždy byste měli používat nejnovější ovladač. SQL Server 2025 (17.x) Preview však také podporuje ovladač Microsoft ODBC verze 17 pro SQL Server kvůli zpětné kompatibilitě. Další informace o tom, jak změnit verzi ovladače používané PolyBase, naleznete v tématu Jak změnit verzi ovladače SYSTÉMU SQL Server pro PolyBase.

PUSHDOWN = ZAPNUTO | PRYČ

platí pro: SQL Server 2019 (15.x) a novější verze.

Uvádí, zda je možné výpočty odeslat do externího zdroje dat. Ve výchozím nastavení je povoleno.

PUSHDOWN se podporuje při připojování k SQL Serveru, Oracle, Teradata, MongoDB, rozhraní API služby Azure Cosmos DB pro MongoDB nebo ODBC na úrovni externího zdroje dat.

Povolení nebo zakázání nabízení na úrovni dotazu se dosahuje pomocí nápovědy.

CREDENTIAL = credential_name

Určuje přihlašovací údaje s oborem databáze pro ověřování v externím zdroji dat.

Další poznámky a pokyny při vytváření přihlašovacích údajů:

Sdílený přístupový podpis můžete vytvořit několika způsoby:

  • Token SAS můžete vytvořit tak, že přejdete na web Azure Portal><Your_Storage_Account>>sdílený přístupový podpis>: Nakonfigurujte oprávnění>Generovat SAS a připojovací řetězec. Další informace najdete v tématu Generování sdíleného přístupového podpisu.

  • Sas můžete vytvořit a nakonfigurovat pomocí Průzkumníka služby Azure Storage.

  • Token SAS můžete vytvořit programově prostřednictvím PowerShellu, Azure CLI, .NET a rozhraní REST API. Další informace najdete v tématu Udělení omezeného přístupu k prostředkům Azure Storage pomocí sdílených přístupových podpisů (SAS).

  • Token SAS by měl být nakonfigurovaný takto:

    • Když se vygeneruje token SAS, obsahuje na začátku tokenu otazník (?). Vyloučí počáteční ? při konfiguraci 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 Gen2:

    • 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 CONTROL oprávnění k databázi na SQL Serveru.

Uzamčení

Vezme sdílený zámek objektu EXTERNAL DATA SOURCE .

Bezpečnost

PolyBase podporuje ověřování na základě proxy serveru pro většinu externích zdrojů dat. Vytvořte přihlašovací údaje s vymezeným oborem databáze a vytvořte účet proxy serveru.

Upgrade na SQL Server 2025

V SYSTÉMU SQL Server 2022 (16.x) a novějších verzích nejsou externí zdroje dat Hadoop podporovány. Je nutné ručně znovu vytvořit externí zdroje dat vytvořené TYPE = HADOOPpomocí a všechny externí tabulky, které používají tento externí zdroj dat.

Uživatelé budou také muset nakonfigurovat své externí zdroje dat tak, aby při připojování ke službě Azure Storage používali nové konektory.

Externí zdroj dat Od K
Azure Blob Storage (Úložiště Azure pro objekty typu blob) wasb[s] břišní svaly
ADLS Gen2 abfs[s] adls

Příklady

Důležité

Informace o tom, jak nainstalovat a povolit PolyBase, naleznete v tématu Instalace PolyBase ve Windows.

A. Vytvoření externího zdroje dat na SQL Serveru pro odkazování na Oracle

Pokud chcete vytvořit externí zdroj dat, který odkazuje na Oracle, ujistěte se, že máte přihlašovací údaje v oboru databáze. Volitelně můžete také povolit nebo zakázat nabízení výpočtů u tohoto zdroje dat.

-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD= '<password>';

-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
    WITH IDENTITY = 'oracle_username', SECRET = 'oracle_password';

CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH (
    LOCATION = 'oracle://145.145.145.145:1521',
    PUSHDOWN = ON,
    CREDENTIAL = OracleProxyAccount
);

Volitelně může externí zdroj dat oracle použít ověřování proxy serverem k zajištění podrobného řízení přístupu. Uživatele proxy serveru je možné nakonfigurovat tak, aby měl omezený přístup v porovnání s uživatelem, který se zosobní.

CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential]
    WITH IDENTITY = 'oracle_username', SECRET = 'oracle_password';

CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
WITH (
    LOCATION = 'oracle://145.145.145.145:1521',
    CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER',
    CREDENTIAL = [OracleProxyCredential]
);

Případně se můžete ověřit pomocí TNS.

Počínaje kumulativní aktualizací 2022 (16.x) SQL Server 2 CREATE EXTERNAL DATA SOURCE teď podporuje použití souborů TNS při připojování k Oracle.

Parametr CONNECTION_OPTIONS byl rozbalený a nyní se používá TNSNamesFile a ServerName jako proměnné slouží k procházení tnsnames.ora souboru a navázání připojení k serveru.

V následujícím příkladu bude sql Server za běhu hledat tnsnames.ora umístění souboru určeného TNSNamesFile a hledat hostitele a síťový port určený ServerName.

CREATE EXTERNAL DATA SOURCE [external_data_source_name]
WITH (
    LOCATION = N'oracle://XE',
    CREDENTIAL = [OracleCredentialTest],
    CONNECTION_OPTIONS = N'TNSNamesFile=C:\Temp\tnsnames.ora;ServerName=XE'
);

B. Vytvoření externího zdroje dat pro odkazování na pojmenovanou instanci SQL Serveru prostřednictvím připojení PolyBase

Platí pro: SQL Server 2019 (15.x) a novější verze

Chcete-li vytvořit externí zdroj dat, který odkazuje na pojmenovanou instanci SQL Serveru, použijte CONNECTION_OPTIONS k určení názvu instance.

Nejprve vytvořte přihlašovací údaje s vymezeným oborem databáze a uložíte přihlašovací údaje pro ověřené přihlášení SQL. Konektor SQL ODBC pro PolyBase podporuje pouze základní ověřování. Před vytvořením přihlašovacích údajů s vymezeným oborem databáze musí mít databáze hlavní klíč pro ochranu přihlašovacích údajů. Další informace naleznete v tématu CREATE MASTER KEY. Následující ukázka vytvoří přihlašovací údaje s vymezeným oborem databáze a poskytne vlastní přihlašovací údaje a heslo.

CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
    WITH IDENTITY = 'username', SECRET = 'password';

V následujícím příkladu WINSQL2019 je název hostitele a SQL2019 je to název instance. 'Server=%s\SQL2019' je pár klíč-hodnota.

CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
    LOCATION = 'sqlserver://WINSQL2019',
    CONNECTION_OPTIONS = 'Server=%s\SQL2019',
    CREDENTIAL = SQLServerCredentials
);

Případně můžete použít port pro připojení k výchozí instanci SQL Serveru.

CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
    LOCATION = 'sqlserver://WINSQL2019:58137',
    CREDENTIAL = SQLServerCredentials
);

C. Vytvoření externího zdroje dat pro odkazování na čitelný sekundární repliku skupiny dostupnosti AlwaysOn

Platí pro: SQL Server 2019 (15.x) a novější verze

Chcete-li vytvořit externí zdroj dat, který odkazuje na čitelný sekundární repliku SYSTÉMU SQL Server, použijte CONNECTION_OPTIONS k určení ApplicationIntent=ReadOnly. Kromě toho budete muset buď nastavit databázi dostupnosti jako Database={dbname} in CONNECTION_OPTIONS, nebo nastavit databázi dostupnosti jako výchozí databázi přihlášení použitého pro přihlašovací údaje v oboru databáze. Budete to muset udělat u všech replik dostupnosti skupiny dostupnosti.

Nejprve vytvořte přihlašovací údaje s vymezeným oborem databáze a uložíte přihlašovací údaje pro ověřené přihlášení SQL. Konektor SQL ODBC pro PolyBase podporuje pouze základní ověřování. Před vytvořením přihlašovacích údajů s vymezeným oborem databáze musí mít databáze hlavní klíč pro ochranu přihlašovacích údajů. Další informace naleznete v tématu CREATE MASTER KEY. Následující ukázka vytvoří přihlašovací údaje s vymezeným oborem databáze a poskytne vlastní přihlašovací údaje a heslo.

CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
    WITH IDENTITY = 'username', SECRET = 'password';

Dále vytvořte nový externí zdroj dat.

Bez ohledu na Database=dbname to, jestli jste do databáze dostupnosti zahrnuli CONNECTION_OPTIONS nebo nastavili výchozí databázi pro přihlášení v přihlašovacích údajích s vymezeným oborem databáze, musíte v parametru LOCATION zadat název databáze prostřednictvím názvu třídílné části příkazu CREATE EXTERNAL TABLE. Příklad najdete v tématu VYTVOŘENÍ EXTERNÍ TABULKY.

V následujícím příkladu WINSQL2019AGL je název naslouchacího procesu skupiny dostupnosti a dbname je to název databáze, která má být cílem příkazu CREATE EXTERNAL TABLE.

CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
    LOCATION = 'sqlserver://WINSQL2019AGL',
    CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
    CREDENTIAL = SQLServerCredentials
);

Chování přesměrování skupiny dostupnosti můžete předvést zadáním ApplicationIntent a vytvořením externí tabulky v systémovém zobrazení sys.servers. V následujícím ukázkovém skriptu se vytvoří dva externí zdroje dat a pro každou z nich se vytvoří jedna externí tabulka. Pomocí zobrazení otestujte, který server reaguje na připojení. Podobné výsledky je možné dosáhnout také pomocí funkce směrování jen pro čtení. Další informace najdete v tématu Konfigurace směrování jen pro čtení pro skupinu dostupnosti AlwaysOn.

CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadOnlyIntent]
WITH (
    LOCATION = 'sqlserver://WINSQL2019AGL',
    CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
    CREDENTIAL = [SQLServerCredentials]
);
GO

CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadWriteIntent]
WITH (
    LOCATION = 'sqlserver://WINSQL2019AGL',
    CONNECTION_OPTIONS = 'ApplicationIntent=ReadWrite',
    CREDENTIAL = [SQLServerCredentials]
);
GO

Uvnitř databáze ve skupině dostupnosti vytvořte zobrazení pro vrácení sys.servers a název místní instance, která vám pomůže identifikovat repliku, která odpovídá na dotaz. Další informace naleznete v tématu sys.servers.

CREATE VIEW vw_sys_servers AS
    SELECT [name]
    FROM sys.servers
    WHERE server_id = 0;
GO

Pak ve zdrojové instanci vytvořte externí tabulku:

CREATE EXTERNAL TABLE vw_sys_servers_ro
(
    name SYSNAME NOT NULL
)
WITH (
    DATA_SOURCE = [DataSource_SQLInstanceListener_ReadOnlyIntent],
    LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO

CREATE EXTERNAL TABLE vw_sys_servers_rw
(
    name SYSNAME NOT NULL
)
WITH (
    DATA_SOURCE = [DataSource_SQLInstanceListener_ReadWriteIntent],
    LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO

SELECT [name]
FROM dbo.vw_sys_servers_ro;
--should return secondary replica instance

SELECT [name]
FROM dbo.vw_sys_servers_rw;
--should return primary replica instance
GO

D. Vytvoření externího zdroje dat pro dotazování souboru parquet v úložišti objektů kompatibilním s S3 prostřednictvím PolyBase

platí pro: SQL Server 2022 (16.x) a novější verze.

Následující ukázkový skript vytvoří externí zdroj dat s3_ds ve zdrojové uživatelské databázi na SQL Serveru. Externí zdroj dat odkazuje na přihlašovací údaje s3_dc databáze s vymezeným oborem.

CREATE DATABASE SCOPED CREDENTIAL s3_dc
    WITH IDENTITY = 'S3 Access Key', -- for S3-compatible object storage the identity must always be S3 Access Key
    SECRET = '<access_key_id>:<secret_key_id>'; -- provided by the S3-compatible object storage
GO

CREATE EXTERNAL DATA SOURCE s3_ds
WITH (
    LOCATION = 's3://<ip_address>:<port>/',
    CREDENTIAL = s3_dc
);
GO

Ověřte nový externí zdroj dat pomocí sys.external_data_sources.

SELECT *
FROM sys.external_data_sources;

Následující příklad ukazuje použití T-SQL k dotazování souboru parquet uloženého v úložišti objektů kompatibilním s S3 prostřednictvím dotazu OPENROWSET. Další informace naleznete v tématu Virtualize parquet file in a S3-compatible object storage with PolyBase.

SELECT * FROM OPENROWSET (
    BULK '/<bucket>/<parquet_folder>',
    FORMAT = 'PARQUET',
    DATA_SOURCE = 's3_ds'
) AS [cc];

E. Vytvoření externího zdroje dat pomocí obecného rozhraní ODBC do PostgreSQL

Stejně jako v předchozích příkladech nejprve vytvořte hlavní klíč databáze a přihlašovací údaje v oboru databáze. Přihlašovací údaje v oboru databáze se použijí pro externí zdroj dat. Tento příklad také předpokládá, že na serveru je nainstalovaný obecný zprostředkovatel dat ODBC pro PostgreSQL.

V tomto příkladu se obecný zprostředkovatel dat ODBC používá k připojení k databázovému serveru PostgreSQL ve stejné síti, kde plně kvalifikovaný název domény serveru PostgreSQL je 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 web Azure Portal 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 tabulku bellow:
Činnost Povolení
Čtení dat ze souboru Čti
Čtení dat z více souborů a podsložek Číst a seznamovat
Použití možnosti Vytvořit externí tabulku jako výběr (CETAS) Čtení, vytváření a zápis
  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 ve službě Azure Blob Storage pomocí rozhraní abs://

platí pro: SQL Server 2022 (16.x) a novější verze.

Použijte novou předponu abs pro účet služby Azure Storage v2. Předpona abs podporuje ověřování pomocí SHARED ACCESS SIGNATURE. Předpona abs nahrazuje wasb, použitá v předchozích verzích. HADOOP se už nepodporuje, už není potřeba používat TYPE = BLOB_STORAGE.

Klíč účtu úložiště Azure už není potřeba. Místo toho použijte token SAS, jak je vidět v následujícím příkladu:

-- Create a database master key if one does not already exist, using your own password.

-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD= '<password>';
GO

CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredentialv2
WITH
    IDENTITY = 'SHARED ACCESS SIGNATURE', -- to use SAS the identity must be fixed as-is
    SECRET = '<Blob_SAS_Token>';
GO

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
    LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
    CREDENTIAL = AzureStorageCredentialv2
);

Podrobnější příklad přístupu k souborům CSV uloženým ve službě Azure Blob Storage najdete v tématu Virtualizace souboru CSV pomocí PolyBase.

G. Vytvoření externího zdroje dat pro přístup k datům v Azure Data Lake Gen2

platí pro: SQL Server 2022 (16.x) a novější verze.

Použijte novou předponu adls pro Azure Data Lake Gen2 a nahraďte abfs ji v předchozích verzích. Předpona adls také podporuje token SAS jako metodu ověřování, jak je znázorněno v tomto příkladu:

--Create a database scoped credential using SAS Token
CREATE DATABASE SCOPED CREDENTIAL datalakegen2
    WITH
    IDENTITY = 'SHARED ACCESS SIGNATURE',
    SECRET = '<DataLakeGen2_SAS_Token>';
GO

CREATE EXTERNAL DATA SOURCE data_lake_gen2_dfs
WITH (
    LOCATION = 'adls://<container>@<storage_account>.dfs.core.windows.net',
    CREDENTIAL = datalakegen2
);

Podrobnější příklad přístupu k rozdílovým souborům uloženým v Azure Data Lake Gen2 najdete v tématu Virtualizace tabulky Delta pomocí PolyBase.

Příklady: Hromadné operace

Důležité

Při konfiguraci externího / zdroje dat pro hromadné operace nepřidávejte koncové 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

platí pro: SQL Server 2022 (16.x) a novější verze.

Pro hromadné operace pomocí funkce BULK INSERT nebo OPENROWSET použijte následující zdroj dat. Přihlašovací údaje musí být nastavené SHARED ACCESS SIGNATURE jako identita, nesmí mít v tokenu SAS počáteční ? oprávnění, musí mít alespoň oprávnění ke čtení souboru, který by se měl načíst (například srt=o&sp=r) a doba vypršení platnosti by měla být platná (všechna data jsou v čase UTC). Další informace o sdílených přístupových podpisech najdete v tématu Použití sdílených přístupových podpisů (SAS).

CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
    -- Remove ? from the beginning of the SAS token
    SECRET = '<azure_shared_access_signature>';

CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
    LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
    CREDENTIAL = AccessAzureInvoices,
);

Já. Vytvoření externího zdroje dat pomocí TDS 8.0 pro připojení k jinému SQL Serveru

Platí pro: SQL Server 2025 (17.x) Preview a novější verze.

Pokud pro SQL Server používáte nejnovější ovladač Microsoft ODBC 18, musíte použít Encryption možnost v části CONNECTION_OPTIONSa TrustServerCertificate je podporována. Pokud Encryption není zadáno, výchozí chování je Encrypt=Yes;TrustServerCertificate=No;a vyžadujete certifikát serveru.

V tomto příkladu se používá ověřování SQL. K ochraně přihlašovacích údajů potřebujete hlavní klíč databáze (DMK). Další informace naleznete v tématu CREATE MASTER KEY. Následující ukázka vytvoří přihlašovací údaje s vymezeným oborem databáze s vlastním přihlášením a heslem.

CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH
    IDENTITY = '<username>', 
    SECRET = '<password>';

Název cílového serveru je WINSQL2022, port 58137a je to výchozí instance. Zadáním , Encryption=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 = 'Encryption=Strict;HostnameInCertificate=WINSQL2022;'
    CREDENTIAL = SQLServerCredentials
);

J. Vytvoření externího zdroje dat pomocí možnosti šifrování a TrustServerCertificate

Tady jsou dva ukázky kódu, které následují v předchozím příkladu. První fragment kódu má Encryption a TrustServerCertificate nastavil.

CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
    LOCATION = 'sqlserver://WINSQL2022:58137',
    CONNECTION_OPTIONS = 'Encryption=Yes;HostnameInCertificate=WINSQL2022;TrustServerCertificate=Yes;'
    CREDENTIAL = SQLServerCredentials
);

Následující fragment kódu není Encryption povolený.

CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
    LOCATION = 'sqlserver://WINSQL2022:58137',
    CONNECTION_OPTIONS = 'Encryption=no;'
    CREDENTIAL = SQLServerCredentials
);

* SQL Database *  

 

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 pouze v Azure SQL Edge. EdgeHub je vždy místní pro instanci Azure SQL Edge. Proto není nutné zadávat cestu nebo hodnotu portu.
Kafka kafka kafka://<kafka_bootstrap_server_name_ip>:<port_number> K dispozici pouze v Azure SQL Edge.
Účet služby Azure Storage (v2) abs abs://<container_name>@<storage_account_name>.blob.core.windows.net/

nebo

abs://<storage_account_name>.blob.core.windows.net/ <container_name>
Azure Data Lake Storage Gen2 adls adls://<container_name>@<storage_account_name>.dfs.core.windows.net/

nebo

adls://<storage_account_name>.dfs.core.windows.net/<container_name>

Cesta k umístění:

  • <shard_map_server_name> = Název logického serveru v Azure, který hostuje správce map horizontálních oddílů. 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í:

  • Databázový stroj při vytváření objektu neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.

CREDENTIAL = credential_name

Určuje přihlašovací údaje s oborem databáze pro ověřování v externím zdroji dat.

Další poznámky a pokyny při vytváření přihlašovacích údajů:

  • Pokud chcete načíst data ze služby Azure Storage do služby Azure SQL Database, použijte sdílený přístupový podpis (token SAS).
  • CREDENTIAL vyžaduje se pouze v případě, že jsou data zabezpečená. CREDENTIAL nevyžaduje se u datových sad, které umožňují anonymní přístup.
  • Pokud se přihlašovací TYPE = BLOB_STORAGEúdaje musí vytvořit jako SHARED ACCESS SIGNATURE identita.
  • Při připojování ke službě Azure Storage přes konektor WASB[s] je potřeba provést ověřování pomocí klíče účtu úložiště, nikoli pomocí sdíleného přístupového podpisu (SAS).
  • Pokud TYPE = HADOOP je nutné vytvořit přihlašovací údaje pomocí klíče účtu úložiště jako SECRETklíče .
  • TYPE = BLOB_STORAGE je povolena pouze pro hromadné operace; Nelze vytvořit externí tabulky pro externí zdroj dat s 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 web Azure Portal -><Your_Storage_Account> –> Sdílený přístupový podpis –> Konfigurace oprávnění –> Vygenerování SAS a připojovacího řetězce. Další informace najdete v tématu Generování sdíleného přístupového podpisu.

  • Sas můžete vytvořit a nakonfigurovat pomocí Průzkumníka služby Azure Storage.

  • Token SAS můžete vytvořit programově prostřednictvím PowerShellu, Azure CLI, .NET a rozhraní REST API. Další informace najdete v tématu Udělení omezeného přístupu k prostředkům Azure Storage pomocí sdílených přístupových podpisů (SAS).

  • Token SAS by měl být nakonfigurovaný takto:

    • Když se vygeneruje token SAS, obsahuje na začátku tokenu otazník (?). Při konfiguraci tajného kódu vyloučí počáteční ? .
    • Použijte platnou dobu vypršení platnosti (všechna data jsou v čase UTC).
  • Udělte alespoň oprávnění ke čtení souboru, který by se měl načíst (například srt=o&sp=r). Pro různé případy použití je možné vytvořit více sdílených přístupových podpisů. Oprávnění by měla být udělena následujícím způsobem:

    Činnost Povolení
    Čtení dat ze souboru Čti
    Čtení dat z více souborů a podsložek Číst a seznamovat
    Použití možnosti Vytvořit externí tabulku jako výběr (CETAS) Čtení, vytváření a zápis

Příklad použití příkazu CREDENTIAL with SHARED ACCESS SIGNATURE aTYPE = BLOB_STORAGE , viz Vytvoření externího zdroje dat pro provádění hromadných operací a načtení dat ze služby Azure Storage do SQL Database

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

TYPE = * [ BLOB_STORAGE | RDBMS | SHARD_MAP_MANAGER ] *

Určuje typ nakonfigurovaného externího zdroje dat. Tento parametr není vždy povinný a měl by být k dispozici pouze pro některé externí zdroje dat.

  • Používá se RDBMS pro dotazy napříč databázemi pomocí elastického dotazu ze služby SQL Database.
  • Používá se SHARD_MAP_MANAGER při vytváření externího zdroje dat při připojování k horizontálně dělené službě SQL Database.
  • Slouží BLOB_STORAGE pouze pro použití s předponou https . Pro abd a adls předpony nezadáte 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 CONTROL oprávnění k databázi ve službě Azure SQL Database.

Uzamčení

Vezme sdílený zámek objektu EXTERNAL DATA SOURCE .

Příklady

A. Vytvoření externího zdroje dat správce mapování horizontálních oddílů

Chcete-li vytvořit externí zdroj dat pro odkaz na SHARD_MAP_MANAGERdatabázi , zadejte název serveru služby SQL Database, který je hostitelem správce mapování horizontálních oddílů ve službě SQL Database nebo databáze SQL Serveru na virtuálním počítači.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred
    WITH IDENTITY = '<username>',
    SECRET = '<password>';

CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc
WITH (
    TYPE = SHARD_MAP_MANAGER,
    LOCATION = '<server_name>.database.windows.net',
    DATABASE_NAME = 'ElasticScaleStarterKit_ShardMapManagerDb',
    CREDENTIAL = ElasticDBQueryCred,
    SHARD_MAP_NAME = 'CustomerIDShardMap'
);

Podrobný kurz najdete v tématu Začínáme s elastickými dotazy pro horizontální dělení (horizontální dělení).

B. Vytvoření externího zdroje dat RDBMS

Chcete-li vytvořit externí zdroj dat, který bude odkazovat na rdBMS, určuje název serveru služby SQL Database vzdálené databáze ve službě SQL Database.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

CREATE DATABASE SCOPED CREDENTIAL SQL_Credential
    WITH IDENTITY = '<username>',
    SECRET = '<password>';

CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc
WITH (
    TYPE = RDBMS,
    LOCATION = '<server_name>.database.windows.net',
    DATABASE_NAME = 'Customers',
    CREDENTIAL = SQL_Credential
);

Podrobný kurz k RDBMS najdete v tématu Začínáme s dotazy napříč databázemi (vertikální dělení).

Příklady: Hromadné operace

Důležité

Při konfiguraci externího / zdroje dat pro hromadné operace nepřidávejte LOCATIONkoncové parametry, název souboru ani parametry sdíleného přístupového podpisu na konci adresy URL.

C. Vytvoření externího zdroje dat pro hromadné operace načítání dat z Azure Storage

Pro hromadné operace pomocí funkce BULK INSERT (Transact-SQL) nebo OPENROWSET (Transact-SQL) použijte následující zdroj dat. Přihlašovací údaje musí být nastavené SHARED ACCESS SIGNATURE jako identita, nesmí mít v tokenu SAS počáteční ? oprávnění, musí mít alespoň oprávnění ke čtení souboru, který by se měl načíst (například srt=o&sp=r) a doba vypršení platnosti by měla být platná (všechna data jsou v čase UTC). Další informace o sdílených přístupových podpisech najdete v tématu Použití sdílených přístupových podpisů (SAS).

Vytvoření externího zdroje dat pro Azure Blob Storage (ABS) pomocí spravované identity:

CREATE DATABASE SCOPED CREDENTIAL DSC_MI
WITH IDENTITY = 'Managed Identity'

--Create external data source pointing to the file path, and referencing database-scoped credential: 
CREATE EXTERNAL DATA SOURCE PrivateABS 
WITH ( 
    LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/' 
    ,CREDENTIAL = [DSC_MI]);

Vytvoření externího zdroje dat pro Azure Data Lake Gen2 (ADLS) pomocí identity uživatele:

CREATE DATABASE SCOPED CREDENTIAL DSC_ADLS
WITH IDENTITY = 'User Identity'

--Create external data source pointing to the file path, and referencing database-scoped credential: 
CREATE EXTERNAL DATA SOURCE PrivateADLS 
WITH ( 
    LOCATION = 'adls://<container>@<storage_account_name>.dfs.core.windows.net/' 
    ,CREDENTIAL = [DSC_ADLS]);

Pokud se chcete podívat na tento příklad, podívejte se na příkaz BULK INSERT.

Příklady: Azure SQL Edge

Důležité

Informace o konfiguraci externích dat pro Azure SQL Edge najdete v tématu Streamování dat v Azure SQL Edge.

A. Vytvoření externího zdroje dat pro odkazování na Kafka

Platí jenom pro:Azure SQL Edge

V tomto příkladu je externím zdrojem dat server Kafka s IP adresou xxx.xxx.xxx.xxx a nasloucháním na portu 1900. Externí zdroj dat Kafka je určen pouze pro streamování dat a nepodporuje nabízení predikátů.

-- Create an External Data Source for Kafka
CREATE EXTERNAL DATA SOURCE MyKafkaServer
    WITH (LOCATION = 'kafka://xxx.xxx.xxx.xxx:1900');

B. Vytvoření externího zdroje dat pro odkazování na EdgeHub

Platí jenom pro:Azure SQL Edge

V tomto příkladu je externím zdrojem dat EdgeHub spuštěný na stejném hraničním zařízení jako Azure SQL Edge. Externí zdroj dat EdgeHubu je určený jenom pro streamování dat a nepodporuje predikát push down.

-- Create an External Data Source for Kafka
CREATE EXTERNAL DATA SOURCE MyEdgeHub
    WITH (LOCATION = 'edgehub://');

* Azure Synapse
Analýza *
 

 

Přehled: Azure Synapse Analytics

platí pro: Azure Synapse Analytics

Vytvoří externí zdroj dat pro virtualizaci dat. Externí zdroje dat se používají k navázání připojení a podpoře primárního případu virtualizace dat a načítání dat z externích zdrojů dat. Další informace najdete v tématu Použití externích tabulek se službou Synapse SQL.

Důležité

Pokud chcete vytvořit externí zdroj dat pro dotazování prostředku Azure Synapse Analytics pomocí azure SQL Database s elastickým dotazem, přečtěte si téma VYTVOŘENÍ EXTERNÍHO ZDROJE DAT pro Azure SQL Database.

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 služby Azure SQL Database ve službě Azure Synapse Analytics.

LOCATION = '<prefix>://<path>'

Poskytuje protokol připojení a cestu k externímu zdroji dat.

Externí zdroj dat Předpona umístění konektoru Cesta k lokaci
Data Lake Storage* Gen1 adl <storage_account>.azuredatalake.net
Data Lake Storage Gen2 abfs[s] <container>@<storage_account>.dfs.core.windows.net
Azure Blob Storage (Úložiště Azure pro objekty typu blob) wasbs <container>@<storage_account>.blob.core.windows.net
Azure Blob Storage (Úložiště Azure pro objekty typu blob) https <storage_account>.blob.core.windows.net/<container>/subfolders
Data Lake Storage Gen1 http[s] <storage_account>.azuredatalakestore.net/webhdfs/v1
Data Lake Storage Gen2 http[s] <storage_account>.dfs.core.windows.net/<container>/subfolders
Data Lake Storage Gen2 wasb[s] <container>@<storage_account>.blob.core.windows.net

* Microsoft Azure Data Lake Storage Gen1 má omezenou podporu. Gen2 se doporučuje pro veškerý nový vývoj.

Externí zdroj dat Předpona umístění konektoru Vyhrazené fondy SQL: PolyBase Vyhrazené fondy SQL: nativní* Bezserverové fondy SQL
Data Lake Storage** Gen1 adl Ne Ne Ano
Data Lake Storage Gen2 abfs[s] Ano Ano Ano
Azure Blob Storage (Úložiště Azure pro objekty typu blob) wasbs Ano Ano*** Ano
Azure Blob Storage (Úložiště Azure pro objekty typu blob) https Ne Ano Ano
Data Lake Storage Gen1 http[s] Ne Ne Ano
Data Lake Storage Gen2 http[s] Ano Ano Ano
Data Lake Storage Gen2 wasb[s] Ano Ano Ano

* Bezserverové a vyhrazené fondy SQL ve službě Azure Synapse Analytics používají různé základy kódu pro virtualizaci dat. Bezserverové fondy SQL podporují nativní technologii virtualizace dat. Vyhrazené fondy SQL podporují nativní i virtualizaci dat PolyBase. Virtualizace dat PolyBase se používá při vytváření EXTERNÍHO ZDROJE DAT s TYPE=HADOOP.

** Microsoft Azure Data Lake Storage Gen1 má omezenou podporu. Gen2 se doporučuje pro veškerý nový vývoj.

wasbs Bezpečnější konektor se doporučuje více wasbnež . Pouze nativní virtualizace dat ve vyhrazených fondech SQL (kde TYPE nerovná HADOOP) podporuje wasb.

Cesta k umístění:

  • <container> = kontejner účtu úložiště, ve kterém jsou uložená data. Kořenové kontejnery jsou jen pro čtení, data se nedají zapsat zpět do kontejneru.
  • <storage_account> = název účtu úložiště prostředku Azure.

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

  • Výchozí možností je použít enable secure SSL connections při zřizování Azure Data Lake Storage Gen2. Pokud je tato možnost povolená, musíte použí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 ovladači systému souborů Azure Blob (ABFS).
  • Azure Synapse při vytváření objektu neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.
  • Při dotazování Hadoopu použijte stejný externí zdroj dat pro všechny tabulky, abyste zajistili konzistentní sémantiku dotazování.
  • https: Předpona umožňuje v cestě používat podsložku. https není k dispozici pro všechny metody přístupu k datům.
  • wasbs se doporučuje, protože se data posílají pomocí zabezpečeného připojení TLS.
  • Hierarchické obory názvů se nepodporují u účtů úložiště Azure V2 při přístupu k datům pomocí staršího wasb:// rozhraní, ale použití wasbs:// podporuje hierarchické obory názvů.

CREDENTIAL = credential_name

Volitelný. Určuje přihlašovací údaje s vymezeným oborem databáze pro ověřování v externím zdroji dat. Externí zdroj dat bez přihlašovacích údajů má přístup k veřejnému účtu úložiště nebo používá identitu Microsoft Entra volajícího pro přístup k souborům v úložišti Azure.

Další poznámky a pokyny při vytváření přihlašovacích údajů:

  • Pokud chcete načíst data ze služby Azure Storage nebo Azure Data Lake Store (ADLS) Gen2 do Azure Synapse Analytics, použijte klíč úložiště Azure.
  • CREDENTIAL vyžaduje se pouze v případě, že jsou data zabezpečená. CREDENTIAL nevyžaduje se u datových sad, které umožňují anonymní přístup.

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

  • V bezserverovém fondu SQL můžou přihlašovací údaje v oboru databáze určovat spravovanou identitu pracovního prostoru, název instančního objektu nebo token sdíleného přístupového podpisu (SAS). Přístup prostřednictvím identity uživatele, označované také jako předávání Microsoft Entra, je také možný v přihlašovacích údajích s vymezeným oborem databáze, stejně jako anonymní přístup k veřejně dostupnému úložišti. Další informace naleznete v tématu Podporované typy autorizace úložiště.

  • Ve vyhrazeném fondu SQL můžou přihlašovací údaje s vymezeným oborem databáze určovat token sdíleného přístupového podpisu (SAS), přístupový klíč úložiště, instanční objekt, spravovanou identitu pracovního prostoru nebo předávání Microsoft Entra.

TYPE = HADOOP

Volitelné, nedoporučuje se.

Typ můžete zadat pouze s vyhrazenými fondy SQL. HADOOP je jediná povolená hodnota, pokud je zadána. Externí zdroje dat s TYPE=HADOOP jsou k dispozici pouze ve vyhrazených fondech SQL.

Pro starší implementace použijte HADOOP, jinak se doporučuje použít novější nativní přístup k datům. Nezadávejte argument TYP pro použití novějšího nativního přístupu k datům.

Příklad použití TYPE = HADOOP k načtení dat ze služby Azure Storage najdete v tématu Vytvoření externího zdroje dat pro odkazování na Azure Data Lake Store Gen1 nebo 2 pomocí instančního objektu.

Bezserverové a vyhrazené fondy SQL ve službě Azure Synapse Analytics používají různé základy kódu pro virtualizaci dat. Bezserverové fondy SQL podporují nativní technologii virtualizace dat. Vyhrazené fondy SQL podporují nativní i virtualizaci dat PolyBase. Virtualizace dat PolyBase se používá při vytváření EXTERNÍHO ZDROJE DAT s TYPE=HADOOP.

Povolení

Vyžaduje CONTROL oprávnění k databázi.

Uzamčení

Vezme sdílený zámek objektu EXTERNAL DATA SOURCE .

Bezpečnost

Většina externích zdrojů dat podporuje ověřování na základě proxy serveru pomocí přihlašovacích údajů v oboru databáze k vytvoření účtu proxy serveru.

Pro ověřování účtů Azure Data Lake Store Gen2 se podporují klíče sdíleného přístupového podpisu (SAS). Zákazníci, kteří chtějí provést ověření pomocí sdíleného přístupového podpisu, musí vytvořit přihlašovací údaje s vymezeným oborem databáze, kde IDENTITY = "Shared Access Signature" a jako tajný klíč zadat token SAS.

Pokud vytvoříte přihlašovací údaje s vymezeným oborem databáze, kde IDENTITY = "Shared Access Signature" a jako tajný klíč použijete hodnotu klíče úložiště, zobrazí se následující chybová zpráva:

'HdfsBridge::isDirExist - Unexpected error encountered checking whether directory exists or not: AbfsRestOperationException: Operation failed: "Server failed to authenticate the request. Please refer to the information in the www-authenticate header.", 401, HEAD, [Storage path URL]'

Příklady

A. Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Storage pomocí rozhraní wasb://

V tomto příkladu je externím zdrojem dat účet Azure Storage V2 s názvem logs. Kontejner úložiště se nazývá daily. Externí zdroj dat Azure Storage je určený pouze pro přenos dat. Nepodporuje predikát push-down. Hierarchické obory názvů nejsou podporovány při přístupu k datům přes wasb:// rozhraní. Při připojování ke službě Azure Storage prostřednictvím wasb nebo wasbsmusí být ověřování provedeno pomocí klíče účtu úložiště, nikoli se sdíleným přístupovým podpisem (SAS).

V tomto příkladu se používá starší verze metody přístupu založené na javě HADOOP. Následující ukázka ukazuje, jak vytvořit přihlašovací údaje s vymezeným oborem databáze pro ověřování ve službě Azure Storage. Zadejte klíč účtu služby Azure Storage v tajném klíči přihlašovacích údajů databáze. V identitě přihlašovacích údajů s oborem databáze můžete zadat libovolný řetězec, protože se nepoužívá při ověřování v úložišti Azure.

-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
    WITH IDENTITY = '<my_account>',
    SECRET = '<azure_storage_account_key>';

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
    LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
    CREDENTIAL = AzureStorageCredential,
    TYPE = HADOOP
);

B. Vytvoření externího zdroje dat pro odkazování na Azure Data Lake Store Gen1 nebo 2 pomocí instančního objektu

Připojení ke službě Azure Data Lake Store může být založené na identifikátoru ADLS URI a instančním objektu vaší aplikace Microsoft Entra. Dokumentaci k vytvoření této aplikace najdete v ověřování Data Lake Store pomocí Microsoft Entra ID.

-- If you do not have a Master Key on your DW you will need to create one.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

-- These values come from your Microsoft Entra application used to authenticate to ADLS
CREATE DATABASE SCOPED CREDENTIAL ADLS_credential
WITH
    -- IDENTITY = '<clientID>@<OAuth2.0TokenEndPoint>' ,
    IDENTITY = '536540b4-4239-45fe-b9a3-629f97591c0c@https://login.microsoftonline.com/42f988bf-85f1-41af-91ab-2d2cd011da47/oauth2/token',
    -- SECRET = '<KEY>'
    SECRET = 'BjdIlmtKp4Fpyh9hIvr8HJlUida/seM5kQ3EpLAmeDI=';

-- For Gen 1 - Create an external data source
-- TYPE: HADOOP - PolyBase uses Hadoop APIs to access data in Azure Data Lake Storage.
-- LOCATION: Provide Data Lake Storage Gen 1 account name and URI
-- CREDENTIAL: Provide the credential created in the previous step
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH (
    LOCATION = 'adl://newyorktaxidataset.azuredatalakestore.net',
    CREDENTIAL = ADLS_credential,
    TYPE = HADOOP
);

-- For Gen2 - Create an external data source
-- TYPE: HADOOP - PolyBase uses Hadoop APIs to access data in Azure Data Lake Storage.
-- LOCATION: Provide Data Lake Storage Gen2 account name and URI
-- CREDENTIAL: Provide the credential created in the previous step
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH (
    -- Note the abfss endpoint when your account has secure transfer enabled
    LOCATION = 'abfss://data@newyorktaxidataset.dfs.core.windows.net',
    CREDENTIAL = ADLS_credential,
    TYPE = HADOOP
);

C. Vytvoření externího zdroje dat pro odkazování na Azure Data Lake Store Gen2 pomocí klíče účtu úložiště

-- If you do not have a Master Key on your DW you will need to create one.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

CREATE DATABASE SCOPED CREDENTIAL ADLS_credential
WITH
    -- IDENTITY = '<storage_account_name>' ,
    IDENTITY = 'newyorktaxidata',
    -- SECRET = '<storage_account_key>'
    SECRET = 'yz5N4+bxSb89McdiysJAzo+9hgEHcJRJuXbF/uC3mhbezES/oe00vXnZEl14U0lN3vxrFKsphKov16C0w6aiTQ==';

-- Note this example uses a Gen2 secured endpoint (abfss)
CREATE EXTERNAL DATA SOURCE < data_source_name >
WITH (
    LOCATION = 'abfss://2013@newyorktaxidataset.dfs.core.windows.net',
    CREDENTIAL = ADLS_credential,
    TYPE = HADOOP
);

D. Vytvoření externího zdroje dat do Azure Data Lake Store Gen2 pomocí abfs://

Při připojování k účtu Azure Data Lake Store Gen2 pomocí mechanismu spravované identity není nutné zadávat TAJNÝ KÓD.

-- If you do not have a Master Key on your DW you will need to create one
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

--Create database scoped credential with **IDENTITY = 'Managed Service Identity'**
CREATE DATABASE SCOPED CREDENTIAL msi_cred
WITH IDENTITY = 'Managed Service Identity';

--Create external data source with abfss:// scheme for connecting to your Azure Data Lake Store Gen2 account
CREATE EXTERNAL DATA SOURCE ext_datasource_with_abfss
WITH (
    TYPE = HADOOP,
    LOCATION = 'abfss://myfile@mystorageaccount.dfs.core.windows.net',
    CREDENTIAL = msi_cred
);

*Analytika
Systém platformy (PDW) *
 

 

Přehled: Systém analytických platforem

Platí pro: Analytics Platform System (PDW)

Vytvoří externí zdroj dat pro dotazy PolyBase. Externí zdroje dat slouží k navázání připojení a podpoře následujícího případu použití: Virtualizace dat a načítání dat pomocí virtualizace dat s PolyBase na SQL Serveru.

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 služby Azure Storage wasb[s] <container>@<storage_account>.blob.core.windows.net

Cesta k umístění:

  • <Namenode> = název počítače, identifikátor URI služby name nebo IP adresa 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í.

CREDENTIAL = credential_name

Určuje přihlašovací údaje s oborem databáze pro ověřování v externím zdroji dat.

Další poznámky a pokyny při vytváření přihlašovacích údajů:

  • Pokud chcete načíst data ze služby Azure Storage do Azure Synapse nebo PDW, použijte klíč úložiště Azure.
  • CREDENTIAL vyžaduje se pouze v případě, že jsou data zabezpečená. CREDENTIAL nevyžaduje se u datových sad, které umožňují anonymní přístup.

TYP = * [ HADOOP ] *

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

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

Příklad použití TYPE = HADOOP k načtení dat ze služby Azure Storage najdete v tématu Vytvoření externího zdroje dat pro odkazování na Hadoop.

RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'

V SQL Serveru 2019 (15.x) nezadávejte RESOURCE_MANAGER_LOCATION, pokud se nepřipojíte ke cloudera CDH, Hortonworks HDP, účtu Azure Storage.

Tuto volitelnou hodnotu nakonfigurujte pouze při připojování k Cloudera CDH, Hortonworks HDP nebo účtu Azure Storage. Úplný seznam podporovaných verzí Hadoopu najdete v tématu Konfigurace připojení PolyBase (Transact-SQL).

RESOURCE_MANAGER_LOCATION Když je definován, optimalizátor dotazů provede rozhodnutí na základě nákladů za účelem zlepšení výkonu. Úlohu MapReduce lze použít k posunu výpočtů do Hadoopu. Určením RESOURCE_MANAGER_LOCATION může výrazně snížit objem dat přenášených mezi Hadoopem a SQL, což může vést ke zlepšení výkonu dotazů.

Pokud není Zadaný Resource Manager, je nabízení výpočetních prostředků do Hadoopu zakázané pro dotazy PolyBase. Vytvoření externího zdroje dat pro odkazování na Hadoop s povoleným push-down poskytuje konkrétní příklad a další pokyny.

Hodnota RESOURCE_MANAGER_LOCATION se při vytváření externího zdroje dat neověřuje. Zadání nesprávné hodnoty může způsobit selhání dotazu při spuštění při každém pokusu o nasdílení změn, protože zadaná hodnota by nebyla schopna vyřešit.

Aby polyBase fungovala správně s externím zdrojem dat Hadoop, musí být otevřené porty pro následující komponenty clusteru Hadoop:

  • Porty HDFS
    • Uzel NameNode
    • Datový uzel
  • Resource Manager
    • Odeslání úlohy
  • Historie úlohy

Pokud není port zadaný, zvolí se výchozí hodnota s použitím aktuálního nastavení pro konfiguraci připojení hadoop.

Připojení Hadoopu Výchozí port Resource Manageru
1 50300
2 50300
3 8021
4 8032
5 8050
6 8032
7 8050

Následující tabulka uvádí výchozí porty pro tyto komponenty. Existuje závislost na verzi Hadoopu i možnost vlastní konfigurace, která nepoužívá výchozí přiřazení portu.

Komponenta clusteru Hadoop Výchozí port
Uzel NameNode 8020
Datový uzel (přenos dat, port IPC bez oprávnění) 50010
Datový uzel (přenos dat, port IPC oprávnění) 1019
Odeslání úlohy Resource Manageru (Hortonworks 1.3) 50300
Odeslání úlohy Resource Manageru (Cloudera 4.3) 8021
Odeslání úlohy Resource Manageru (Hortonworks 2.0 ve Windows, Cloudera 5.x v Linuxu) 8032
Odeslání úlohy Resource Manageru (Hortonworks 2.x, 3.0 v Linuxu, Hortonworks 2.1-3 ve Windows) 8050
Historie úloh Resource Manageru 10020

Povolení

Vyžaduje CONTROL oprávnění k databázi v systému PDW (Analytics Platform System).

Poznámka:

V předchozích verzích PDW vytvořte požadovaná ALTER ANY EXTERNAL DATA SOURCE oprávnění k externímu zdroji dat.

Uzamčení

Vezme sdílený zámek objektu EXTERNAL DATA SOURCE .

Bezpečnost

PolyBase podporuje ověřování na základě proxy serveru pro většinu externích zdrojů dat. Vytvořte přihlašovací údaje s vymezeným oborem databáze a vytvořte účet proxy serveru.

Token SAS s typem HADOOP není podporován. Podporuje se pouze u typu = BLOB_STORAGE při použití přístupového klíče účtu úložiště. Pokus o vytvoření externího zdroje dat s typem HADOOP a přihlašovací údaje SAS selžou s následující chybou:

Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account are not valid.: Error [Parameters provided to connect to the Azure storage account are not valid.] occurred while accessing external file.'

Příklady

A. Vytvoření externího zdroje dat pro odkazování na Hadoop

Pokud chcete vytvořit externí zdroj dat, který bude odkazovat na hortonworks HDP nebo Cloudera CDH, zadejte název počítače nebo IP adresu Hadoopu Namenode a portu.

CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
    LOCATION = 'hdfs://10.10.10.10:8050',
    TYPE = HADOOP
);

B. Vytvoření externího zdroje dat pro odkazování na Hadoop s povoleným push-down

RESOURCE_MANAGER_LOCATION Zadejte možnost povolení výpočtu push-down do Hadoopu pro dotazy PolyBase. Jakmile je tato možnost povolená, polyBase provede rozhodnutí na základě nákladů, které určí, jestli se má výpočet dotazu odeslat do Hadoopu.

CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
    LOCATION = 'hdfs://10.10.10.10:8020',
    TYPE = HADOOP,
    RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);

C. Vytvoření externího zdroje dat pro odkazování na Hadoop zabezpečený protokolem Kerberos

Pokud chcete ověřit, jestli je cluster Hadoop zabezpečený protokolem Kerberos, zkontrolujte hodnotu hadoop.security.authentication vlastnosti v systému Hadoop core-site.xml. Pokud chcete odkazovat na cluster Hadoop zabezpečený protokolem Kerberos, musíte zadat přihlašovací údaje s oborem databáze, které obsahují vaše uživatelské jméno a heslo kerberos. Hlavní klíč databáze slouží k šifrování tajného klíče přihlašovacích údajů s vymezeným oborem databáze.

-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
    WITH IDENTITY = '<hadoop_user_name>',
    SECRET = '<hadoop_password>';

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
    LOCATION = 'hdfs://10.10.10.10:8050',
    CREDENTIAL = HadoopUser1,
    TYPE = HADOOP,
    RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);

D. Vytvoření externího zdroje dat pro přístup k datům ve službě Azure Storage pomocí rozhraní wasb://

V tomto příkladu je externím zdrojem dat účet azure V2 Storage s názvem logs. Kontejner úložiště se nazývá daily. Externí zdroj dat Azure Storage je určený pouze pro přenos dat. Nepodporuje predikát push-down. Hierarchické obory názvů nejsou podporovány při přístupu k datům přes wasb:// rozhraní. Při připojování ke službě Azure Storage prostřednictvím wasb nebo wasbsmusí být ověřování provedeno pomocí klíče účtu úložiště, nikoli se sdíleným přístupovým podpisem (SAS).

Tento příklad ukazuje, jak vytvořit přihlašovací údaje s vymezeným oborem databáze pro ověřování ve službě Azure Storage. Zadejte klíč účtu úložiště Azure v tajném kódu přihlašovacích údajů databáze. V identitě přihlašovacích údajů s oborem databáze můžete zadat libovolný řetězec, protože se nepoužívá při ověřování v úložišti Azure.

-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
    WITH IDENTITY = '<my_account>',
        SECRET = '<azure_storage_account_key>';

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
    LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
    CREDENTIAL = AzureStorageCredential,
    TYPE = HADOOP
);

* SQL Managed Instance *  

Přehled: Azure SQL Managed Instance

Platí pro: Azure SQL Managed Instance

Vytvoří externí zdroj dat ve službě Azure SQL Managed Instance. Úplné informace najdete v tématu Virtualizace dat pomocí služby Azure SQL Managed Instance.

Virtualizace dat ve službě Azure SQL Managed Instance poskytuje přístup k externím datům v různých formátech souborů prostřednictvím OPENROWSET nebo CREATE EXTERNAL TABLE.

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 (Úložiště Azure pro objekty typu blob) abs abs://<container>@<storage_account>.blob.core.windows.net/<path>/<file_name>
Azure Data Lake Service Gen2 adls adls://<container>@<storage_account>.dfs.core.windows.net/<path>/<file_name>

Databázový stroj při vytváření objektu neověřuje existenci externího zdroje dat. Pokud to chcete ověřit, vytvořte externí tabulku pomocí externího zdroje dat.

Při konfiguraci externího / zdroje dat pro hromadné operace nepřidávejte LOCATIONkoncové parametry, název souboru ani parametry sdíleného přístupového podpisu na konci adresy URL.

CREDENTIAL = credential_name

Určuje přihlašovací údaje s oborem databáze pro ověřování v externím zdroji dat.

Další poznámky a pokyny při vytváření přihlašovacích údajů:

  • Pokud chcete načíst data ze služby Azure Storage do spravované instance Azure SQL, použijte sdílený přístupový podpis (token SAS).
  • CREDENTIAL vyžaduje se pouze v případě, že jsou data zabezpečená. CREDENTIAL nevyžaduje se u datových sad, které umožňují anonymní přístup.
  • Pokud se vyžaduje přihlašovací údaje, musí se přihlašovací údaje vytvořit pomocí Managed Identity identity 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 (Transact-SQL).

Použití identity spravované služby pro přihlašovací údaje v oboru databáze:

  • Specifikovat WITH IDENTITY = 'Managed Identity'

  • Použijte identitu spravované služby přiřazené systémem spravované instance Azure SQL, která musí být povolená, pokud se má pro tento účel použít.

    • Udělte čtenáři roli Azure RBAC identitě spravované služby přiřazené systémem spravované instance Azure SQL k potřebným kontejnerům Azure Blob Storage. Například prostřednictvím webu Azure Portal si přečtěte téma Přiřazení rolí Azure pomocí webu Azure Portal.

Vytvoření sdíleného přístupového podpisu (SAS) pro přihlašovací údaje v oboru databáze:

  • Specifikovat WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = ...

  • Sdílený přístupový podpis můžete vytvořit několika způsoby:

  • Token SAS 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 CONTROL oprávnění k databázi ve službě Azure SQL Managed Instance.

Uzamčení

Vezme sdílený zámek objektu EXTERNAL DATA SOURCE .

Příklady

Další příklady najdete v tématu Virtualizace dat se službou Azure SQL Managed Instance.

A. Dotazování externích dat ze spravované instance Azure SQL pomocí OPENROWSET nebo externí tabulky

Další příklady najdete v tématu VYTVOŘENÍ EXTERNÍHO ZDROJE DAT (Transact-SQL) nebo v tématu Virtualizace dat se službou Azure SQL Managed Instance.

  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 podporováno.

    --Or, query data using the WITH clause on a CSV, where schema inference is not supported
    SELECT TOP 10 id,
        updated,
        confirmed,
        confirmed_change
    FROM OPENROWSET (
        BULK 'bing_covid-19_data.csv', DATA_SOURCE = 'MyExternalDataSource',
        FORMAT = 'CSV',
        FIRSTROW = 2
    ) WITH (
        id INT,
        updated DATE,
        confirmed INT,
        confirmed_change INT
    ) AS filerows;
    
  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