Megosztás a következőn keresztül:


KÜLSŐ ADATFORRÁS LÉTREHOZÁSA (Transact-SQL)

A következőkre vonatkozik: Az SQL Server 2016 (13.x) és újabb verziói az Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsPlatform System (PDW)SQL Analytics végpontja a Microsoft FabricWarehouse-ban a Microsoft FabricSQL Database-ben a Microsoft Fabricben

Létrehoz egy külső adatforrást a PolyBase és az adatvirtualizálási funkciókhoz használt külső adatok lekérdezéséhez.

Ez a cikk a választott SQL-termék szintaxisát, argumentumait, megjegyzéseit, engedélyeit és példáit ismerteti.

Termék kiválasztása

A következő sorban válassza ki a kívánt terméknevet, és csak az adott termék adatai jelenjenek meg.

* SQL Server *  

 

Áttekintés: SQL Server 2016

A következőkre vonatkozik: SQL Server 2016 (13.x)

Létrehoz egy külső adatforrást a PolyBase-lekérdezésekhez. A külső adatforrások kapcsolat létesítésére és az elsődleges használati esetek támogatására szolgálnak:

Megjegyzés:

Ez a szintaxis az SQL Server különböző verzióiban eltérő. A verzióválasztó legördülő listában válassza ki a megfelelő verziót.
Az SQL Server 2019 (15.x) funkcióinak megtekintéséhez látogasson el a CREATE EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁS LÉTREHOZÁSA) webhelyre. Az SQL Server 2022 (16.x) funkcióinak megtekintéséhez látogasson el a CREATE EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁS LÉTREHOZÁSA) webhelyre.

Transact-SQL szintaxis konvenciók

Az SQL Server 2016 szintaxisa

CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
  ( [ LOCATION = '<prefix>://<path>[:<port>]' ]
    [ [ , ] CREDENTIAL = <credential_name> ]
    [ [ , ] TYPE = { HADOOP } ]
    [ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]

Érvek

data_source_name

Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az SQL Server adatbázisában.

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

Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.

Külső adatforrás Csatlakozó helyének előtagja Hely elérési út Támogatott helyek termék/szolgáltatás szerint Hitelesítés
Cloudera CDH vagy Hortonworks HDP hdfs <Namenode>[:port] SQL Server 2016 (13.x) – SQL Server 2019 (15.x) Névtelen vagy alapszintű hitelesítés
Azure Storage-fiók (V2) wasb[s] <container>@<storage_account>.blob.core.windows.net Az SQL Server 2016-tól kezdve (13.x)
A hierarchikus névtér nem támogatott
Azure Storage-fiókkulcs

Hely elérési útja:

  • <Namenode> = a Hadoop-fürt gépneve, névszolgáltatás URI-ja vagy IP-címe Namenode . A PolyBase-nek fel kell oldania a Hadoop-fürt által használt DNS-neveket.
  • port = Az a port, amelyen a külső adatforrás figyel. A Hadoopban a port a fs.defaultFS konfigurációs paraméterrel található. Az alapértelmezett érték a 8020.
  • <container> = az adatokat tartalmazó tárfiók tárolója. A gyökértárolók írásvédettek, az adatok nem írhatók vissza a tárolóba.
  • <storage_account> = az Azure-erőforrás tárfiókjának neve.
  • <server_name> = a gazdagép neve.
  • <instance_name> = a névvel ellátott SQL Server-példány neve. Akkor használatos, ha az SQL Server Browser Service fut a célpéldányon.

További megjegyzések és útmutatás a hely beállításához:

  • Az SQL Server adatbázismotorja nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.
  • Használja ugyanazt a külső adatforrást az összes táblához a Hadoop lekérdezése során, hogy egységes lekérdezési szemantikát biztosítson.
  • wasbs nem kötelező, de ajánlott az SQL Server 2016-ban (13.x) az Azure Storage-fiókok eléréséhez, mivel az adatok biztonságos TLS/SSL-kapcsolat használatával lesznek elküldve.
  • A Sikeres PolyBase-lekérdezések Hadoop-feladatátvétel Namenode során történő biztosításához fontolja meg a Hadoop-fürt virtuális IP-címének Namenode használatát. Ha nem, hajtsa végre az ALTER EXTERNAL DATA SOURCE parancsot, hogy az új helyre mutasson.

HITELESÍTŐ ADATOK = credential_name

Egy adatbázis-hatókörű hitelesítő adatot ad meg a külső adatforráshoz való hitelesítéshez.

CREDENTIAL csak akkor szükséges, ha az adatok biztonságban vannak. CREDENTIAL nem szükséges a névtelen hozzáférést lehetővé tevő adathalmazokhoz.

Adatbázis-hatókörű hitelesítő adatok létrehozásához lásd: CREATE DATABASE SCOPED CREDENTIAL.

TÍPUS = * [ HAUOP ] *

Megadja a konfigurált külső adatforrás típusát. Az SQL Server 2016-ban ez a paraméter mindig kötelező, és csak a HADOOP. Támogatja a Cloudera CDH-vel, a Hortonworks HDP-vel vagy egy Azure Storage-fiókkal való kapcsolatokat. A paraméter viselkedése az SQL Server későbbi verzióiban eltérő.

Az Adatok Azure Storage-fiókból való betöltésére vonatkozó példa TYPE = HADOOP : Külső adatforrás létrehozása az Azure Storage-adatokhoz való hozzáféréshez a wasb:// felület használatával

RESOURCE_MANAGER_LOCATION = *'ResourceManager_URI[:p ort]'

Ezt az opcionális értéket akkor konfigurálhatja, ha csak Cloudera CDH-hez, Hortonworks HDP-hez vagy Azure Storage-fiókhoz csatlakozik. A támogatott Hadoop-verziók teljes listájáért tekintse meg a PolyBase kapcsolati konfigurációját.

RESOURCE_MANAGER_LOCATION A definiált lekérdezésoptimalizáló költségalapú döntést hoz a teljesítmény javítása érdekében. A MapReduce-feladat segítségével leküldheti a számítást a Hadoopnak. RESOURCE_MANAGER_LOCATION A beállítás jelentősen csökkentheti a Hadoop és az SQL Server között átvitt adatok mennyiségét, ami jobb lekérdezési teljesítményt eredményezhet.

Ha a Resource Manager nincs megadva, a Számítás hadoopba való leküldése le van tiltva a PolyBase-lekérdezések esetében. Ha külső adatforrást hoz létre a Hadoopra való hivatkozáshoz, a leküldéses leküldés engedélyezve van, konkrét példát és további útmutatást nyújt.

A külső adatforrás létrehozásakor a RESOURCE_MANAGER_LOCATION érték nem lesz érvényesítve. Helytelen érték megadása lekérdezési hibát okozhat a végrehajtás során, amikor leküldéses leküldést kísérel meg, mivel a megadott érték nem oldható fel.

Ahhoz, hogy a PolyBase megfelelően működjön egy Hadoop külső adatforrással, a következő Hadoop-fürtösszetevők portjainak nyitva kell lenniük:

  • HDFS-portok
    • Névcsomópont
    • Datanode
  • Erőforrás-menedzser
    • Feladat beküldése
  • Feladatelőzmények

Ha a port nincs megadva, az alapértelmezett érték a hadoop-kapcsolat konfigurációjának aktuális beállításával lesz kiválasztva.

Hadoop-kapcsolat Alapértelmezett Resource Manager-port
1 50300
2 50300
3 8021
4 8032
5 8050
6 8032
7 8050
8 8032

Az alábbi táblázat az összetevők alapértelmezett portjait mutatja be. Létezik Hadoop-verziófüggőség, valamint az egyéni konfiguráció lehetősége, amely nem használja az alapértelmezett port-hozzárendelést.

Hadoop-fürtösszetevő Alapértelmezett port
NameNode 8020
DataNode (Adatátvitel, nem jogosultságú IPC-port) 50010
DataNode (Adatátvitel, jogosultsági IPC-port) 1019
Resource Manager-feladat beküldése (Hortonworks 1.3) 50300
Resource Manager-feladat beküldése (Cloudera 4.3) 8021
Resource Manager-feladat beküldése (Hortonworks 2.0 Windows rendszeren, Cloudera 5.x Linux rendszeren) 8032
Resource Manager-feladat beküldése (Hortonworks 2.x, 3.0 Linuxon, Hortonworks 2.1-3 Windows rendszeren) 8050
Resource Manager-feladatelőzmények 10020

Engedélyek

Engedély szükséges CONTROL az SQL Server adatbázisához.

Zárolás

Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.

Biztonság

A PolyBase a legtöbb külső adatforrás proxyalapú hitelesítését támogatja. Hozzon létre egy adatbázis-hatókörű hitelesítő adatot a proxyfiók létrehozásához.

Példák

Fontos

További információ a PolyBase telepítéséről és engedélyezéséről: PolyBase telepítése Windows rendszeren

Egy. Külső adatforrás létrehozása a Hadoopra való hivatkozáshoz

Ha külső adatforrást szeretne létrehozni a Hortonworks HDP- vagy Cloudera CDH Hadoop-fürtre való hivatkozáshoz, adja meg a Hadoop Namenode és a port gépnevét vagy IP-címét.

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

B. Külső adatforrás létrehozása a Hadoopra való hivatkozáshoz, ha engedélyezve van a leküldéses leküldés

Adja meg a RESOURCE_MANAGER_LOCATION leküldéses számítás engedélyezésének lehetőségét a PolyBase-lekérdezésekhez készült Hadoopban. Ha engedélyezve van, a PolyBase költségalapú döntést hoz annak megállapításához, hogy a lekérdezési számítást le kell-e küldeni a Hadoopnak.

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

C. Külső adatforrás létrehozása a Kerberos által védett Hadoopra való hivatkozáshoz

Annak ellenőrzéséhez, hogy a Hadoop-fürt Kerberos-védelem alatt áll-e, ellenőrizze a Hadoop core-site.xmltulajdonság értékét hadoop.security.authentication . Kerberos által védett Hadoop-fürtre való hivatkozáshoz meg kell adnia egy adatbázis-hatókörű hitelesítő adatot, amely tartalmazza a Kerberos-felhasználónevet és -jelszót. Az adatbázis főkulcsa az adatbázis hatókörébe tartozó hitelesítőadat-titkos kód titkosítására szolgál.

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

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

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

D. Külső adatforrás létrehozása az Azure Storage-adatokhoz való hozzáféréshez a wasb:// felület használatával

Ebben a példában a külső adatforrás egy Azure V2 Storage-fiók neve logs. A tárolóedényt nevezik dailyel . Az Azure Storage külső adatforrása csak adatátvitelre használható. Nem támogatja a predikátum leküldését. A hierarchikus névterek nem támogatottak az adatok interfészen keresztüli wasb:// elérésekor.

Ez a példa bemutatja, hogyan hozhatja létre az adatbázis hatókörébe tartozó hitelesítő adatokat egy Azure V2 Storage-fiók hitelesítéséhez. Adja meg az Azure Storage-fiókkulcsot az adatbázis hitelesítőadat-titkos kódjában. Bármilyen sztringet megadhat az adatbázis hatókörébe tartozó hitelesítő identitásban, mivel az nem használható az Azure Storage-beli hitelesítés során. Az Azure Storage-hoz wasbwasbsvaló csatlakozáskor a hitelesítést tárfiók-kulccsal kell elvégezni, nem pedig közös hozzáférésű jogosultságkóddal (SAS).

Az SQL Server 2016-ban (13.x) TYPE az Azure Storage elérésekor is be kell állítani HADOOP .

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

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

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

Áttekintés: SQL Server 2017

A következőkre vonatkozik: SQL Server 2017 (14.x)

Létrehoz egy külső adatforrást a PolyBase-lekérdezésekhez. A külső adatforrások kapcsolat létesítésére és az elsődleges használati esetek támogatására szolgálnak:

Megjegyzés:

Ez a szintaxis a Linuxon futó SQL Server különböző verzióiban eltérő. A verzióválasztó legördülő listában válassza ki a megfelelő verziót.
Az SQL Server 2019 (15.x) funkcióinak megtekintéséhez látogasson el a CREATE EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁS LÉTREHOZÁSA) webhelyre. Az SQL Server 2022 (16.x) funkcióinak megtekintéséhez látogasson el a CREATE EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁS LÉTREHOZÁSA) webhelyre.

Megjegyzés:

Ez a szintaxis az SQL Server különböző verzióiban eltérő. A verzióválasztó legördülő listában válassza ki a megfelelő verziót.
Az SQL Server 2019 (15.x) funkcióinak megtekintéséhez látogasson el a CREATE EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁS LÉTREHOZÁSA) webhelyre. Az SQL Server 2022 (16.x) funkcióinak megtekintéséhez látogasson el a CREATE EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁS LÉTREHOZÁSA) webhelyre.

Transact-SQL szintaxis konvenciók

Az SQL Server 2017 szintaxisa

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

Érvek

data_source_name

Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az SQL Server adatbázisában.

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

Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.

Külső adatforrás Csatlakozó helyének előtagja Hely elérési út Támogatott helyek termék/szolgáltatás szerint Hitelesítés
Cloudera CDH vagy Hortonworks HDP hdfs <Namenode>[:port] SQL Server 2016 (13.x) – SQL Server 2019 (csak 15.x) Névtelen vagy alapszintű hitelesítés
Azure Storage-fiók (V2) wasb[s] <container>@<storage_account>.blob.core.windows.net Az SQL Server 2016-tól kezdve (13.x)
A hierarchikus névtér nem támogatott
Azure Storage-fiókkulcs
Tömeges műveletek https <storage_account>.blob.core.windows.net/<container> Az SQL Server 2017-től kezdve (14.x) Közös hozzáférésű jogosultságkód (SAS)

Hely elérési útja:

  • <Namenode> = a Hadoop-fürt gépneve, névszolgáltatás URI-ja vagy IP-címe Namenode . A PolyBase-nek fel kell oldania a Hadoop-fürt által használt DNS-neveket.
  • port = Az a port, amelyen a külső adatforrás figyel. A Hadoopban a port a fs.defaultFS konfigurációs paraméterrel található. Az alapértelmezett érték a 8020.
  • <container> = az adatokat tartalmazó tárfiók tárolója. A gyökértárolók írásvédettek, az adatok nem írhatók vissza a tárolóba.
  • <storage_account> = az Azure-erőforrás tárfiókjának neve.
  • <server_name> = a gazdagép neve.
  • <instance_name> = a névvel ellátott SQL Server-példány neve. Akkor használatos, ha az SQL Server Browser Service fut a célpéldányon.

További megjegyzések és útmutatás a hely beállításához:

  • Az SQL Server adatbázismotorja nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.
  • Használja ugyanazt a külső adatforrást az összes táblához a Hadoop lekérdezése során, hogy egységes lekérdezési szemantikát biztosítson.
  • Adja meg a Driver={<Name of Driver>} csatlakozáskor a következőt ODBC: .
  • wasbs Nem kötelező, de ajánlott az SQL Server 2017-ben (14.x) az Azure Storage-fiókok eléréséhez, mivel az adatok biztonságos TLS/SSL-kapcsolat használatával lesznek elküldve.
  • A Sikeres PolyBase-lekérdezések Hadoop-feladatátvétel Namenode során történő biztosításához fontolja meg a Hadoop-fürt virtuális IP-címének Namenode használatát. Ha nem, hajtsa végre az ALTER EXTERNAL DATA SOURCE parancsot, hogy az új helyre mutasson.

HITELESÍTŐ ADATOK = credential_name

Egy adatbázis-hatókörű hitelesítő adatot ad meg a külső adatforráshoz való hitelesítéshez.

További megjegyzések és útmutatás hitelesítő adatok létrehozásakor:

  • CREDENTIAL csak akkor szükséges, ha az adatok biztonságban vannak. CREDENTIAL nem szükséges a névtelen hozzáférést lehetővé tevő adathalmazokhoz.
  • Amikor a TYPE = BLOB_STORAGEhitelesítő adatokat identitásként kell létrehozni SHARED ACCESS SIGNATURE .
  • TYPE = BLOB_STORAGE csak tömeges műveletek esetén engedélyezett; nem hozhat létre külső táblákat külső adatforráshoz a következővel TYPE = BLOB_STORAGE: .
  • Az Azure Storage-hoz wasbwasbsvaló csatlakozáskor a hitelesítést tárfiók-kulccsal kell elvégezni, nem pedig közös hozzáférésű jogosultságkóddal (SAS).
  • Amikor TYPE = HADOOP a hitelesítő adatokat a tárfiók kulcsával kell létrehozni.SECRET

A közös hozzáférésű jogosultságkódok létrehozásának több módja is van:

  • SAS-jogkivonatot az Azure Portalra navigálva hozhat létre –><Your_Storage_Account> –> Közös hozzáférésű jogosultságkód –> Engedélyek konfigurálása –> SAS és kapcsolati sztring létrehozása. További információ: Közös hozzáférésű jogosultságkód létrehozása.

  • SAS-t az Azure Storage Explorerrel hozhat létre és konfigurálhat.

  • SAS-jogkivonatot programozott módon hozhat létre a PowerShell, az Azure CLI, a .NET és a REST API használatával. További információ: Korlátozott hozzáférés biztosítása az Azure Storage-erőforrásokhoz közös hozzáférésű jogosultságkódok (SAS) használatával.

  • Az SAS-jogkivonatot a következőképpen kell konfigurálni:

    • Sas-jogkivonat létrehozásakor egy kérdőjelet ('?' ) tartalmaz a jogkivonat elején. Zárja ki a bevezetőt ? , ha TITKOS kódként van konfigurálva.
    • Érvényes lejárati időtartamot használjon (minden dátum UTC-időpontban van).
  • Adjon legalább olvasási engedélyt a betöltendő fájlhoz (például srt=o&sp=r). Több közös hozzáférésű jogosultságkód is létrehozható különböző használati esetekhez. Az engedélyeket az alábbiak szerint kell megadni:

    Tevékenység Engedély
    Adatok beolvasása fájlból Olvasás
    Adatok olvasása több fájlból és almappából Olvasás és felsorolás

Példa a with CREDENTIAL and ( ésSHARED ACCESS SIGNATURETYPE = ) használatáraBLOB_STORAGE: Külső adatforrás létrehozása tömeges műveletek végrehajtásához és adatok lekérése az Azure Storage-ból az SQL Database-be

Adatbázis-hatókörű hitelesítő adatok létrehozásához lásd: CREATE DATABASE SCOPED CREDENTIAL.

TÍPUS = * [ HADOOP | BLOB_STORAGE ] *

Megadja a konfigurált külső adatforrás típusát. Ez a paraméter nem mindig szükséges, és csak a Cloudera CDH-hoz, a Hortonworks HDP-hez, egy Azure Storage-fiókhoz vagy egy 2. generációs Azure Data Lake Storage-hoz való csatlakozáskor kell megadni.

  • Akkor használható HADOOP , ha a külső adatforrás a Cloudera CDH, a Hortonworks HDP, az Azure Storage-fiók vagy az Azure Data Lake Storage Gen2.
  • Használd BLOB_STORAGE Azure Storage fiókból tömeges műveletek végrehajtásához BULK INSERT vagy OPENROWSET BULK használatával. Bevezetés az SQL Server 2017-be (14.x). Használja HADOOP az Azure Storage-on CREATE EXTERNAL TABLE való használatra.

Megjegyzés:

TYPE az Azure Storage elérésekor is be kell állítani HADOOP .

Az Adatok Azure Storage-fiókból való betöltésére vonatkozó példa TYPE = HADOOP : Külső adatforrás létrehozása az Azure Storage-adatokhoz való hozzáféréshez a wasb:// felület használatával

RESOURCE_MANAGER_LOCATION = "ResourceManager_URI[:p ort]"

Ezt az opcionális értéket akkor konfigurálhatja, ha csak Cloudera CDH-hez, Hortonworks HDP-hez vagy Azure Storage-fiókhoz csatlakozik. A támogatott Hadoop-verziók teljes listájáért tekintse meg a PolyBase kapcsolati konfigurációját.

A definiálás után a RESOURCE_MANAGER_LOCATION lekérdezésoptimalizáló költségalapú döntést hoz a teljesítmény javítása érdekében. A MapReduce-feladat segítségével leküldheti a számítást a Hadoopnak. RESOURCE_MANAGER_LOCATION A beállítás jelentősen csökkentheti a Hadoop és az SQL Server között átvitt adatok mennyiségét, ami jobb lekérdezési teljesítményt eredményezhet.

Ha a Resource Manager nincs megadva, a Számítás hadoopba való leküldése le van tiltva a PolyBase-lekérdezések esetében. Ha külső adatforrást hoz létre a Hadoopra való hivatkozáshoz, a leküldéses leküldés engedélyezve van, konkrét példát és további útmutatást nyújt.

A RESOURCE_MANAGER_LOCATION külső adatforrás létrehozásakor az érték nem lesz érvényesítve. Helytelen érték megadása lekérdezési hibát okozhat a végrehajtás során, amikor leküldéses leküldést kísérel meg, mivel a megadott érték nem oldható fel.

Ahhoz, hogy a PolyBase megfelelően működjön egy Hadoop külső adatforrással, a következő Hadoop-fürtösszetevők portjainak nyitva kell lenniük:

  • HDFS-portok
    • Névcsomópont
    • Datanode
  • Erőforrás-menedzser
    • Feladat beküldése
  • Feladatelőzmények

Ha a port nincs megadva, az alapértelmezett érték a hadoop-kapcsolat konfigurációjának aktuális beállításával lesz kiválasztva.

Hadoop-kapcsolat Alapértelmezett Resource Manager-port
1 50300
2 50300
3 8021
4 8032
5 8050
6 8032
7 8050
8 8032

Az alábbi táblázat az összetevők alapértelmezett portjait mutatja be. Létezik Hadoop-verziófüggőség, valamint az egyéni konfiguráció lehetősége, amely nem használja az alapértelmezett port-hozzárendelést.

Hadoop-fürtösszetevő Alapértelmezett port
NameNode 8020
DataNode (Adatátvitel, nem jogosultságú IPC-port) 50010
DataNode (Adatátvitel, jogosultsági IPC-port) 1019
Resource Manager-feladat beküldése (Hortonworks 1.3) 50300
Resource Manager-feladat beküldése (Cloudera 4.3) 8021
Resource Manager-feladat beküldése (Hortonworks 2.0 Windows rendszeren, Cloudera 5.x Linux rendszeren) 8032
Resource Manager-feladat beküldése (Hortonworks 2.x, 3.0 Linuxon, Hortonworks 2.1-3 Windows rendszeren) 8050
Resource Manager-feladatelőzmények 10020

Engedélyek

Engedély szükséges CONTROL az SQL Server adatbázisához.

Zárolás

Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.

Biztonság

A PolyBase a legtöbb külső adatforrás proxyalapú hitelesítését támogatja. Hozzon létre egy adatbázis-hatókörű hitelesítő adatot a proxyfiók létrehozásához.

A típussal HADOOP rendelkező SAS-jogkivonatok nem támogatottak. Csak akkor támogatott, ha a BLOB_STORAGE tárfiók hozzáférési kulcsát használja. A típussal HADOOP és SAS-hitelesítő adatokkal rendelkező külső adatforrás létrehozása a következő hibával meghiúsul:

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

Példák

Fontos

További információ a PolyBase telepítéséről és engedélyezéséről: PolyBase telepítése Windows rendszeren

Egy. Külső adatforrás létrehozása a Hadoopra való hivatkozáshoz

Ha külső adatforrást szeretne létrehozni a Hortonworks HDP- vagy Cloudera CDH Hadoop-fürtre való hivatkozáshoz, adja meg a Hadoop Namenode és a port gépnevét vagy IP-címét.

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

B. Külső adatforrás létrehozása a Hadoopra való hivatkozáshoz, ha engedélyezve van a leküldéses leküldés

Adja meg a RESOURCE_MANAGER_LOCATION leküldéses számítás engedélyezésének lehetőségét a PolyBase-lekérdezésekhez készült Hadoopban. Ha engedélyezve van, a PolyBase költségalapú döntést hoz annak megállapításához, hogy a lekérdezési számítást le kell-e küldeni a Hadoopnak.

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

C. Külső adatforrás létrehozása a Kerberos által védett Hadoopra való hivatkozáshoz

Annak ellenőrzéséhez, hogy a Hadoop-fürt Kerberos-védelem alatt áll-e, ellenőrizze a Hadoop core-site.xmltulajdonság értékét hadoop.security.authentication . Kerberos által védett Hadoop-fürtre való hivatkozáshoz meg kell adnia egy adatbázis-hatókörű hitelesítő adatot, amely tartalmazza a Kerberos-felhasználónevet és -jelszót. Az adatbázis főkulcsa az adatbázis hatókörébe tartozó hitelesítőadat-titkos kód titkosítására szolgál.

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

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

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

D. Külső adatforrás létrehozása az Azure Storage-adatokhoz való hozzáféréshez a wasb:// felület használatával

Ebben a példában a külső adatforrás egy Azure V2 Storage-fiók neve logs. A tárolóedényt nevezik dailyel . Az Azure Storage külső adatforrása csak adatátvitelre használható. Nem támogatja a predikátum leküldését. A hierarchikus névterek nem támogatottak az adatok interfészen keresztüli wasb:// elérésekor. Az Azure Storage-hoz wasbwasbsvaló csatlakozáskor a hitelesítést tárfiók-kulccsal kell elvégezni, nem pedig közös hozzáférésű jogosultságkóddal (SAS).

Ez a példa bemutatja, hogyan hozhatja létre az adatbázis hatókörébe tartozó hitelesítő adatokat egy Azure V2 Storage-fiók hitelesítéséhez. Adja meg az Azure Storage-fiókkulcsot az adatbázis hitelesítőadat-titkos kódjában. Bármilyen sztringet megadhat az adatbázis hatókörébe tartozó hitelesítő identitásban, mivel az nem használható az Azure Storage-beli hitelesítés során.

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

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

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

Példák: Tömeges műveletek

Fontos

Ne adjon hozzá záró /, fájlnevet vagy közös hozzáférésű jogosultságkód-paramétereket az LOCATION URL-cím végén, amikor külső adatforrást konfigurál tömeges műveletekhez.

E. Külső adatforrás létrehozása az Azure Storage-ból adatokat beolvasó tömeges műveletekhez

A következőkre vonatkozik: SQL Server 2017 (14.x) és újabb verziókra.

A tömeges műveletekhez használja az alábbi adatforrást a BULK INSERT vagy AZ OPENROWSET BULK használatával. A hitelesítő adatoknak identitásként kell beállítaniuk SHARED ACCESS SIGNATURE , nem szabad az SAS-jogkivonatban a kezdőt ? megadniuk, legalább olvasási engedéllyel kell rendelkezniük a betöltendő fájlon (például srt=o&sp=r), és a lejárati időszaknak érvényesnek kell lennie (minden dátum UTC-időpontban van). A közös hozzáférésű jogosultságkódokkal kapcsolatos további információkért lásd: Közös hozzáférésű jogosultságkódok (SAS) használata.

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

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

A példa használatban való megtekintéséhez lásd a TÖMEGES BESZÚRÁS című témakört.

Áttekintés: SQL Server 2019

A következővonatkozik: SQL Server 2019 (15.x)

Létrehoz egy külső adatforrást a PolyBase-lekérdezésekhez. A külső adatforrások kapcsolat létesítésére és az elsődleges használati esetek támogatására szolgálnak:

Megjegyzés:

Ez a szintaxis az SQL Server különböző verzióiban eltérő. A verzióválasztó legördülő listában válassza ki a megfelelő verziót.
Az SQL Server 2022 (16.x) funkcióinak megtekintéséhez látogasson el a CREATE EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁS LÉTREHOZÁSA) webhelyre.

Megjegyzés:

Ez a szintaxis az SQL Server különböző verzióiban eltérő. A verzióválasztó legördülő listában válassza ki a megfelelő verziót.
Az SQL Server 2022 (16.x) funkcióinak megtekintéséhez látogasson el a CREATE EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁS LÉTREHOZÁSA) webhelyre.

Transact-SQL szintaxis konvenciók

Az SQL Server 2019 szintaxisa

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

Érvek

data_source_name

Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az SQL Server adatbázisában.

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

Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.

Külső adatforrás Csatlakozó helyének előtagja Hely elérési út Támogatott helyek termék/szolgáltatás szerint Hitelesítés
Cloudera CDH vagy Hortonworks HDP hdfs <Namenode>[:port] SQL Server 2016 (13.x) – SQL Server 2019 (15.x) Névtelen vagy alapszintű hitelesítés
Azure Storage-fiók (V2) wasb[s] <container>@<storage_account>.blob.core.windows.net Az SQL Server 2016-tól kezdve (13.x)
A hierarchikus névtér nem támogatott
Azure Storage-fiókkulcs
SQL Server sqlserver <server_name>[\<instance_name>][:port] Az SQL Server 2019-től kezdve (15.x) Csak SQL-hitelesítés
Jóslat oracle <server_name>[:port] Az SQL Server 2019-től kezdve (15.x) Csak alapszintű hitelesítés
Teradata teradata <server_name>[:port] Az SQL Server 2019-től kezdve (15.x) Csak alapszintű hitelesítés
MongoDB vagy Cosmos DB API a MongoDB-hez mongodb <server_name>[:port] Az SQL Server 2019-től kezdve (15.x) Csak alapszintű hitelesítés
Általános ODBC odbc <server_name>[:port] Az SQL Server 2019-től kezdve (15.x) – csak Windows rendszeren Csak alapszintű hitelesítés
Tömeges műveletek https <storage_account>.blob.core.windows.net/<container> Az SQL Server 2017-től kezdve (14.x) Közös hozzáférésű jogosultságkód (SAS)
Azure Data Lake Storage Gen2 abfs[s] abfss://<container>@<storage_account>.dfs.core.windows.net Az SQL Server 2019 (15.x) CU11+-tól kezdve. Tárelérési kulcs
SQL Server Big Data-fürtök adatkészlete sqldatapool sqldatapool://controller-svc/default Csak az SQL Server 2019 Big Data-fürtökben támogatott Csak alapszintű hitelesítés
SQL Server Big Data-fürtök tárolókészlete sqlhdfs sqlhdfs://controller-svc/default Csak az SQL Server 2019 Big Data-fürtökben támogatott Csak alapszintű hitelesítés

Hely elérési útja:

  • <Namenode> = a Hadoop-fürt gépneve, névszolgáltatás URI-ja vagy IP-címe Namenode . A PolyBase-nek fel kell oldania a Hadoop-fürt által használt DNS-neveket.
  • port = Az a port, amelyen a külső adatforrás figyel. A Hadoopban a port a fs.defaultFS konfigurációs paraméterrel található. Az alapértelmezett érték a 8020.
  • <container> = az adatokat tartalmazó tárfiók tárolója. A gyökértárolók írásvédettek, az adatok nem írhatók vissza a tárolóba.
  • <storage_account> = az Azure-erőforrás tárfiókjának neve.
  • <server_name> = a gazdagép neve.
  • <instance_name> = a névvel ellátott SQL Server-példány neve. Akkor használatos, ha az SQL Server Browser Service fut a célpéldányon.

További megjegyzések és útmutatás a hely beállításához:

  • Az SQL Server adatbázismotorja nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.
  • Használja ugyanazt a külső adatforrást az összes táblához a Hadoop lekérdezése során, hogy egységes lekérdezési szemantikát biztosítson.
  • Az összekötő használatával csatlakoztathatja az sqlserver SQL Server 2019-et (15.x) egy másik SQL Serverhez vagy az Azure SQL Database-hez.
  • Adja meg a Driver={<Name of Driver>} csatlakozáskor a következőt ODBC: .
  • Az SQL Server 2019 (15.x) használata wasbs vagy abfss használata nem kötelező, de ajánlott az Azure Storage-fiókok eléréséhez, mivel az adatok biztonságos TLS/SSL-kapcsolat használatával lesznek elküldve.
  • Az abfs Azure Storage-fiókok SQL Server 2019 -től (15.x) CU11-től kezdődő elérésekor az API-k vagy abfss API-k támogatottak. További információ : Azure Blob Filesystem driver (ABFS).
  • Az Azure Storage-fiókok (V2) abfs[s] hierarchikus névterének beállítását az Azure Data Lake Storage Gen2 támogatja az SQL Server 2019 (15.x) CU11+ verziótól kezdve. A hierarchikus névtér beállítás egyébként nem támogatott, és ennek a beállításnak le kell tiltva maradnia.
  • A Sikeres PolyBase-lekérdezések Hadoop-feladatátvétel Namenode során történő biztosításához fontolja meg a Hadoop-fürt virtuális IP-címének Namenode használatát. Ha nem, hajtsa végre az ALTER EXTERNAL DATA SOURCE parancsot, hogy az új helyre mutasson.
  • sqlhdfs A sqldatapool rendszer támogatja a big data-fürt főpéldánya és tárolókészlete közötti kapcsolódást. Cloudera CDH vagy Hortonworks HDP esetén használja a .hdfs További információ az sqlhdfs SQL Server Big Data-fürtök tárolókészleteinek lekérdezéséről: HDFS lekérdezés az SQL Server 2019 Big Data-fürtben.
  • A HDFS Cloudera (CDP) és a Hortonworks (HDP) külső adatforrások SQL Server-támogatása megszűnt, és nem szerepel az SQL Server 2022 (16.x) és újabb verzióiban. További információkért tekintse meg a Nagy adathalmaz-beállításokat a Microsoft SQL Server platformon.

CONNECTION_OPTIONS = key_value_pair

Az SQL Server 2019 (15.x) és újabb verzióihoz van megadva. További beállításokat ad meg, amikor külső adatforráshoz csatlakozik ODBC . Ha több kapcsolati lehetőséget szeretne használni, különítse el őket egy pontosvesszővel.

Általános kapcsolatokra ODBC , valamint a MongoDB-hez készült SQL Server, Oracle, Teradata, MongoDB és Azure Cosmos DB API beépített ODBC összekötőire vonatkozik.

Ez key_value_pair egy adott kapcsolati lehetőség kulcsszója és értéke. Az elérhető kulcsszavak és értékek a külső adatforrás típusától függenek. Az illesztőprogram neve minimálisan kötelező, de vannak más lehetőségek is, például APP='<your_application_name>'ApplicationIntent= ReadOnly|ReadWrite amelyek szintén hasznosak, és segíthetnek a hibaelhárításban.

A lehetséges kulcsértékpárok a külső adatforrás szállítójához tartoznak. További információ az egyes szolgáltatókról: CREATE EXTERNAL DATA SOURCE (Transact-SQL) CONNECTION_OPTIONS.

Az SQL Server 2019 (15.x) 19.x kumulatív frissítése és újabb verziói további kulcsszavakat vezetnek be az Oracle TNS-fájlok támogatásához:

  • A kulcsszó TNSNamesFile megadja az Oracle-kiszolgálón található fájl elérési útját tnsnames.ora .
  • A kulcsszó ServerName a gazdagép nevének és a portnak a lecseréléséhez használt tnsnames.ora aliast adja meg.

Pushdown = ON | KI

Csak AZ SQL Server 2019-hez (15.x) van megadva. Meghatározza, hogy a számítás leküldhető-e a külső adatforrásba. Alapértelmezés szerint be van kapcsolva .

PUSHDOWN az SQL Serverhez, az Oracle-hez, a Teradata-hoz, a MongoDB-hez, a MongoDB-hez készült Azure Cosmos DB API-hoz vagy a külső adatforrás szintjén az ODBC-hez való csatlakozáskor támogatott.

A leküldéses leküldés engedélyezése vagy letiltása a lekérdezés szintjén az EXTERNALPUSHDOWN tipp használatával érhető el.

HITELESÍTŐ ADATOK = credential_name

Egy adatbázis-hatókörű hitelesítő adatot ad meg a külső adatforráshoz való hitelesítéshez.

További megjegyzések és útmutatás hitelesítő adatok létrehozásakor:

  • CREDENTIAL csak akkor szükséges, ha az adatok biztonságban vannak. CREDENTIAL nem szükséges a névtelen hozzáférést lehetővé tevő adathalmazokhoz.
  • Amikor a TYPE = BLOB_STORAGEhitelesítő adatokat identitásként kell létrehozni SHARED ACCESS SIGNATURE .
  • TYPE = BLOB_STORAGE csak tömeges műveletek esetén engedélyezett; nem hozhat létre külső táblákat külső adatforráshoz a következővel TYPE = BLOB_STORAGE: .

A közös hozzáférésű jogosultságkódok létrehozásának több módja is van:

  • SAS-jogkivonatot az Azure Portalra navigálva hozhat létre –><Your_Storage_Account> –> Közös hozzáférésű jogosultságkód –> Engedélyek konfigurálása –> SAS és kapcsolati sztring létrehozása. További információ: Közös hozzáférésű jogosultságkód létrehozása.

  • SAS-t az Azure Storage Explorerrel hozhat létre és konfigurálhat.

  • SAS-jogkivonatot programozott módon hozhat létre a PowerShell, az Azure CLI, a .NET és a REST API használatával. További információ: Korlátozott hozzáférés biztosítása az Azure Storage-erőforrásokhoz közös hozzáférésű jogosultságkódok (SAS) használatával.

  • Az SAS-jogkivonatot a következőképpen kell konfigurálni:

    • Sas-jogkivonat létrehozásakor egy kérdőjelet ('?' ) tartalmaz a jogkivonat elején. Zárja ki a bevezetőt ? , ha TITKOS kódként van konfigurálva.
    • Érvényes lejárati időtartamot használjon (minden dátum UTC-időpontban van).
  • Adjon legalább olvasási engedélyt a betöltendő fájlhoz (például srt=o&sp=r). Több közös hozzáférésű jogosultságkód is létrehozható különböző használati esetekhez. Az engedélyeket az alábbiak szerint kell megadni:

    Tevékenység Engedély
    Adatok beolvasása fájlból Olvasás
    Adatok olvasása több fájlból és almappából Olvasás és felsorolás

Példa a with CREDENTIAL and ( ésSHARED ACCESS SIGNATURETYPE = ) használatáraBLOB_STORAGE: Külső adatforrás létrehozása tömeges műveletek végrehajtásához és adatok lekérése az Azure Storage-ból az SQL Database-be

Adatbázis-hatókörű hitelesítő adatok létrehozásához lásd: CREATE DATABASE SCOPED CREDENTIAL.

TÍPUS = * [ HADOOP | BLOB_STORAGE ] *

Megadja a konfigurált külső adatforrás típusát. Ez a paraméter nem mindig szükséges, és csak a Cloudera CDH-hoz, a Hortonworks HDP-hez, egy Azure Storage-fiókhoz vagy egy 2. generációs Azure Data Lake Storage-hoz való csatlakozáskor kell megadni.

  • Az SQL Server 2019-ben (15.x) ne adja meg a TYPE értéket, hacsak nem csatlakozik a Cloudera CDH-hez, a Hortonworks HDP-hez, egy Azure Storage-fiókhoz.
  • Akkor használható HADOOP , ha a külső adatforrás a Cloudera CDH, a Hortonworks HDP, az Azure Storage-fiók vagy az Azure Data Lake Storage Gen2.
  • Akkor használható BLOB_STORAGE , ha tömeges műveleteket hajt végre az Azure Storage-fiókból a BULK INSERT vagy az OPENROWSET BULK használatával az SQL Server 2017-zel (14.x). Akkor használható HADOOP , ha külső táblát kíván létrehozni az Azure Storage-on.
  • A HDFS Cloudera (CDP) és a Hortonworks (HDP) külső adatforrások SQL Server-támogatása megszűnt, és nem szerepel az SQL Server 2022 (16.x) és újabb verzióiban. További információkért tekintse meg a Nagy adathalmaz-beállításokat a Microsoft SQL Server platformon.

Ha például TYPE = HADOOP adatokat szeretne betölteni egy Azure Storage-fiókból, olvassa el a Külső adatforrás létrehozása az Adatok azure Storage-ban való eléréséhez a wasb:// felület használatával című témakört.

RESOURCE_MANAGER_LOCATION = "ResourceManager_URI[:p ort]"

Az SQL Server 2019-ben (15.x) ne adjon meg RESOURCE_MANAGER_LOCATION, hacsak nem csatlakozik a Cloudera CDH-hoz, a Hortonworks HDP-hez, egy Azure Storage-fiókhoz.

Ezt az opcionális értéket akkor konfigurálhatja, ha csak Cloudera CDH-hez, Hortonworks HDP-hez vagy Azure Storage-fiókhoz csatlakozik. A támogatott Hadoop-verziók teljes listájáért tekintse meg a PolyBase kapcsolati konfigurációját.

RESOURCE_MANAGER_LOCATION A definiált lekérdezésoptimalizáló költségalapú döntést hoz a teljesítmény javítása érdekében. A MapReduce-feladat segítségével leküldheti a számítást a Hadoopnak. RESOURCE_MANAGER_LOCATION A beállítás jelentősen csökkentheti a Hadoop és az SQL Server között átvitt adatok mennyiségét, ami jobb lekérdezési teljesítményt eredményezhet.

Ha a Resource Manager nincs megadva, a Számítás hadoopba való leküldése le van tiltva a PolyBase-lekérdezések esetében. Ha külső adatforrást hoz létre a Hadoopra való hivatkozáshoz, a leküldéses leküldés engedélyezve van, konkrét példát és további útmutatást nyújt.

A külső adatforrás létrehozásakor a RESOURCE_MANAGER_LOCATION érték nem lesz érvényesítve. Helytelen érték megadása lekérdezési hibát okozhat a végrehajtás során, amikor leküldéses leküldést kísérel meg, mivel a megadott érték nem oldható fel.

Ahhoz, hogy a PolyBase megfelelően működjön egy Hadoop külső adatforrással, a következő Hadoop-fürtösszetevők portjainak nyitva kell lenniük:

  • HDFS-portok
    • Névcsomópont
    • Datanode
  • Erőforrás-menedzser
    • Feladat beküldése
  • Feladatelőzmények

Ha a port nincs megadva, az alapértelmezett érték a hadoop-kapcsolat konfigurációjának aktuális beállításával lesz kiválasztva.

Hadoop-kapcsolat Alapértelmezett Resource Manager-port
1 50300
2 50300
3 8021
4 8032
5 8050
6 8032
7 8050
8 8032

Az alábbi táblázat az összetevők alapértelmezett portjait mutatja be. Létezik Hadoop-verziófüggőség, valamint az egyéni konfiguráció lehetősége, amely nem használja az alapértelmezett port-hozzárendelést.

Hadoop-fürtösszetevő Alapértelmezett port
NameNode 8020
DataNode (Adatátvitel, nem jogosultságú IPC-port) 50010
DataNode (Adatátvitel, jogosultsági IPC-port) 1019
Resource Manager-feladat beküldése (Hortonworks 1.3) 50300
Resource Manager-feladat beküldése (Cloudera 4.3) 8021
Resource Manager-feladat beküldése (Hortonworks 2.0 Windows rendszeren, Cloudera 5.x Linux rendszeren) 8032
Resource Manager-feladat beküldése (Hortonworks 2.x, 3.0 Linuxon, Hortonworks 2.1-3 Windows rendszeren) 8050
Resource Manager-feladatelőzmények 10020

Engedélyek

Engedély szükséges CONTROL az SQL Server adatbázisához.

Zárolás

Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.

Biztonság

A PolyBase a legtöbb külső adatforrás proxyalapú hitelesítését támogatja. Hozzon létre egy adatbázis-hatókörű hitelesítő adatot a proxyfiók létrehozásához.

Amikor az SQL Server 2019 Big Data-fürtben lévő tárolóhoz vagy adatkészlethez csatlakozik, a rendszer átadja a felhasználó hitelesítő adatait a háttérrendszernek. Hozzon létre bejelentkezéseket az adatkészletben a hitelesítés engedélyezéséhez.

A típussal HADOOP rendelkező SAS-jogkivonatok nem támogatottak. Csak akkor támogatott, ha a BLOB_STORAGE tárfiók hozzáférési kulcsát használja. A típussal HADOOP és SAS-hitelesítő adatokkal rendelkező külső adatforrás létrehozása a következő hibával meghiúsul:

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

Példák

Fontos

További információ a PolyBase telepítéséről és engedélyezéséről: PolyBase telepítése Windows rendszeren

Egy. Külső adatforrás létrehozása az SQL Server 2019-ben az Oracle hivatkozásához

Ha oracle-ra hivatkozó külső adatforrást szeretne létrehozni, győződjön meg arról, hogy rendelkezik adatbázis-hatókörű hitelesítő adatokkal. Lehetséges, hogy engedélyezi vagy letiltja a számítási feladatok leküldését az adatforráson.

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

Az Oracle külső adatforrása is használhat proxyhitelesítést a részletes hozzáférés-vezérléshez. A proxyfelhasználók úgy konfigurálhatók, hogy korlátozott hozzáféréssel rendelkezzenek a megszemélyesített felhasználóhoz képest.

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

Alternatív megoldásként TNS-hitelesítést is használhat.

Az SQL Server 2019 (15.x) 19.x CREATE EXTERNAL DATA SOURCE kumulatív frissítésétől kezdve mostantól támogatja a TNS-fájlok használatát az Oracle-hez való csatlakozáskor.

A CONNECTION_OPTIONS paraméter ki lett bontva, és változókként használva TNSNamesFileServerName tallózik a tnsnames.ora fájlban, és kapcsolatot létesít a kiszolgálóval.

Az alábbi példában az SQL Server futásidőben megkeresi a tnsnames.ora megadott TNSNamesFile fájlhelyet, és megkeresi a megadott gazdagépet és hálózati portot 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'
);

További példák más adatforrásokra, például a MongoDB-re: A PolyBase konfigurálása külső adatok eléréséhez a MongoDB-ben.

B. Külső adatforrás létrehozása a Hadoopra való hivatkozáshoz

Ha külső adatforrást szeretne létrehozni a Hortonworks HDP- vagy Cloudera CDH Hadoop-fürtre való hivatkozáshoz, adja meg a Hadoop Namenode és a port gépnevét vagy IP-címét.

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

C. Külső adatforrás létrehozása a Hadoopra való hivatkozáshoz, ha engedélyezve van a leküldéses leküldés

Adja meg a RESOURCE_MANAGER_LOCATION leküldéses számítás engedélyezésének lehetőségét a PolyBase-lekérdezésekhez készült Hadoopban. Ha engedélyezve van, a PolyBase költségalapú döntést hoz annak megállapításához, hogy a lekérdezési számítást le kell-e küldeni a Hadoopnak.

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

D. Külső adatforrás létrehozása a Kerberos által védett Hadoopra való hivatkozáshoz

Annak ellenőrzéséhez, hogy a Hadoop-fürt Kerberos-védelem alatt áll-e, ellenőrizze a Hadoop core-site.xmltulajdonság értékét hadoop.security.authentication . Kerberos által védett Hadoop-fürtre való hivatkozáshoz meg kell adnia egy adatbázis-hatókörű hitelesítő adatot, amely tartalmazza a Kerberos-felhasználónevet és -jelszót. Az adatbázis főkulcsa az adatbázis hatókörébe tartozó hitelesítőadat-titkos kód titkosítására szolgál.

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

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

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

E. Külső adatforrás létrehozása az Azure Storage-adatokhoz való hozzáféréshez a wasb:// felület használatával

Ebben a példában a külső adatforrás egy Azure V2 Storage-fiók neve logs. A tárolóedényt nevezik dailyel . Az Azure Storage külső adatforrása csak adatátvitelre használható. Nem támogatja a predikátum leküldését. A hierarchikus névterek nem támogatottak az adatok interfészen keresztüli wasb:// elérésekor. Az Azure Storage-hoz wasbwasbsvaló csatlakozáskor a hitelesítést tárfiók-kulccsal kell elvégezni, nem pedig közös hozzáférésű jogosultságkóddal (SAS).

Ez a példa bemutatja, hogyan hozhatja létre az adatbázis hatókörébe tartozó hitelesítő adatokat egy Azure V2 Storage-fiók hitelesítéséhez. Adja meg az Azure Storage-fiókkulcsot az adatbázis hitelesítőadat-titkos kódjában. Bármilyen sztringet megadhat az adatbázis hatókörébe tartozó hitelesítő identitásban, mivel az nem használható az Azure Storage-beli hitelesítés során.

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

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

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

F. Külső adatforrás létrehozása egy elnevezett SQL Server-példány hivatkozásához PolyBase-kapcsolaton keresztül

A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók

Ha olyan külső adatforrást szeretne létrehozni, amely az SQL Server egy elnevezett példányára hivatkozik, CONNECTION_OPTIONS adja meg a példány nevét.

Az alábbi példában WINSQL2019 a gazdagép neve és SQL2019 a példány neve. 'Server=%s\SQL2019' a kulcs értékpárja.

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

Másik lehetőségként portot is használhat az SQL Server alapértelmezett példányához való csatlakozáshoz.

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

G. Külső adatforrás létrehozása az Always On rendelkezésre állási csoport olvasható másodlagos replikájára való hivatkozáshoz

A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók

Ha olyan külső adatforrást szeretne létrehozni, amely az SQL Server olvasható másodlagos replikájára hivatkozik, adja CONNECTION_OPTIONS meg a ApplicationIntent=ReadOnly. Azt is megteheti, hogy a rendelkezésre állási adatbázist a megadott Database={dbname}módon CONNECTION_OPTIONS állítja be, vagy a rendelkezésre állási adatbázist kell alapértelmezett adatbázisként beállítania az adatbázis hatókörébe tartozó hitelesítő adatokhoz használt bejelentkezéshez. Ezt a rendelkezésre állási csoport összes rendelkezésre állási replikáján kell elvégeznie.

Először hozza létre az adatbázis hatókörébe tartozó hitelesítő adatokat, és tárolja a hitelesítő adatokat egy SQL által hitelesített bejelentkezéshez. A PolyBase-hez készült SQL ODBC-összekötő csak az alapszintű hitelesítést támogatja. Az adatbázis hatókörébe tartozó hitelesítő adatok létrehozása előtt az adatbázisnak rendelkeznie kell egy fő kulccsal a hitelesítő adatok védelméhez. További információ: CREATE MASTER KEY. Az alábbi minta létrehoz egy adatbázis-hatókörű hitelesítő adatokat, és megadja a saját bejelentkezési adatait és jelszavát.

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

Ezután hozza létre az új külső adatforrást.

Függetlenül attól, hogy Database=dbname a CONNECTION_OPTIONS rendelkezésre állási adatbázis szerepel-e az adatbázis hatókörébe tartozó hitelesítő adatokban való bejelentkezés alapértelmezett adatbázisaként, a HELY paraméteren belül meg kell adnia az adatbázis nevét egy háromrészes névvel a CREATE EXTERNAL TABLE utasításban. Ilyen például a CREATE EXTERNAL TABLE (KÜLSŐ TÁBLA LÉTREHOZÁSA) című témakör.

Az alábbi példában a rendelkezésre állási csoport figyelőjének neve látható, WINSQL2019AGL és dbname annak az adatbázisnak a neve, amely a CREATE EXTERNAL TABLE utasítás célhelye lesz.

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

A rendelkezésre állási csoport átirányítási viselkedését egy külső tábla rendszernézeten ApplicationIntentvaló megadásával sys.servers és létrehozásával szemléltetheti. A következő példaszkriptben két külső adatforrás jön létre, és mindegyikhez egy külső tábla jön létre. A nézetek segítségével tesztelje, hogy melyik kiszolgáló válaszol a kapcsolatra. Hasonló eredmények érhetők el az írásvédett útválasztási funkcióval is. További információ: Always On rendelkezésre állási csoport írásvédett útválasztásának konfigurálása.

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

A rendelkezésre állási csoport adatbázisán belül hozzon létre egy visszaadandó sys.servers nézetet és a helyi példány nevét, amely segít azonosítani, hogy melyik replika válaszol a lekérdezésre. További információ: sys.servers.

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

Ezután hozzon létre egy külső táblát a forráspéldányon:

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éldák: Tömeges műveletek

Fontos

Ne adjon hozzá záró /, fájlnevet vagy közös hozzáférésű jogosultságkód-paramétereket az LOCATION URL-cím végén, amikor külső adatforrást konfigurál tömeges műveletekhez.

H. Külső adatforrás létrehozása az Azure Storage-ból adatokat beolvasó tömeges műveletekhez

A következőkre vonatkozik: SQL Server 2017 (14.x) és SQL Server 2019 (15.x)

A tömeges műveletekhez használja az alábbi adatforrást a BULK INSERT vagy AZ OPENROWSET BULK használatával. A hitelesítő adatoknak identitásként kell beállítaniuk SHARED ACCESS SIGNATURE , nem szabad az SAS-jogkivonatban a kezdőt ? megadniuk, legalább olvasási engedéllyel kell rendelkezniük a betöltendő fájlon (például srt=o&sp=r), és a lejárati időszaknak érvényesnek kell lennie (minden dátum UTC-időpontban van). A közös hozzáférésű jogosultságkódokkal kapcsolatos további információkért lásd: Közös hozzáférésű jogosultságkódok (SAS) használata.

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

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

A példa használatban való megtekintéséhez lásd a TÖMEGES BESZÚRÁS című témakört.

Én. Külső adatforrás létrehozása az Azure Storage-adatokhoz való hozzáféréshez a abfs:// felület használatával

A következőkre vonatkozik: SQL Server 2019 (15.x) CU11 és újabb

Ebben a példában a külső adatforrás egy Azure Data Lake Storage Gen2-fiók logs, amely az Azure Blob Fájlrendszer illesztőprogramját (ABFS) használja. A tárolóedényt nevezik dailyel . Az Azure Data Lake Storage Gen2 külső adatforrása csak adatátvitelre szolgál, mivel a predikátum leküldése nem támogatott.

Ez a példa bemutatja, hogyan hozhatja létre az adatbázis hatókörébe tartozó hitelesítő adatokat egy Azure Data Lake Storage Gen2-fiókhoz való hitelesítéshez. Adja meg az Azure Storage-fiókkulcsot az adatbázis hitelesítőadat-titkos kódjában. Bármilyen sztringet megadhat az adatbázis hatókörébe tartozó hitelesítő identitásban, mivel az nem használható az Azure Storage-beli hitelesítés során.

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

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

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

J. Külső adatforrás létrehozása általános ODBC-vel a PostgreSQL-hez

A korábbi példákhoz hasonlóan először hozzon létre egy adatbázis-főkulcsot és egy adatbázis-hatókörű hitelesítő adatot. Az adatbázis hatókörébe tartozó hitelesítő adatokat a rendszer a külső adatforráshoz használja. Ez a példa azt is feltételezi, hogy a postgreSQL-hez készült általános ODBC-adatszolgáltató telepítve van a kiszolgálón.

Ebben a példában az általános ODBC-adatszolgáltatót arra használjuk, hogy ugyanabban a hálózatban lévő PostgreSQL-adatbáziskiszolgálóhoz csatlakozzon, ahol a PostgreSQL-kiszolgáló POSTGRES1teljes tartományneve az alapértelmezett TCP 5432-portot használja.

CREATE EXTERNAL DATA SOURCE POSTGRES1
WITH (
    LOCATION = 'odbc://POSTGRES1.domain:5432',
    CONNECTION_OPTIONS = 'Driver={PostgreSQL Unicode(x64)};',
    CREDENTIAL = postgres_credential
);

Áttekintés: SQL Server 2022

A következővonatkozik: SQL Server 2022 (16.x) és újabb verziók

Létrehoz egy külső adatforrást a PolyBase-lekérdezésekhez. A külső adatforrások kapcsolat létesítésére és az elsődleges használati esetek támogatására szolgálnak:

Megjegyzés:

Ez a szintaxis az SQL Server különböző verzióiban eltérő. A verzióválasztó legördülő listában válassza ki a megfelelő verziót. Ez a tartalom az SQL Server 2022 (16.x) és újabb verzióira vonatkozik.

Az SQL Server 2022 szintaxisa

Szintaxis az SQL Server 2022-s és újabb verzióihoz

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

Érvek

data_source_name

Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az SQL Server adatbázisában.

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

Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.

Külső adatforrás Csatlakozó helyének előtagja Hely elérési út Támogatott helyek termék/szolgáltatás szerint Hitelesítés
Azure Storage-fiók(V2) abs abs://<container_name>@<storage_account_name>.blob.core.windows.net/
vagy
abs://<storage_account_name>.blob.core.windows.net/<container_name>
Az SQL Server 2022-től kezdve (16.x)
A hierarchikus névtér támogatott.
Közös hozzáférésű jogosultságkód (SAS)
Azure Data Lake Storage Gen2 adls adls://<container_name>@<storage_account_name>.dfs.core.windows.net/
vagy
adls://<storage_account_name>.dfs.core.windows.net/<container_name>
Az SQL Server 2022-től kezdve (16.x) Közös hozzáférésű jogosultságkód (SAS)
SQL Server sqlserver <server_name>[\<instance_name>][:port] Az SQL Server 2019-től kezdve (15.x) Csak SQL-hitelesítés
Jóslat oracle <server_name>[:port] Az SQL Server 2019-től kezdve (15.x) Csak alapszintű hitelesítés
Teradata teradata <server_name>[:port] Az SQL Server 2019-től kezdve (15.x) Csak alapszintű hitelesítés
MongoDB vagy Cosmos DB API a MongoDB-hez mongodb <server_name>[:port] Az SQL Server 2019-től kezdve (15.x) Csak alapszintű hitelesítés
Általános ODBC odbc <server_name>[:port] Az SQL Server 2019-től kezdve (15.x) – csak Windows rendszeren Csak alapszintű hitelesítés
Tömeges műveletek https <storage_account>.blob.core.windows.net/<container> Az SQL Server 2017-től kezdve (14.x) Közös hozzáférésű jogosultságkód (SAS)
S3-kompatibilis objektumtároló s3 - S3-kompatibilis: s3://<server_name>:<port>/
- AWS S3: s3://<bucket_name>.S3.amazonaws.com[:port]/<folder>
vagy s3://s3.amazonaws.com[:port]/<bucket_name>/<folder>
Az SQL Server 2022-től kezdve (16.x) Alapszintű vagy átmenő (STS) *

* Adatbázis-hatókörű hitelesítő adatoknak kell lenniük, ahol az IDENTITÁS kódolt IDENTITY = 'S3 Access Key' , és a SECRET argumentum formátuma = '<AccessKeyID>:<SecretKeyID>' vagy továbbítási (STS) engedélyezése. További információ: A PolyBase konfigurálása külső adatok S3-kompatibilis objektumtárolóban való eléréséhez.

Hely elérési útja:

  • port = Az a port, amelyen a külső adatforrás figyel. Sok esetben nem kötelező, a hálózati konfigurációtól függően.
  • <container_name> = az adatokat tartalmazó tárfiók tárolója. A gyökértárolók írásvédettek, az adatok nem írhatók vissza a tárolóba.
  • <storage_account> = az Azure-erőforrás tárfiókjának neve.
  • <server_name> = a gazdagép neve.
  • <instance_name> = a névvel ellátott SQL Server-példány neve. Akkor használatos, ha az SQL Server Browser Service fut a célpéldányon.
  • <ip_address>:<port> = Csak S3-kompatibilis objektumtárolók esetén (az SQL Server 2022-től kezdve (16.x)) az S3-kompatibilis tárolóhoz való csatlakozáshoz használt végpont és port.
  • <bucket_name> = Csak S3-kompatibilis objektumtárolók esetén (az SQL Server 2022-től kezdve (16.x)) a tárolási platformra jellemző.
  • <region> = Csak S3-kompatibilis objektumtárolók esetén (az SQL Server 2022-től kezdve (16.x)) a tárolási platformra jellemző.
  • <folder> = A tárolási útvonal része a tárolási URL-címen belül.

További megjegyzések és útmutatás a hely beállításához:

  • Az SQL Server adatbázismotorja nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.
  • Az összekötő használatával csatlakoztathatja az sqlserver SQL Server 2019-et (15.x) egy másik SQL Serverhez vagy az Azure SQL Database-hez.
  • Adja meg a Driver={<Name of Driver>} csatlakozáskor a következőt ODBC: .
  • Az Előtaggal adls rendelkező Azure Storage-fiókok (V2) hierarchikus névtérbeállítása az SQL Server 2022-ben (16.x) futó Azure Data Lake Storage Gen2-n keresztül támogatott.
  • A HDFS Cloudera (CDP) és a Hortonworks (HDP) külső adatforrások SQL Server-támogatása megszűnik, és nem szerepel az SQL Server 2022 -ben (16.x). Az SQL Server 2022-ben (16.x) nincs szükség a TYPE argumentum használatára.
  • További információ az S3-kompatibilis objektumtárolásról és a PolyBase-ről az SQL Server 2022-től (16.x) kezdődően: A PolyBase konfigurálása külső adatok S3-kompatibilis objektumtárolóban való eléréséhez. Egy parquet-fájl S3-kompatibilis objektumtárolón belüli lekérdezésére példa: Virtualize parquet file in a S3-kompatibilis objektumtárolóban a PolyBase használatával.
  • A korábbi verzióktól eltérően az SQL Server 2022-ben (16.x) az Azure Storage-fiókhoz (v2) használt előtag a következőre wasb[s]absváltozott: .
  • A korábbi verzióktól eltérően az SQL Server 2022-ben (16.x) az Azure Data Lake Storage Gen2 előtagja a következőre abfs[s]adlsváltozott: .
  • Ha például a PolyBase használatával virtualizál egy CSV-fájlt az Azure Storage-ban, olvassa el a CSV-fájl virtualizálása a PolyBase-lel című témakört.
  • Ha például a PolyBase használatával virtualizál egy deltatáblát az ADLS Gen2-ben, olvassa el a Delta tábla virtualizálása a PolyBase használatával című témakört.
  • Az SQL Server 2022 (16.x) teljes mértékben támogatja az Azure Storage-fiók 2-es (abs) és az Azure Data Lake Gen2 (adls) két URL-formátumát.
    • A LOCATION elérési út a következő formátumokat használhatja: <container>@<storage_account_name>.. (ajánlott) vagy <storage_account_name>../<container>. Például:
      • Azure Storage-fiók v2: abs://<container>@<storage_account_name>.blob.core.windows.net (ajánlott) vagy abs://<storage_account_name>.blob.core.windows.net/<container>.
  • Az Azure Data Lake Gen2 a következőket támogatja: adls://<container>@<storage_account_name>.blob.core.windows.net (ajánlott) vagy adls://<storage_account_name>.dfs.core.windows.net/<container>.

CONNECTION_OPTIONS = key_value_pair

Az SQL Server 2019 (15.x) és újabb verzióihoz van megadva. További beállításokat ad meg, amikor külső adatforráshoz csatlakozik ODBC . Ha több kapcsolati lehetőséget szeretne használni, különítse el őket egy pontosvesszővel.

Általános kapcsolatokra ODBC , valamint a MongoDB-hez készült SQL Server, Oracle, Teradata, MongoDB és Azure Cosmos DB API beépített ODBC összekötőire vonatkozik.

Ez key_value_pair egy adott kapcsolati lehetőség kulcsszója és értéke. Az elérhető kulcsszavak és értékek a külső adatforrás típusától függenek. Az illesztőprogram neve minimálisan kötelező, de vannak más lehetőségek is, például APP='<your_application_name>'ApplicationIntent= ReadOnly|ReadWrite amelyek szintén hasznosak, és segíthetnek a hibaelhárításban.

A lehetséges kulcsértékpárok az illesztőprogramra vonatkoznak. További információ az egyes szolgáltatókról: CREATE EXTERNAL DATA SOURCE (Transact-SQL) CONNECTION_OPTIONS.

Az SQL Server 2022 (16.x) 2. kumulatív frissítésétől kezdve további kulcsszavak jelentek meg az Oracle TNS-fájlok támogatásához:

  • A kulcsszó TNSNamesFile megadja az Oracle-kiszolgálón található fájl elérési útját tnsnames.ora .
  • A kulcsszó ServerName a gazdagép nevének és a portnak a lecseréléséhez használt tnsnames.ora aliast adja meg.

PUSHDOWN = BE | KI

A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók. Meghatározza, hogy a számítás leküldhető-e a külső adatforrásba. Alapértelmezés szerint be van kapcsolva.

PUSHDOWN az SQL Serverhez, az Oracle-hez, a Teradata-hoz, a MongoDB-hez, a MongoDB-hez készült Azure Cosmos DB API-hoz vagy a külső adatforrás szintjén az ODBC-hez való csatlakozáskor támogatott.

A leküldéses leküldés engedélyezése vagy letiltása a lekérdezés szintjén az EXTERNALPUSHDOWN tipp használatával érhető el.

HITELESÍTŐ ADATOK = credential_name

Egy adatbázis-hatókörű hitelesítő adatot ad meg a külső adatforráshoz való hitelesítéshez.

További megjegyzések és útmutatás hitelesítő adatok létrehozásakor:

A közös hozzáférésű jogosultságkódok létrehozásának több módja is van:

  • SAS-jogkivonatot az Azure Portalra navigálva hozhat létre –><Your_Storage_Account> –> Közös hozzáférésű jogosultságkód –> Engedélyek konfigurálása –> SAS és kapcsolati sztring létrehozása. További információ: Közös hozzáférésű jogosultságkód létrehozása.

  • SAS-t az Azure Storage Explorerrel hozhat létre és konfigurálhat.

  • SAS-jogkivonatot programozott módon hozhat létre a PowerShell, az Azure CLI, a .NET és a REST API használatával. További információ: Korlátozott hozzáférés biztosítása az Azure Storage-erőforrásokhoz közös hozzáférésű jogosultságkódok (SAS) használatával.

  • Az SAS-jogkivonatot a következőképpen kell konfigurálni:

    • Sas-jogkivonat létrehozásakor egy kérdőjelet ('?' ) tartalmaz a jogkivonat elején. Zárja ki a bevezetőt ? , ha TITKOS kódként van konfigurálva.
    • Érvényes lejárati időtartamot használjon (minden dátum UTC-időpontban van).
  • Adjon legalább olvasási engedélyt a betöltendő fájlhoz (például srt=o&sp=r). Több közös hozzáférésű jogosultságkód is létrehozható különböző használati esetekhez. Az engedélyeket az alábbiak szerint kell megadni:

    Tevékenység Engedély
    Adatok beolvasása fájlból Olvasás
    Adatok olvasása több fájlból és almappából Olvasás és felsorolás
    Külső tábla létrehozása kijelölésként (CETAS) Olvasás, létrehozás, lista és írás
  • Az Azure Blob Storage és az Azure Data Lake Gen 2 esetében:

    • Engedélyezett szolgáltatások: Blob ki kell jelölni az SAS-jogkivonat létrehozásához
  • Engedélyezett erőforrástípusok: Container és Object ki kell jelölni az SAS-jogkivonat létrehozásához

Ha például S3-kompatibilis objektumtárolót és PolyBase-t használ CREDENTIAL , tekintse meg a PolyBase konfigurálását az S3-kompatibilis objektumtárolóban lévő külső adatok eléréséhez.

Adatbázis-hatókörű hitelesítő adatok létrehozásához lásd: CREATE DATABASE SCOPED CREDENTIAL.

Engedélyek

Engedély szükséges CONTROL az SQL Server adatbázisához.

Zárolás

Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.

Biztonság

A PolyBase a legtöbb külső adatforrás proxyalapú hitelesítését támogatja. Hozzon létre egy adatbázis-hatókörű hitelesítő adatot a proxyfiók létrehozásához.

Frissítés az SQL Server 2022-re

Az SQL Server 2022-től kezdve (16.x) a Hadoop külső adatforrásai már nem támogatottak. Manuálisan kell újból létrehozni a korábban létrehozott külső adatforrásokat TYPE = HADOOP, valamint a külső adatforrást használó külső táblákat.

A felhasználóknak a külső adatforrásaikat is konfigurálniuk kell, hogy új összekötőket használjanak az Azure Storage-hoz való csatlakozáskor.

Külső adatforrás Ettől kezdve
Azure Blob Storage wasb[s] abs
ADLS Gen2 abfs[s] adls

Példák

Fontos

További információ a PolyBase telepítéséről és engedélyezéséről: PolyBase telepítése Windows rendszeren

Egy. Külső adatforrás létrehozása az SQL Serveren az Oracle-ra való hivatkozáshoz

Ha oracle-ra hivatkozó külső adatforrást szeretne létrehozni, győződjön meg arról, hogy rendelkezik adatbázis-hatókörű hitelesítő adatokkal. Lehetséges, hogy engedélyezi vagy letiltja a számítási feladatok leküldését az adatforráson.

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

Az Oracle külső adatforrása is használhat proxyhitelesítést a részletes hozzáférés-vezérléshez. A proxyfelhasználók úgy konfigurálhatók, hogy korlátozott hozzáféréssel rendelkezzenek a megszemélyesített felhasználóhoz képest.

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

Másik lehetőségként hitelesítést is végezhet TNS használatával.

Az SQL Server 2022 (16.x) 2 CREATE EXTERNAL DATA SOURCE . kumulatív frissítésétől kezdve mostantól támogatja a TNS-fájlok használatát az Oracle-hez való csatlakozáskor.

A CONNECTION_OPTIONS paraméter ki lett bontva, és változókként használva TNSNamesFileServerName tallózik a tnsnames.ora fájlban, és kapcsolatot létesít a kiszolgálóval.

Az alábbi példában az SQL Server futásidőben megkeresi a tnsnames.ora megadott TNSNamesFile fájlhelyet, és megkeresi a megadott gazdagépet és hálózati portot 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. Külső adatforrás létrehozása egy elnevezett SQL Server-példány hivatkozásához PolyBase-kapcsolaton keresztül

A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók

Ha olyan külső adatforrást szeretne létrehozni, amely az SQL Server egy elnevezett példányára hivatkozik, CONNECTION_OPTIONS adja meg a példány nevét.

Először hozza létre az adatbázis hatókörébe tartozó hitelesítő adatokat, és tárolja a hitelesítő adatokat egy SQL által hitelesített bejelentkezéshez. A PolyBase-hez készült SQL ODBC-összekötő csak az alapszintű hitelesítést támogatja. Az adatbázis hatókörébe tartozó hitelesítő adatok létrehozása előtt az adatbázisnak rendelkeznie kell egy fő kulccsal a hitelesítő adatok védelméhez. További információ: CREATE MASTER KEY. Az alábbi minta létrehoz egy adatbázis-hatókörű hitelesítő adatokat, és megadja a saját bejelentkezési adatait és jelszavát.

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

Az alábbi példában WINSQL2019 a gazdagép neve és SQL2019 a példány neve. 'Server=%s\SQL2019' a kulcs értékpárja.

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

Másik lehetőségként portot is használhat az SQL Server alapértelmezett példányához való csatlakozáshoz.

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

C. Külső adatforrás létrehozása az Always On rendelkezésre állási csoport olvasható másodlagos replikájára való hivatkozáshoz

A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók

Ha olyan külső adatforrást szeretne létrehozni, amely az SQL Server olvasható másodlagos replikájára hivatkozik, adja CONNECTION_OPTIONS meg a ApplicationIntent=ReadOnly. Azt is megteheti, hogy a rendelkezésre állási adatbázist a megadott Database={dbname}módon CONNECTION_OPTIONS állítja be, vagy a rendelkezésre állási adatbázist kell alapértelmezett adatbázisként beállítania az adatbázis hatókörébe tartozó hitelesítő adatokhoz használt bejelentkezéshez. Ezt a rendelkezésre állási csoport összes rendelkezésre állási replikáján kell elvégeznie.

Először hozza létre az adatbázis hatókörébe tartozó hitelesítő adatokat, és tárolja a hitelesítő adatokat egy SQL által hitelesített bejelentkezéshez. A PolyBase-hez készült SQL ODBC-összekötő csak az alapszintű hitelesítést támogatja. Az adatbázis hatókörébe tartozó hitelesítő adatok létrehozása előtt az adatbázisnak rendelkeznie kell egy fő kulccsal a hitelesítő adatok védelméhez. További információ: CREATE MASTER KEY. Az alábbi minta létrehoz egy adatbázis-hatókörű hitelesítő adatokat, és megadja a saját bejelentkezési adatait és jelszavát.

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

Ezután hozza létre az új külső adatforrást.

Függetlenül attól, hogy Database=dbname a CONNECTION_OPTIONS rendelkezésre állási adatbázis szerepel-e az adatbázis hatókörébe tartozó hitelesítő adatokban való bejelentkezés alapértelmezett adatbázisaként, a HELY paraméteren belül meg kell adnia az adatbázis nevét egy háromrészes névvel a CREATE EXTERNAL TABLE utasításban. Ilyen például a CREATE EXTERNAL TABLE (KÜLSŐ TÁBLA LÉTREHOZÁSA) című témakör.

Az alábbi példában a rendelkezésre állási csoport figyelőjének neve látható, WINSQL2019AGL és dbname annak az adatbázisnak a neve, amely a CREATE EXTERNAL TABLE utasítás célhelye lesz.

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

A rendelkezésre állási csoport átirányítási viselkedését egy külső tábla rendszernézeten ApplicationIntentvaló megadásával sys.servers és létrehozásával szemléltetheti. A következő példaszkriptben két külső adatforrás jön létre, és mindegyikhez egy külső tábla jön létre. A nézetek segítségével tesztelje, hogy melyik kiszolgáló válaszol a kapcsolatra. Hasonló eredmények érhetők el az írásvédett útválasztási funkcióval is. További információ: Always On rendelkezésre állási csoport írásvédett útválasztásának konfigurálása.

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

A rendelkezésre állási csoport adatbázisán belül hozzon létre egy visszaadandó sys.servers nézetet és a helyi példány nevét, amely segít azonosítani, hogy melyik replika válaszol a lekérdezésre. További információ: sys.servers.

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

Ezután hozzon létre egy külső táblát a forráspéldányon:

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. Külső adatforrás létrehozása parquet-fájl lekérdezéséhez S3-kompatibilis objektumtárolóban a PolyBase használatával

A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók

Az alábbi példaszkript létrehoz egy külső adatforrást s3_ds az SQL Server forrásfelhasználói adatbázisában. A külső adatforrás a s3_dc adatbázis hatókörébe tartozó hitelesítő adatokra hivatkozik.

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

Ellenőrizze az új külső adatforrást sys.external_data_sources.

SELECT *
FROM sys.external_data_sources;

Ezután az alábbi példa bemutatja, hogy a T-SQL használatával lekérdezhető egy S3-kompatibilis objektumtárolóban tárolt parquet fájl OPENROWSET-lekérdezésen keresztül. További információ: Parquet-fájl virtualizálása egy S3-kompatibilis objektumtárolóban a PolyBase használatával.

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

E. Külső adatforrás létrehozása általános ODBC-vel a PostgreSQL-hez

A korábbi példákhoz hasonlóan először hozzon létre egy adatbázis-főkulcsot és egy adatbázis-hatókörű hitelesítő adatot. Az adatbázis hatókörébe tartozó hitelesítő adatokat a rendszer a külső adatforráshoz használja. Ez a példa azt is feltételezi, hogy a postgreSQL-hez készült általános ODBC-adatszolgáltató telepítve van a kiszolgálón.

Ebben a példában az általános ODBC-adatszolgáltatót arra használjuk, hogy ugyanabban a hálózatban lévő PostgreSQL-adatbáziskiszolgálóhoz csatlakozzon, ahol a PostgreSQL-kiszolgáló POSTGRES1teljes tartományneve az alapértelmezett TCP 5432-portot használja.

CREATE EXTERNAL DATA SOURCE POSTGRES1
WITH (
    LOCATION = 'odbc://POSTGRES1.domain:5432',
    CONNECTION_OPTIONS = 'Driver={PostgreSQL Unicode(x64)};',
    CREDENTIAL = postgres_credential
);

Azure Storage

Közös hozzáférésű jogosultságkód létrehozása

Az Azure Blob Storage és az Azure Data Lake Storage (ADLS) Gen2 esetében a támogatott hitelesítési módszer a közös hozzáférésű jogosultságkód (SAS). A közös hozzáférésű jogosultságkód-jogkivonatok létrehozásának egyik egyszerű módja az alábbi lépések végrehajtása. További információ: CREDENTIAL.

  1. Lépjen az Azure Portalra és a kívánt tárfiókra.

  2. Keresse meg a kívánt tárolót a Data Storage menüben.

  3. Válassza ki a megosztott hozzáférési jogkivonatokat.

  4. Válassza ki a megfelelő engedélyt a kívánt művelet alapján:

    Tevékenység Engedély
    Adatok beolvasása fájlból Olvasás
    Adatok olvasása több fájlból és almappából Olvasás és felsorolás
    Külső tábla létrehozása kijelölésként (CETAS) Olvasás, létrehozás és írás
  5. Válassza ki a jogkivonat lejárati dátumát.

  6. SAS-jogkivonat és URL-cím létrehozása.

  7. Másolja ki az SAS-jogkivonatot.

F. Külső adatforrás létrehozása az Azure Blob Storage-adatokhoz való hozzáféréshez a abs:// felület használatával

A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók

Az SQL Server 2022-től kezdve (16.x) használjon egy új előtagot abs az Azure Storage-fiók 2-hez. Az abs előtag támogatja a hitelesítést a következő használatával SHARED ACCESS SIGNATURE: . Az abs előtag lecseréli wasba korábbi verziókban használt előtagot. A HADOOP már nem támogatott, nincs többé szükség a használatára TYPE = BLOB_STORAGE.

Az Azure Storage-fiókkulcsra már nincs szükség, ehelyett SAS-jogkivonatot használ, ahogy az alábbi példában látható:

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

Az Azure Blob Storage-ban tárolt CSV-fájlok elérésére vonatkozó részletesebb példákért lásd a CSV-fájlok Virtualizálása a PolyBase-lel című témakört.

G. Külső adatforrás létrehozása az adatok eléréséhez az Azure Data Lake Gen2-ben

A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók

Az SQL Server 2022-től kezdve (16.x) használjon egy új előtagot adls az Azure Data Lake Gen2-hez, a korábbi verziókban használt helyett abfs . Az adls előtag az SAS-jogkivonatot is támogatja hitelesítési módszerként az alábbi példában látható módon:

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

Az Azure Data Lake Gen2-ben tárolt deltafájlok elérésére vonatkozó részletesebb példa: A deltatábla virtualizálása a PolyBase használatával.

Példák: Tömeges műveletek

Fontos

Ne adjon hozzá záró /, fájlnevet vagy közös hozzáférésű jogosultságkód-paramétereket az LOCATION URL-cím végén, amikor külső adatforrást konfigurál tömeges műveletekhez.

H. Külső adatforrás létrehozása az Azure Storage-ból adatokat beolvasó tömeges műveletekhez

A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók.

A tömeges műveletekhez használja az alábbi adatforrást a BULK INSERT vagy AZ OPENROWSET BULK használatával. A hitelesítő adatoknak identitásként kell beállítaniuk SHARED ACCESS SIGNATURE , nem szabad az SAS-jogkivonatban a kezdőt ? megadniuk, legalább olvasási engedéllyel kell rendelkezniük a betöltendő fájlon (például srt=o&sp=r), és a lejárati időszaknak érvényesnek kell lennie (minden dátum UTC-időpontban van). A közös hozzáférésű jogosultságkódokkal kapcsolatos további információkért lásd: Közös hozzáférésű jogosultságkódok (SAS) használata.

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

Áttekintés: SQL Server 2025

Vonatkozik: SQL Server 2025 (17.x)

Létrehoz egy külső adatforrást a PolyBase-lekérdezésekhez. A külső adatforrások kapcsolat létesítésére és az elsődleges használati esetek támogatására szolgálnak:

Támogatja az Azure Arc által engedélyezett példányok menedzselt identitású kapcsolatait. Részletekért tekintse át a Connect to Azure Storage with managed identity programot a PolyBase-től.

Megjegyzés:

Ez a szintaxis az SQL Server különböző verzióiban eltérő. A verzióválasztó legördülő listában válassza ki a megfelelő verziót. Ez a tartalom az SQL Server 2025 (17.x) és későbbi verziókra vonatkozik.

Szintaxis az SQL Server 2025-ös és újabb verzióihoz

A szintaxisi konvenciókról további információt Transact-SQL szintaxiskonvenciákat.

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

Érvek

data_source_name

Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az SQL Server adatbázisában.

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

Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.

Külső adatforrás Csatlakozó helyének előtagja Hely elérési út Támogatott helyek termék/szolgáltatás szerint Hitelesítés
Azure Storage-fiók(V2) abs abs://<container_name>@<storage_account_name>.blob.core.windows.net/
vagy
abs://<storage_account_name>.blob.core.windows.net/<container_name>
Az SQL Server 2022-től kezdve (16.x)
A hierarchikus névtér támogatott.
Közös hozzáférésű jogosultságkód (SAS)
vagy
PolyBase-támogatás felügyelt identitáshoz az Azure Storage 1-be
Azure Data Lake Storage Gen2 adls adls://<container_name>@<storage_account_name>.dfs.core.windows.net/
vagy
adls://<storage_account_name>.dfs.core.windows.net/<container_name>
Az SQL Server 2022-től kezdve (16.x) Közös hozzáférésű jogosultságkód (SAS)
vagy
PolyBase-támogatás felügyelt identitáshoz az Azure Storage 1-be
SQL Server sqlserver <server_name>[\<instance_name>][:port] Az SQL Server 2019-től kezdve (15.x) Csak SQL-hitelesítés
Jóslat oracle <server_name>[:port] Az SQL Server 2019-től kezdve (15.x) Csak alapszintű hitelesítés
Teradata teradata <server_name>[:port] Az SQL Server 2019-től kezdve (15.x) Csak alapszintű hitelesítés
MongoDB vagy Cosmos DB API a MongoDB-hez mongodb <server_name>[:port] Az SQL Server 2019-től kezdve (15.x) Csak alapszintű hitelesítés
Általános ODBC odbc <server_name>[:port] Az SQL Server 2019-től kezdve (15.x) – csak Windows rendszeren Csak alapszintű hitelesítés
Tömeges műveletek https <storage_account>.blob.core.windows.net/<container> Az SQL Server 2017-től kezdve (14.x) Közös hozzáférésű jogosultságkód (SAS)
S3-kompatibilis objektumtároló s3 - S3-kompatibilis: s3://<server_name>:<port>/
- AWS S3: s3://<bucket_name>.S3.amazonaws.com[:port]/<folder>
vagy s3://s3.amazonaws.com[:port]/<bucket_name>/<folder>
Az SQL Server 2022-től kezdve (16.x) Alapszintű vagy átmenő (STS) 2

1 Az Azure Arc által engedélyezett SQL Server 2025 (17.x) példányt igényel. Részletekért tekintse át a Connect to Azure Storage with managed identity programot a PolyBase-től.

2Adatbázis-hatókörű hitelesítő adatoknak kell lenniük, ahol a IDENTITY hitelesítő adatok nehezen kódoltak IDENTITY = 'S3 Access Key' , és az SECRET argumentum formátuma = '<AccessKeyID>:<SecretKeyID>' vagy továbbítási (STS) engedélyezése. További információ: A PolyBase konfigurálása külső adatok S3-kompatibilis objektumtárolóban való eléréséhez.

Hely elérési útja:

Hely elérési út Leírás
port Az a port, amelyen a külső adatforrás figyel. Sok esetben nem kötelező, a hálózati konfigurációtól függően.
<container_name> Az adatokat tartalmazó tárfiók tárolója. A gyökértárolók írásvédettek, az adatok nem írhatók vissza a tárolóba.
<storage_account> Az Azure-erőforrás tárfiókjának neve.
<server_name> A gazdagép neve.
<instance_name> A névvel ellátott SQL Server-példány neve. Akkor használatos, ha az SQL Server Browser Service fut a célpéldányon.
<ip_address>:<port> 1 Csak S3-kompatibilis objektumtárolók esetén az S3-kompatibilis tárolóhoz való csatlakozáshoz használt végpont és port.
<bucket_name> 1 Csak az S3-kompatibilis objektumtárolók esetében, amelyek a tárolási platformra vonatkoznak.
<region> 1 Csak az S3-kompatibilis objektumtárolók esetében, amelyek a tárolási platformra vonatkoznak.
<folder> A tárolási útvonal egy része a tárolási URL-címen belül.

1 SQL Server 2022 (16.x) és újabb verziók.

További megjegyzések és útmutatás a hely beállításához:

  • Az SQL Server adatbázismotorja nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.

  • Az összekötő használatával csatlakoztathatja az sqlserver SQL Server 2019-et (15.x) egy másik SQL Serverhez vagy az Azure SQL Database-hez.

  • Adja meg a Driver={<Name of Driver>} csatlakozáskor a következőt ODBC: .

  • Az előtagot adls használó Azure Storage-fiókok (V2) hierarchikus névtérbeállítása az SQL Server 2022-ben (16.x) és újabb verziókban az Azure Data Lake Storage Gen2-n keresztül támogatott.

  • A HDFS Cloudera (CDP) és a Hortonworks (HDP) külső adatforrások SQL Server-támogatása megszűnik, és nem szerepel az SQL Server 2022 (16.x) és újabb verzióiban. Az SQL Server 2025 (17.x) verzióban nincs szükség az TYPE érvelés használatára.

  • Az SQL Server 2022 -ben (16.x) és újabb verziókban elérhető S3-kompatibilis objektumtárolásról és PolyBase-ről további információt a PolyBase konfigurálása az S3-kompatibilis objektumtárolóban lévő külső adatok eléréséhez című témakörben talál. Egy parquet-fájl S3-kompatibilis objektumtárolón belüli lekérdezésére példa: Virtualize parquet file in a S3-kompatibilis objektumtárolóban a PolyBase használatával.

Az SQL Server 2022 (16.x) és újabb verzióiban:

  • az Azure Storage-fiókhoz (v2) használt előtag a következőre wasb[s] módosult: abs

  • az Azure Data Lake Storage Gen2-hez használt előtag a következőre abfs[s] változott: adls

  • Ha például a PolyBase használatával virtualizál egy CSV-fájlt az Azure Storage-ban, olvassa el a CSV-fájl virtualizálása a PolyBase-lel című témakört.

  • Ha például a PolyBase használatával virtualizál egy deltatáblát az ADLS Gen2-ben, olvassa el a Delta tábla virtualizálása a PolyBase használatával című témakört.

  • Az SQL Server 2022 (16.x) és újabb verziói teljes mértékben támogatják az Azure Storage-fiók 2-es (abs) és az Azure Data Lake Gen2 (adls) két URL-formátumát.

    • Az LOCATION elérési út a következő formátumokat használhatja: <container>@<storage_account_name>.. (ajánlott) vagy <storage_account_name>../<container>. Például:

      • Azure Storage-fiók v2: abs://<container>@<storage_account_name>.blob.core.windows.net (ajánlott) vagy abs://<storage_account_name>.blob.core.windows.net/<container>.
  • Az Azure Data Lake Gen2 a következőket támogatja: adls://<container>@<storage_account_name>.blob.core.windows.net (ajánlott) vagy adls://<storage_account_name>.dfs.core.windows.net/<container>.

CONNECTION_OPTIONS = key_value_pair

A: SQL Server 2019 (15.x) és újabb verziókra vonatkozik.

További beállításokat ad meg, amikor külső adatforráshoz csatlakozik ODBC . Ha több kapcsolati lehetőséget szeretne használni, különítse el őket egy pontosvesszővel.

Általános kapcsolatokra ODBC , valamint a MongoDB-hez készült SQL Server, Oracle, Teradata, MongoDB és Azure Cosmos DB API beépített ODBC összekötőire vonatkozik.

Ez key_value_pair egy adott kapcsolati lehetőség kulcsszója és értéke. Az elérhető kulcsszavak és értékek a külső adatforrás típusától függenek. Az illesztőprogram neve minimálisan kötelező, de vannak más lehetőségek is, például APP='<your_application_name>'ApplicationIntent= ReadOnly|ReadWrite amelyek szintén hasznosak, és segíthetnek a hibaelhárításban.

A lehetséges kulcsértékpárok az illesztőprogramra vonatkoznak. További információ az egyes szolgáltatókról: CREATE EXTERNAL DATA SOURCE (Transact-SQL) CONNECTION_OPTIONS.

Az SQL Server 2022 (16.x) 2. kumulatív frissítésétől kezdve további kulcsszavak jelentek meg az Oracle TNS-fájlok támogatásához:

  • A kulcsszó TNSNamesFile megadja az Oracle-kiszolgálón található fájl elérési útját tnsnames.ora .
  • A kulcsszó ServerName a gazdagép nevének és a portnak a lecseréléséhez használt tnsnames.ora aliast adja meg.

Titkosítási lehetőségek az SQL Server 2025-ben (17.x)

Az SQL Server 2025-től (17.x) kezdve, amikor adatforrásként használják sqlserver , az alapértelmezett driver a Microsoft ODBC Driver 18-as verziója SQL Serverhez. A Encryption beállítás kötelező (Yesvagy NoStrict), és TrustServerCertificate elérhető (Yes vagy No). Ha Encryption nincs megadva, az alapértelmezett viselkedés az Encrypt=Yes;TrustServerCertificate=No;, és kiszolgálótanúsítványt igényel.

A TDS 8.0 protokoll használatával való csatlakozáshoz a szigorú mód (Encrypt=Strict) lett hozzáadva. Ebben a módban megbízható kiszolgálótanúsítványt kell telepíteni, és mindig ellenőrizni kell (a TrustServerCertificate figyelmen kívül hagyja). Egy új kulcsszóval HostnameInCertificatemegadhatja a tanúsítványban található várt állomásnevet, ha az eltér a megadott kiszolgálótól. HostnameInCertificate minden titkosítási módban használható, és akkor is alkalmazható, ha a kiszolgálóoldali Force Encryption beállítás engedélyezve van, ami miatt az illesztőprogram nem kötelező vagy kötelező módban ellenőrzi a tanúsítványt, kivéve, ha letiltja a használatát TrustServerCertificate.

A beállításokrólEncryption, a kiszolgálótanúsítványokról és TrustServerCertificatea windowsos SQL Serverhez készült Microsoft ODBC-illesztőprogram funkcióiról további információt talál.

Mindig a legújabb illesztőprogramot kell használnia. Ugyanakkor az SQL Server 2025 (17.x) támogatja a Microsoft ODBC Driver 17-es verzióját is az SQL Server számára a visszafelé kompatibilitás érdekében. A PolyBase által használt illesztőprogram-verzió módosításáról további információt a PolyBase SQL Server-illesztőprogram verziójának módosítása című témakörben talál.

PUSHDOWN = BE | KI

A: SQL Server 2019 (15.x) és újabb verziókra vonatkozik.

Meghatározza, hogy a számítás leküldhető-e a külső adatforrásba. Alapértelmezés szerint engedélyezve van.

PUSHDOWN az SQL Serverhez, az Oracle-hez, a Teradata-hoz, a MongoDB-hez, a MongoDB-hez készült Azure Cosmos DB API-hoz vagy a külső adatforrás szintjén az ODBC-hez való csatlakozáskor támogatott.

A leküldéses leküldés engedélyezése vagy letiltása a lekérdezés szintjén egy tipp segítségével érhető el.

HITELESÍTŐ ADATOK = credential_name

Egy adatbázis-hatókörű hitelesítő adatot ad meg a külső adatforráshoz való hitelesítéshez.

További megjegyzések és útmutatás hitelesítő adatok létrehozásakor:

A közös hozzáférésű jogosultságkódok létrehozásának több módja is van:

  • SAS-jogkivonatot úgy hozhat létre, ha az Azure Portalra><navigál, Your_Storage_Account>>Közös hozzáférésű jogosultságkód>engedélyek konfigurálása>SAS és kapcsolati sztring létrehozása. További információ: Közös hozzáférésű jogosultságkód létrehozása.

  • SAS-t az Azure Storage Explorerrel hozhat létre és konfigurálhat.

  • SAS-jogkivonatot programozott módon hozhat létre a PowerShell, az Azure CLI, a .NET és a REST API használatával. További információ: Korlátozott hozzáférés biztosítása az Azure Storage-erőforrásokhoz közös hozzáférésű jogosultságkódok (SAS) használatával.

  • Az SAS-jogkivonatot a következőképpen kell konfigurálni:

    • Sas-jogkivonat létrehozásakor egy kérdőjelet ('?' ) tartalmaz a jogkivonat elején. Zárja ki a bevezetőt ? , ha a bevezetőt a SECRET.

    • Érvényes lejárati időtartamot használjon (minden dátum UTC-időpontban van).

  • Adjon legalább olvasási engedélyt a betöltendő fájlhoz (például srt=o&sp=r). Több közös hozzáférésű jogosultságkód is létrehozható különböző használati esetekhez. Az engedélyeket az alábbiak szerint kell megadni:

    Tevékenység Engedély
    Adatok beolvasása fájlból Olvasás
    Adatok olvasása több fájlból és almappából Olvasás és felsorolás
    Külső tábla létrehozása kijelölésként (CETAS) Olvasás, létrehozás, lista és írás
  • Az Azure Blob Storage és az Azure Data Lake Gen 2 esetében:

    • Engedélyezett szolgáltatások: Blob ki kell jelölni az SAS-jogkivonat létrehozásához
  • Engedélyezett erőforrástípusok: Container és Object ki kell jelölni az SAS-jogkivonat létrehozásához

Ha például S3-kompatibilis objektumtárolót és PolyBase-t használ CREDENTIAL , tekintse meg a PolyBase konfigurálását az S3-kompatibilis objektumtárolóban lévő külső adatok eléréséhez.

Adatbázis-hatókörű hitelesítő adatok létrehozásához lásd: CREATE DATABASE SCOPED CREDENTIAL.

Engedélyek

Engedély szükséges CONTROL az SQL Server adatbázisához.

Zárolás

Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.

Biztonság

A PolyBase a legtöbb külső adatforrás proxyalapú hitelesítését támogatja. Hozzon létre egy adatbázis-hatókörű hitelesítő adatot a proxyfiók létrehozásához.

Frissítés az SQL Server 2025-re

Az SQL Server 2022 (16.x) és újabb verzióiban a Hadoop külső adatforrásai nem támogatottak. Manuálisan kell újból létrehozni a korábban létrehozott külső adatforrásokat TYPE = HADOOP, valamint a külső adatforrást használó külső táblákat.

A felhasználóknak a külső adatforrásaikat is konfigurálniuk kell, hogy új összekötőket használjanak az Azure Storage-hoz való csatlakozáskor.

Külső adatforrás Ettől kezdve
Azure Blob Storage wasb[s] Abs
ADLS Gen2 abfs[s] adls

Példák

Fontos

A PolyBase telepítéséről és engedélyezéséről további információt a PolyBase telepítése Windows rendszeren című témakörben talál.

Egy. Külső adatforrás létrehozása az SQL Serveren az Oracle-ra való hivatkozáshoz

Ha oracle-ra hivatkozó külső adatforrást szeretne létrehozni, győződjön meg arról, hogy rendelkezik adatbázis-hatókörű hitelesítő adatokkal. Lehetséges, hogy engedélyezi vagy letiltja a számítási feladatok leküldését az adatforráson.

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

Az Oracle külső adatforrása is használhat proxyhitelesítést a részletes hozzáférés-vezérléshez. A proxyfelhasználók úgy konfigurálhatók, hogy korlátozott hozzáféréssel rendelkezzenek a megszemélyesített felhasználóhoz képest.

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

Másik lehetőségként hitelesítést is végezhet TNS használatával.

Az SQL Server 2022 (16.x) 2 CREATE EXTERNAL DATA SOURCE . kumulatív frissítésétől kezdve mostantól támogatja a TNS-fájlok használatát az Oracle-hez való csatlakozáskor.

A CONNECTION_OPTIONS paraméter ki lett bontva, és változókként használva TNSNamesFileServerName tallózik a tnsnames.ora fájlban, és kapcsolatot létesít a kiszolgálóval.

Az alábbi példában az SQL Server futásidőben megkeresi a tnsnames.ora megadott TNSNamesFile fájlhelyet, és megkeresi a megadott gazdagépet és hálózati portot 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. Külső adatforrás létrehozása egy elnevezett SQL Server-példány hivatkozásához PolyBase-kapcsolaton keresztül

A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók.

Ha olyan külső adatforrást szeretne létrehozni, amely az SQL Server egy elnevezett példányára hivatkozik, CONNECTION_OPTIONS adja meg a példány nevét.

Először hozza létre az adatbázis hatókörébe tartozó hitelesítő adatokat, és tárolja a hitelesítő adatokat egy SQL által hitelesített bejelentkezéshez. A PolyBase-hez készült SQL ODBC-összekötő csak az alapszintű hitelesítést támogatja. Az adatbázis hatókörébe tartozó hitelesítő adatok létrehozása előtt az adatbázisnak rendelkeznie kell egy fő kulccsal a hitelesítő adatok védelméhez. További információ: CREATE MASTER KEY. Az alábbi minta létrehoz egy adatbázis-hatókörű hitelesítő adatokat, és megadja a saját bejelentkezési adatait és jelszavát.

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

Az alábbi példában WINSQL2019 a gazdagép neve és SQL2019 a példány neve. 'Server=%s\SQL2019' a kulcs értékpárja.

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

Másik lehetőségként portot is használhat az SQL Server alapértelmezett példányához való csatlakozáshoz.

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

C. Külső adatforrás létrehozása az Always On rendelkezésre állási csoport olvasható másodlagos replikájára való hivatkozáshoz

A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók.

Ha olyan külső adatforrást szeretne létrehozni, amely az SQL Server olvasható másodlagos replikájára hivatkozik, adja CONNECTION_OPTIONS meg a ApplicationIntent=ReadOnly. Emellett be kell állítania a rendelkezésre állási adatbázist a megadott Database={dbname}módonCONNECTION_OPTIONS, vagy a rendelkezésre állási adatbázist kell beállítania az adatbázis hatókörébe tartozó hitelesítő adatokhoz használt bejelentkezés alapértelmezett adatbázisaként. Ezt a rendelkezésre állási csoport összes rendelkezésre állási replikáján kell elvégeznie.

Először hozza létre az adatbázis hatókörébe tartozó hitelesítő adatokat, és tárolja a hitelesítő adatokat egy SQL által hitelesített bejelentkezéshez. A PolyBase-hez készült SQL ODBC-összekötő csak az alapszintű hitelesítést támogatja. Az adatbázis hatókörébe tartozó hitelesítő adatok létrehozása előtt az adatbázisnak rendelkeznie kell egy fő kulccsal a hitelesítő adatok védelméhez. További információ: CREATE MASTER KEY. Az alábbi minta létrehoz egy adatbázis-hatókörű hitelesítő adatokat, és megadja a saját bejelentkezési adatait és jelszavát.

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

Ezután hozza létre az új külső adatforrást.

Függetlenül attól, hogy Database=dbname a CONNECTION_OPTIONS rendelkezésre állási adatbázis szerepel-e az adatbázis hatókörébe tartozó hitelesítő adatokban való bejelentkezés alapértelmezett adatbázisaként, a HELY paraméteren belül meg kell adnia az adatbázis nevét egy háromrészes névvel a CREATE EXTERNAL TABLE utasításban. Ilyen például a CREATE EXTERNAL TABLE (KÜLSŐ TÁBLA LÉTREHOZÁSA) című témakör.

Az alábbi példában a rendelkezésre állási csoport figyelőjének neve látható, WINSQL2019AGL és dbname annak az adatbázisnak a neve, amely a CREATE EXTERNAL TABLE utasítás célhelye lesz.

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

A rendelkezésre állási csoport átirányítási viselkedését egy külső tábla rendszernézeten ApplicationIntentvaló megadásával sys.servers és létrehozásával szemléltetheti. A következő példaszkriptben két külső adatforrás jön létre, és mindegyikhez egy külső tábla jön létre. A nézetek segítségével tesztelje, hogy melyik kiszolgáló válaszol a kapcsolatra. Hasonló eredmények érhetők el az írásvédett útválasztási funkcióval is. További információ: Always On rendelkezésre állási csoport írásvédett útválasztásának konfigurálása.

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

A rendelkezésre állási csoport adatbázisán belül hozzon létre egy visszaadandó sys.servers nézetet és a helyi példány nevét, amely segít azonosítani, hogy melyik replika válaszol a lekérdezésre. További információ: sys.servers.

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

Ezután hozzon létre egy külső táblát a forráspéldányon:

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. Külső adatforrás létrehozása parquet-fájl lekérdezéséhez S3-kompatibilis objektumtárolóban a PolyBase használatával

A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók.

Az alábbi példaszkript létrehoz egy külső adatforrást s3_ds az SQL Server forrásfelhasználói adatbázisában. A külső adatforrás a s3_dc adatbázis hatókörébe tartozó hitelesítő adatokra hivatkozik.

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

Ellenőrizze az új külső adatforrást sys.external_data_sources.

SELECT *
FROM sys.external_data_sources;

Ezután az alábbi példa bemutatja, hogy a T-SQL használatával lekérdezhető egy S3-kompatibilis objektumtárolóban tárolt parquet fájl OPENROWSET-lekérdezésen keresztül. További információ: Parquet-fájl virtualizálása egy S3-kompatibilis objektumtárolóban a PolyBase használatával.

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

E. Külső adatforrás létrehozása általános ODBC-vel a PostgreSQL-hez

A korábbi példákhoz hasonlóan először hozzon létre egy adatbázis-főkulcsot és egy adatbázis-hatókörű hitelesítő adatot. Az adatbázis hatókörébe tartozó hitelesítő adatokat a rendszer a külső adatforráshoz használja. Ez a példa azt is feltételezi, hogy a postgreSQL-hez készült általános ODBC-adatszolgáltató telepítve van a kiszolgálón.

Ebben a példában az általános ODBC-adatszolgáltatót arra használjuk, hogy ugyanabban a hálózatban lévő PostgreSQL-adatbáziskiszolgálóhoz csatlakozzon, ahol a PostgreSQL-kiszolgáló POSTGRES1teljes tartományneve az alapértelmezett TCP 5432-portot használja.

CREATE EXTERNAL DATA SOURCE POSTGRES1
WITH (
    LOCATION = 'odbc://POSTGRES1.domain:5432',
    CONNECTION_OPTIONS = 'Driver={PostgreSQL Unicode(x64)};',
    CREDENTIAL = postgres_credential
);

Azure Storage

Közös hozzáférésű jogosultságkód létrehozása

Az Azure Blob Storage és az Azure Data Lake Gen2 esetében a támogatott hitelesítési módszer a közös hozzáférésű jogosultságkód (SAS). A közös hozzáférésű jogosultságkód-jogkivonatok létrehozásának egyik egyszerű módja az alábbi lépések végrehajtása. További információ: CREDENTIAL.

  1. Lépjen az Azure Portalra és a kívánt tárfiókra.
  2. Keresse meg a kívánt tárolót a Data Storage menüben.
  3. Válassza ki a megosztott hozzáférési jogkivonatokat.
  4. Válassza ki a megfelelő engedélyt a kívánt művelet alapján. Referenciaként használja az alábbi táblázatot:
Tevékenység Engedély
Adatok beolvasása fájlból Olvasás
Adatok olvasása több fájlból és almappából Olvasás és felsorolás
Külső tábla létrehozása kijelölésként (CETAS) Olvasás, létrehozás és írás
  1. Válassza ki a jogkivonat lejárati dátumát.
  2. SAS-jogkivonat és URL-cím létrehozása.
  3. Másolja ki az SAS-jogkivonatot.

F. Külső adatforrás létrehozása az Azure Blob Storage-adatokhoz való hozzáféréshez a abs:// felület használatával

A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók.

Használjon egy új előtagot abs az Azure Storage-fiók v2-hez. Az abs előtag támogatja a hitelesítést a következő használatával SHARED ACCESS SIGNATURE: . Az abs előtag lecseréli wasba korábbi verziókban használt előtagot. A HADOOP már nem támogatott, nincs többé szükség a használatára TYPE = BLOB_STORAGE.

Az Azure Storage-fiókkulcsra már nincs szükség, ehelyett SAS-jogkivonatot használ, ahogy az alábbi példában látható:

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

Az Azure Blob Storage-ban tárolt CSV-fájlok elérésére vonatkozó részletesebb példákért lásd a CSV-fájlok Virtualizálása a PolyBase-lel című témakört.

G. Külső adatforrás létrehozása az adatok eléréséhez az Azure Data Lake Gen2-ben

A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók.

Használjon egy új előtagot adls az Azure Data Lake Gen2-hez a korábbi verziókban használt helyett abfs . Az adls előtag az SAS-jogkivonatot is támogatja hitelesítési módszerként az alábbi példában látható módon:

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

Az Azure Data Lake Gen2-ben tárolt deltafájlok elérésére vonatkozó részletesebb példa: A deltatábla virtualizálása a PolyBase használatával.

Példák: Tömeges műveletek

Fontos

Ne adjon hozzá záró /, fájlnevet vagy közös hozzáférésű jogosultságkód-paramétereket az LOCATION URL-cím végén, amikor külső adatforrást konfigurál tömeges műveletekhez.

H. Külső adatforrás létrehozása az Azure Storage-ból adatokat beolvasó tömeges műveletekhez

A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók.

A TÖMEGES BESZÚRÁS vagy AZ OPENROWSET használatával végzett tömeges műveletekhez használja az alábbi adatforrást. A hitelesítő adatoknak identitásként kell beállítaniuk SHARED ACCESS SIGNATURE , nem szabad az SAS-jogkivonatban a kezdőt ? megadniuk, legalább olvasási engedéllyel kell rendelkezniük a betöltendő fájlon (például srt=o&sp=r), és a lejárati időszaknak érvényesnek kell lennie (minden dátum UTC-időpontban van). A közös hozzáférésű jogosultságkódokkal kapcsolatos további információkért lásd: Közös hozzáférésű jogosultságkódok (SAS) használata.

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

Én. Külső adatforrás létrehozása a TDS 8.0 használatával egy másik SQL Serverhez való csatlakozáshoz

Érvényes: SQL Server 2025 (17.x) és újabb verziók.

Ha a legújabb Microsoft ODBC Driver 18 for SQL Servert használja, az Encryption alatta CONNECTION_OPTIONSlévő lehetőséget kell használnia, és TrustServerCertificate az is támogatott. Ha Encryption nincs megadva, az alapértelmezett viselkedés az Encrypt=Yes;TrustServerCertificate=No;, és kiszolgálói tanúsítványra van szükség.

Ebben a példában sql-hitelesítést használunk. A hitelesítő adatok védelméhez adatbázis-főkulcsra (DMK) van szükség. További információ: CREATE MASTER KEY. Az alábbi minta egy adatbázis-hatókörű hitelesítő adatot hoz létre egyéni bejelentkezéssel és jelszóval.

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

A célkiszolgáló neve WINSQL2022a port 58137, és ez egy alapértelmezett példány. A beállítással Encrypt=Stricta kapcsolat TDS 8.0-t használ, és a kiszolgálótanúsítványt mindig ellenőrzi a rendszer. ebben a példában a HostnameinCertificate használt a következő WINSQL2022:

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

J. Külső adatforrás létrehozása titkosítással és TrustServerCertificate beállítással

Az előző példát követve két kódmintát láthat. Az első kódrészlet rendelkezik és Encryption be van TrustServerCertificate állítva.

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

Az alábbi kódrészlet nincs Encryption engedélyezve.

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

* SQL adatbázis *  

 

Áttekintés: Azure SQL Database

A következővonatkozik: Azure SQL Database

Külső adatforrást hoz létre rugalmas lekérdezésekhez. A külső adatforrások kapcsolat létesítésére és az elsődleges használati esetek támogatására szolgálnak:

Transact-SQL szintaxis konvenciók

Szemantika

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

Érvek

data_source_name

Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az SQL Database adatbázisában.

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

Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.

Külső adatforrás Csatlakozó helyének előtagja Hely elérési út Elérhetőség
Tömeges műveletek https <storage_account>.blob.core.windows.net/<container>
Rugalmas lekérdezés (szegmens) Nem kötelező <shard_map_server_name>.database.windows.net
Rugalmas lekérdezés (távoli) Nem kötelező <remote_server_name>.database.windows.net
EdgeHub edgehub edgehub:// Csak az Azure SQL Edge-ben érhető el. Az EdgeHub mindig helyi az Azure SQL Edge-példányhoz. Ezért nincs szükség elérési út vagy portérték megadására.
Kafka kafka kafka://<kafka_bootstrap_server_name_ip>:<port_number> Csak az Azure SQL Edge-ben érhető el.
Azure Storage-fiók (v2) abs abs://<container_name>@<storage_account_name>.blob.core.windows.net/

vagy
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/

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

Hely elérési útja:

  • <shard_map_server_name> = A szegmenstérkép-kezelőt üzemeltető logikai kiszolgáló neve az Azure-ban. Az DATABASE_NAME argumentum a szegmenstérkép üzemeltetéséhez használt adatbázist adja meg, és SHARD_MAP_NAME magát a szegmenstérképet használja.
  • <remote_server_name> = A rugalmas lekérdezés cél logikai kiszolgálójának neve. Az adatbázis neve az DATABASE_NAME argumentum használatával van megadva.

További megjegyzések és útmutatás a hely beállításához:

  • Az adatbázismotor nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.

HITELESÍTŐ ADATOK = credential_name

Egy adatbázis-hatókörű hitelesítő adatot ad meg a külső adatforráshoz való hitelesítéshez.

További megjegyzések és útmutatás hitelesítő adatok létrehozásakor:

  • Ha adatokat szeretne betölteni az Azure Storage-ból az Azure SQL Database-be, használjon egy közös hozzáférésű jogosultságkódot (SAS-jogkivonatot).
  • CREDENTIAL csak akkor szükséges, ha az adatok biztonságban vannak. CREDENTIAL nem szükséges a névtelen hozzáférést lehetővé tevő adathalmazokhoz.
  • Amikor a TYPE = BLOB_STORAGEhitelesítő adatokat identitásként kell létrehozni SHARED ACCESS SIGNATURE .
  • Ha az Azure Storage-hoz való kapcsolat a WASB[s] összekötőt használja, a hitelesítést tárfiók-kulccsal kell elvégezni, nem pedig közös hozzáférésű jogosultságkóddal (SAS).
  • Amikor TYPE = HADOOP a hitelesítő adatokat a tárfiók kulcsával kell létrehozni.SECRET
  • TYPE = BLOB_STORAGE csak tömeges műveletek esetén engedélyezett; nem hozhat létre külső táblákat külső adatforráshoz a következővel TYPE = BLOB_STORAGE: .

A közös hozzáférésű jogosultságkódok létrehozásának több módja is van:

  • SAS-jogkivonatot az Azure Portalra navigálva hozhat létre –><Your_Storage_Account> –> Közös hozzáférésű jogosultságkód –> Engedélyek konfigurálása –> SAS és kapcsolati sztring létrehozása. További információ: Közös hozzáférésű jogosultságkód létrehozása.

  • SAS-t az Azure Storage Explorerrel hozhat létre és konfigurálhat.

  • SAS-jogkivonatot programozott módon hozhat létre a PowerShell, az Azure CLI, a .NET és a REST API használatával. További információ: Korlátozott hozzáférés biztosítása az Azure Storage-erőforrásokhoz közös hozzáférésű jogosultságkódok (SAS) használatával.

  • Az SAS-jogkivonatot a következőképpen kell konfigurálni:

    • Sas-jogkivonat létrehozásakor egy kérdőjelet ('?' ) tartalmaz a jogkivonat elején. Zárja ki a bevezetőt ? , ha TITKOS kódként van konfigurálva.
    • Érvényes lejárati időtartamot használjon (minden dátum UTC-időpontban van).
  • Adjon legalább olvasási engedélyt a betöltendő fájlhoz (például srt=o&sp=r). Több közös hozzáférésű jogosultságkód is létrehozható különböző használati esetekhez. Az engedélyeket az alábbiak szerint kell megadni:

    Tevékenység Engedély
    Adatok beolvasása fájlból Olvasás
    Adatok olvasása több fájlból és almappából Olvasás és felsorolás
    Külső tábla létrehozása kijelölésként (CETAS) Olvasás, létrehozás és írás

Példa a with CREDENTIAL and ( ésSHARED ACCESS SIGNATURETYPE = ) használatáraBLOB_STORAGE: Külső adatforrás létrehozása tömeges műveletek végrehajtásához és adatok lekérése az Azure Storage-ból az SQL Database-be

Adatbázis-hatókörű hitelesítő adatok létrehozásához lásd: CREATE DATABASE SCOPED CREDENTIAL.

TÍPUS = * [ BLOB_STORAGE | RDBMS | SHARD_MAP_MANAGER ] *

Megadja a konfigurált külső adatforrás típusát. Ez a paraméter nem mindig szükséges, és csak bizonyos külső adatforrásokhoz kell megadni.

  • Adatbázisközi lekérdezésekhez használható RDBMS az SQL Database rugalmas lekérdezéseinek használatával.
  • Külső adatforrás létrehozásakor használható SHARD_MAP_MANAGER szegmenses SQL Database-adatbázishoz való csatlakozáskor.
  • A használat BLOB_STORAGE csak az https előtaggal használható. Az abd előtagokat és adls az előtagokat ne adja meg TYPE.

Fontos

Ne állítsa be TYPE , ha más külső adatforrást használ.

DATABASE_NAME = database_name

Konfigurálja ezt az argumentumot, ha a TYPE beállítás értéke RDBMS vagy SHARD_MAP_MANAGER.

TÍPUS A DATABASE_NAME értéke
RDBMS A kiszolgálón található távoli adatbázis neve, amely a következő használatával van megadva: LOCATION
SHARD_MAP_MANAGER A szegmenstérkép-kezelőként működő adatbázis neve

Ha például azt mutatja be, hogyan hozhat létre külső adatforrást, TYPE = RDBMStekintse meg az RDBMS külső adatforrásának létrehozását ismertető témakört.

SHARD_MAP_NAME = shard_map_name

Akkor használatos, ha az TYPE argumentum csak a szegmenstérkép nevének beállítására van beállítva SHARD_MAP_MANAGER .

Példa arra, hogyan hozhat létre külső adatforrást, ahol TYPE = SHARD_MAP_MANAGER tekintse meg a szegmenstérkép-kezelő külső adatforrásának létrehozását ismertető példát

Engedélyek

Engedély szükséges CONTROL az Azure SQL Database adatbázisához.

Zárolás

Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.

Példák

Egy. Szegmenstérkép-kezelő külső adatforrásának létrehozása

Ha külső adatforrást szeretne létrehozni egy SHARD_MAP_MANAGERhivatkozáshoz, adja meg azt az SQL Database-kiszolgálónevet, amely a szegmenstérkép-kezelőt üzemelteti az SQL Database-ben vagy egy SQL Server-adatbázist egy virtuális gépen.

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

Részletes oktatóanyagért tekintse meg a rugalmas horizontális particionálási (horizontális particionálás) lekérdezések használatának első lépéseit.

B. RDBMS külső adatforrás létrehozása

Ha rdBMS-re hivatkozó külső adatforrást szeretne létrehozni, adja meg az SQL Database-ben található távoli adatbázis SQL Database-kiszolgálójának nevét.

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

Az RDBMS-sel kapcsolatos részletes oktatóanyagért tekintse meg az adatbázisközi lekérdezések (függőleges particionálás) használatának első lépéseit.

Példák: Tömeges műveletek

Fontos

Ne adjon hozzá záró /, fájlnevet vagy közös hozzáférésű jogosultságkód-paramétereket az LOCATION URL-cím végén, amikor külső adatforrást konfigurál tömeges műveletekhez.

C. Külső adatforrás létrehozása az Azure Storage-ból adatokat beolvasó tömeges műveletekhez

A tömeges műveletekhez használja az alábbi adatforrást a BULK INSERT vagy AZ OPENROWSET BULK használatával. A hitelesítő adatoknak identitásként kell beállítaniuk SHARED ACCESS SIGNATURE , nem szabad az SAS-jogkivonatban a kezdőt ? megadniuk, legalább olvasási engedéllyel kell rendelkezniük a betöltendő fájlon (például srt=o&sp=r), és a lejárati időszaknak érvényesnek kell lennie (minden dátum UTC-időpontban van). A közös hozzáférésű jogosultságkódokkal kapcsolatos további információkért lásd: Közös hozzáférésű jogosultságkódok (SAS) használata.

Külső adatforrás létrehozása az Azure Blob Storage -hoz (ABS) felügyelt identitással:

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

Hozzon létre külső adatforrást az Azure Data Lake Gen2 (ADLS) számára a felhasználói identitás használatával:

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

A példa használatban való megtekintéséhez lásd a TÖMEGES BESZÚRÁS című témakört.

Példák: Azure SQL Edge

Fontos

A külső adatok Azure SQL Edge-hez való konfigurálásáról további információt az Azure SQL Edge-ben történő adatstreamelés című témakörben talál.

Egy. Külső adatforrás létrehozása a Kafkára való hivatkozáshoz

Csak az Azure SQLEdge-re vonatkozik

Ebben a példában a külső adatforrás egy Olyan Kafka-kiszolgáló, amely ip-címmel xxx.xxx.xxx.xxx és figyeli az 1900-s portot. A Kafka külső adatforrása csak adatstreamelésre használható, és nem támogatja a predikátum leküldését.

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

B. Külső adatforrás létrehozása az EdgeHubra való hivatkozáshoz

Csak az Azure SQLEdge-re vonatkozik

Ebben a példában a külső adatforrás egy EdgeHub, amely ugyanazon a peremeszközön fut, mint az Azure SQL Edge. Az edgeHub külső adatforrása csak az adatstreameléshez használható, és nem támogatja a predikátum leküldését.

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

* Azure Synapse
Elemzés *
 

 

Áttekintés: Azure Synapse Analytics

A következővonatkozik: Azure Synapse Analytics

Létrehoz egy külső adatforrást az adatvirtualizáláshoz. A külső adatforrások kapcsolat létesítésére és a külső adatforrásokból történő adatvirtualizálás és adatbetöltés elsődleges használati eseteinek támogatására szolgálnak. További információ: Külső táblák használata a Synapse SQL-sel.

Fontos

Ha külső adatforrást szeretne létrehozni egy Azure Synapse Analytics-erőforrás rugalmas lekérdezéssel történő lekérdezéséhez az Azure SQL Database használatával, olvassa el a CREATE EXTERNAL DATA SOURCE for Azure SQL Database(Külső adatforrás létrehozása az Azure SQL Database-hez) című témakört.

Transact-SQL szintaxis konvenciók

Szemantika

CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
  [ [ , ] CREDENTIAL = <credential_name> ]
  [ [ , ] TYPE = HADOOP ]
)
[ ; ]

Érvek

data_source_name

Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az Azure SQL Database-ben az Azure Synapse Analyticsben.

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

Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.

Külső adatforrás Csatlakozó helyének előtagja Hely elérési út
Data Lake Storage* Gen1 adl <storage_account>.azuredatalake.net
Data Lake Storage Gen2 abfs[s] <container>@<storage_account>.dfs.core.windows.net
Azure Blob Storage wasbs <container>@<storage_account>.blob.core.windows.net
Azure Blob Storage https <storage_account>.blob.core.windows.net/<container>/subfolders
Data Lake Storage Gen1 http[s] <storage_account>.azuredatalakestore.net/webhdfs/v1
Data Lake Storage Gen2 http[s] <storage_account>.dfs.core.windows.net/<container>/subfolders
Data Lake Storage Gen2 wasb[s] <container>@<storage_account>.blob.core.windows.net

* A Microsoft Azure Data Lake Storage Gen1 támogatása korlátozott, a Gen2 minden új fejlesztéshez ajánlott.

Külső adatforrás Csatlakozó helyének előtagja Dedikált SQL-készletek: PolyBase Dedikált SQL-készletek: natív* Kiszolgáló nélküli SQL-készletek
Data Lake Storage** Gen1 adl Nem Nem Igen
Data Lake Storage Gen2 abfs[s] Igen Igen Igen
Azure Blob Storage wasbs Igen Igen*** Igen
Azure Blob Storage https Nem Igen Igen
Data Lake Storage Gen1 http[s] Nem Nem Igen
Data Lake Storage Gen2 http[s] Igen Igen Igen
Data Lake Storage Gen2 wasb[s] Igen Igen Igen

* Az Azure Synapse Analytics kiszolgáló nélküli és dedikált SQL-készletei különböző kódbázisokat használnak az adatvirtualizáláshoz. A kiszolgáló nélküli SQL-készletek támogatják a natív adatvirtualizálási technológiát. A dedikált SQL-készletek támogatják a natív és a PolyBase-adatvirtualizálást is. A PolyBase-adatvirtualizálás akkor használatos, ha a KÜLSŐ ADATFORRÁS TYPE=HADOOPjön létre.

** A Microsoft Azure Data Lake Storage Gen1 támogatása korlátozott, a Gen2 minden új fejlesztéshez ajánlott.

A biztonságosabb wasbs összekötő használata javasolt wasb. Csak a dedikált SQL-készletek natív adatvirtualizálása támogatott (ahol a TÍPUS nem egyenlő a HADOOP-tal wasb).

Hely elérési útja:

  • <container> = az adatokat tartalmazó tárfiók tárolója. A gyökértárolók írásvédettek, az adatok nem írhatók vissza a tárolóba.
  • <storage_account> = az Azure-erőforrás tárfiókjának neve.

További megjegyzések és útmutatás a hely beállításához:

  • Az alapértelmezett beállítás az Azure Data Lake Storage Gen2 kiépítésekor használható enable secure SSL connections . Ha ez engedélyezve van, akkor biztonságos TLS/SSL-kapcsolat kiválasztásakor kell használnia abfss , bár abfss a nem biztonságos TLS-kapcsolatok esetében is működik. További információ : Azure Blob Filesystem driver (ABFS).
  • Az Azure Synapse nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.
  • Használja ugyanazt a külső adatforrást az összes táblához a Hadoop lekérdezése során, hogy egységes lekérdezési szemantikát biztosítson.
  • https: az előtag lehetővé teszi az almappák használatát az elérési úton. https nem érhető el minden adatelérési módszerhez.
  • wasbs ajánlott, mivel az adatok biztonságos TLS-kapcsolaton keresztül lesznek elküldve.
  • A hierarchikus névterek nem támogatottak az Azure V2 Storage-fiókokban, amikor az örökölt wasb:// felületen férnek hozzá az adatokhoz, de a hierarchikus névterek használatát wasbs:// támogatják.

HITELESÍTŐ ADATOK = credential_name

Opcionális. Az adatbázis hatókörébe tartozó hitelesítő adatokat ad meg a külső adatforráshoz való hitelesítéshez. A hitelesítő adatok nélküli külső adatforrás hozzáférhet a nyilvános tárfiókhoz, vagy használhatja a hívó Microsoft Entra-identitását az Azure Storage-fájlok eléréséhez.

További megjegyzések és útmutatás hitelesítő adatok létrehozásakor:

  • Ha az Azure Storage-ból vagy az Azure Data Lake Store-ból (ADLS) Gen2-ből szeretne adatokat betölteni az Azure Synapse Analyticsbe, használjon egy Azure Storage-kulcsot.
  • CREDENTIAL csak akkor szükséges, ha az adatok biztonságban vannak. CREDENTIAL nem szükséges a névtelen hozzáférést lehetővé tevő adathalmazokhoz.

Adatbázis-hatókörű hitelesítő adatok létrehozásához lásd: CREATE DATABASE SCOPED CREDENTIAL.

  • A kiszolgáló nélküli SQL-készletben az adatbázis-hatókörű hitelesítő adatok megadhatják a munkaterület felügyelt identitását, a szolgáltatásnév nevét vagy a közös hozzáférésű jogosultságkód (SAS) jogkivonatát. A felhasználói identitáson keresztüli hozzáférés, más néven a Microsoft Entra átengedése is lehetséges az adatbázis-hatókörű hitelesítő adatokban, ahogy a nyilvánosan elérhető tárterülethez való névtelen hozzáférés is. További információ: Támogatott tárterület-engedélyezési típusok.

  • A dedikált SQL-készletben az adatbázis hatókörébe tartozó hitelesítő adatok megadhatják a közös hozzáférésű jogosultságkód (SAS) jogkivonatot, a tárelérési kulcsot, a szolgáltatásnevet, a munkaterület felügyelt identitását vagy a Microsoft Entra-átengedést.

TÍPUS = HADOOP

Nem kötelező, nem ajánlott.

Csak dedikált SQL-készletekkel rendelkező TÍPUSt adhat meg. HADOOP a megadott érték az egyetlen engedélyezett érték. A külső adatforrások TYPE=HADOOP csak dedikált SQL-készletekben érhetők el.

A HADOOP használata régebbi implementációkhoz, ellenkező esetben ajánlott az újabb natív adathozzáférés használata. Ne adja meg a TYPE argumentumot az újabb natív adathozzáférés használatához.

Az Adatok Azure Storage-ból való betöltésére vonatkozó példa TYPE = HADOOP : Külső adatforrás létrehozása az Azure Data Lake Store Gen 1 vagy 2 szolgáltatásnév használatával történő hivatkozásához.

Az Azure Synapse Analytics kiszolgáló nélküli és dedikált SQL-készletei különböző kódbázisokat használnak az adatvirtualizáláshoz. A kiszolgáló nélküli SQL-készletek támogatják a natív adatvirtualizálási technológiát. A dedikált SQL-készletek támogatják a natív és a PolyBase-adatvirtualizálást is. A PolyBase-adatvirtualizálás akkor használatos, ha a KÜLSŐ ADATFORRÁS TYPE=HADOOPjön létre.

Engedélyek

Az adatbázishoz CONTROL engedély szükséges.

Zárolás

Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.

Biztonság

A legtöbb külső adatforrás támogatja a proxyalapú hitelesítést egy adatbázis-hatókörű hitelesítő adatok használatával a proxyfiók létrehozásához.

A közös hozzáférésű jogosultságkód (SAS) kulcsok támogatottak az Azure Data Lake Store Gen 2 Storage-fiókokhoz való hitelesítéshez. Azoknak az ügyfeleknek, akik közös hozzáférésű jogosultságkóddal szeretnének hitelesíteni, létre kell hozniuk egy adatbázis-hatókörű hitelesítő adatot, ahol IDENTITY = "Shared Access Signature" egy SAS-jogkivonatot kell megadniuk titkos kulcsként.

Ha adatbázis-hatókörű hitelesítő adatot hoz létre, ahol IDENTITY = "Shared Access Signature" titkos kulcsértéket használ, a következő hibaüzenet jelenik meg:

'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éldák

Egy. Külső adatforrás létrehozása az Azure Storage-adatokhoz való hozzáféréshez a wasb:// felület használatával

Ebben a példában a külső adatforrás egy V2 nevű logsAzure Storage-fiók. A tárolóedényt nevezik dailyel . Az Azure Storage külső adatforrása csak adatátvitelre használható. Nem támogatja a predikátum leküldését. A hierarchikus névterek nem támogatottak az adatok interfészen keresztüli wasb:// elérésekor. Az Azure Storage-hoz wasbwasbsvaló csatlakozáskor a hitelesítést tárfiók-kulccsal kell elvégezni, nem pedig közös hozzáférésű jogosultságkóddal (SAS).

Ez a példa az örökölt HADOOP Java-alapú hozzáférési módszert használja. Az alábbi minta bemutatja, hogyan hozhatja létre az adatbázis hatókörébe tartozó hitelesítő adatokat az Azure Storage-beli hitelesítéshez. Adja meg az Azure Storage-fiókkulcsot az adatbázis hitelesítőadat-titkos kódjában. Bármilyen sztringet megadhat az adatbázis hatókörébe tartozó hitelesítő identitásban, mivel az nem használható az Azure Storage-beli hitelesítés során.

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

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

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

B. Külső adatforrás létrehozása az 1. vagy 2. generációs Azure Data Lake Store-ra való hivatkozáshoz szolgáltatásnév használatával

Az Azure Data Lake Store-kapcsolat alapja az ADLS URI és a Microsoft Entra-alkalmazás szolgáltatásnév. Az alkalmazás létrehozásának dokumentációja megtalálható a Data Lake Store-hitelesítésben a Microsoft Entra ID használatával.

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

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

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

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

C. Külső adatforrás létrehozása az Azure Data Lake Store Gen2-ra való hivatkozáshoz a tárfiókkulcs használatával

-- 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. Külső adatforrás létrehozása az Azure Data Lake Store Gen2-be abfs://

Nem kell megadni SECRET , amikor Azure Data Lake Store Gen2 fiókhoz csatlakozol kezelt identitásokkal.

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

* Elemzés
Platformrendszer (PDW) *
 

 

Áttekintés: Elemzési platformrendszer

A következőkre vonatkozik: Elemzési platformrendszer (PDW)

Létrehoz egy külső adatforrást a PolyBase-lekérdezésekhez. Külső adatforrásokat használnak a kapcsolódás kialakítására, és a következő felhasználási esetet támogatják: adatvirtualizáció és adatbetöltés a PolyBase használatával az SQL Serverben.

Transact-SQL szintaxis konvenciók

Szemantika

CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
  ( [ LOCATION = '<prefix>://<path>[:<port>]' ]
    [ [ , ] CREDENTIAL = <credential_name> ]
    [ [ , ] TYPE = HADOOP ]
    [ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]

Érvek

data_source_name

Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az Analytics Platform System (PDW) kiszolgálón belül.

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

Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.

Külső adatforrás Csatlakozó helyének előtagja Hely elérési út
Cloudera CDH vagy Hortonworks HDP hdfs <Namenode>[:port]
Azure Storage-fiók wasb[s] <container>@<storage_account>.blob.core.windows.net

Hely elérési útja:

  • <Namenode> = a Hadoop-fürt gépneve, névszolgáltatás URI-ja vagy IP-címe Namenode . A PolyBase-nek fel kell oldania a Hadoop-fürt által használt DNS-neveket.
  • port = Az a port, amelyen a külső adatforrás figyel. A Hadoopban a port a fs.defaultFS konfigurációs paraméterrel található. Az alapértelmezett érték a 8020.
  • <container> = az adatokat tartalmazó tárfiók tárolója. A gyökértárolók írásvédettek, az adatok nem írhatók vissza a tárolóba.
  • <storage_account> = az Azure-erőforrás tárfiókjának neve.

További megjegyzések és útmutatás a hely beállításához:

  • A PDW-motor nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.
  • Használja ugyanazt a külső adatforrást az összes táblához a Hadoop lekérdezése során, hogy egységes lekérdezési szemantikát biztosítson.
  • wasbs ajánlott, mivel az adatok biztonságos TLS-kapcsolaton keresztül lesznek elküldve.
  • A hierarchikus névterek nem támogatottak az Azure Storage-fiókok wasb://.
  • A Sikeres PolyBase-lekérdezések Hadoop-feladatátvétel Namenode során történő biztosításához fontolja meg a Hadoop-fürt virtuális IP-címének Namenode használatát. Ha nem, hajtsa végre az ALTER EXTERNAL DATA SOURCE parancsot, hogy az új helyre mutasson.

HITELESÍTŐ ADATOK = credential_name

Egy adatbázis-hatókörű hitelesítő adatot ad meg a külső adatforráshoz való hitelesítéshez.

További megjegyzések és útmutatás hitelesítő adatok létrehozásakor:

  • Ha adatokat szeretne betölteni az Azure Storage-ból az Azure Synapse-ba vagy a PDW-be, használjon egy Azure Storage-kulcsot.
  • CREDENTIAL csak akkor szükséges, ha az adatok biztonságban vannak. CREDENTIAL nem szükséges a névtelen hozzáférést lehetővé tevő adathalmazokhoz.

TÍPUS = * [ HAUOP ] *

Megadja a konfigurált külső adatforrás típusát. Ez a paraméter nem mindig szükséges.

  • A HADOOP használata, ha a külső adatforrás a Cloudera CDH, a Hortonworks HDP vagy az Azure Storage.

Az Adatok Azure Storage-ból való betöltésére vonatkozó példa TYPE = HADOOP : Külső adatforrás létrehozása a Hadoopra való hivatkozáshoz.

RESOURCE_MANAGER_LOCATION = "ResourceManager_URI[:p ort]"

Az SQL Server 2019-ben (15.x) ne adjon meg RESOURCE_MANAGER_LOCATION, hacsak nem csatlakozik a Cloudera CDH-hoz, a Hortonworks HDP-hez, egy Azure Storage-fiókhoz.

Ezt az opcionális értéket akkor konfigurálhatja, ha csak Cloudera CDH-hez, Hortonworks HDP-hez vagy Azure Storage-fiókhoz csatlakozik. A támogatott Hadoop-verziók teljes listájáért tekintse meg a PolyBase kapcsolati konfigurációját.

RESOURCE_MANAGER_LOCATION A definiált lekérdezésoptimalizáló költségalapú döntést hoz a teljesítmény javítása érdekében. A MapReduce-feladat segítségével leküldheti a számítást a Hadoopnak. A megadásával RESOURCE_MANAGER_LOCATION jelentősen csökkenthető a Hadoop és az SQL között átvitt adatok mennyisége, ami jobb lekérdezési teljesítményt eredményezhet.

Ha a Resource Manager nincs megadva, a Számítás hadoopba való leküldése le van tiltva a PolyBase-lekérdezések esetében. Ha külső adatforrást hoz létre a Hadoopra való hivatkozáshoz, a leküldéses leküldés engedélyezve van, konkrét példát és további útmutatást nyújt.

A külső adatforrás létrehozásakor a RESOURCE_MANAGER_LOCATION érték nem lesz érvényesítve. Helytelen érték megadása lekérdezési hibát okozhat a végrehajtás során, amikor leküldéses leküldést kísérel meg, mivel a megadott érték nem oldható fel.

Ahhoz, hogy a PolyBase megfelelően működjön egy Hadoop külső adatforrással, a következő Hadoop-fürtösszetevők portjainak nyitva kell lenniük:

  • HDFS-portok
    • Névcsomópont
    • Datanode
  • Erőforrás-menedzser
    • Feladat beküldése
  • Feladatelőzmények

Ha a port nincs megadva, az alapértelmezett érték a hadoop-kapcsolat konfigurációjának aktuális beállításával lesz kiválasztva.

Hadoop-kapcsolat Alapértelmezett Resource Manager-port
1 50300
2 50300
3 8021
4 8032
5 8050
6 8032
7 8050

Az alábbi táblázat az összetevők alapértelmezett portjait mutatja be. Létezik Hadoop-verziófüggőség, valamint az egyéni konfiguráció lehetősége, amely nem használja az alapértelmezett port-hozzárendelést.

Hadoop-fürtösszetevő Alapértelmezett port
NameNode 8020
DataNode (Adatátvitel, nem jogosultságú IPC-port) 50010
DataNode (Adatátvitel, jogosultsági IPC-port) 1019
Resource Manager-feladat beküldése (Hortonworks 1.3) 50300
Resource Manager-feladat beküldése (Cloudera 4.3) 8021
Resource Manager-feladat beküldése (Hortonworks 2.0 Windows rendszeren, Cloudera 5.x Linux rendszeren) 8032
Resource Manager-feladat beküldése (Hortonworks 2.x, 3.0 Linuxon, Hortonworks 2.1-3 Windows rendszeren) 8050
Resource Manager-feladatelőzmények 10020

Engedélyek

Engedélyre van szükség CONTROL az adatbázishoz az Analytics Platform Systemben (PDW).

Megjegyzés:

A PDW korábbi kiadásaiban hozzon létre külső adatforráshoz szükséges ALTER ANY EXTERNAL DATA SOURCE engedélyeket.

Zárolás

Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.

Biztonság

A PolyBase a legtöbb külső adatforrás proxyalapú hitelesítését támogatja. Hozzon létre egy adatbázis-hatókörű hitelesítő adatot a proxyfiók létrehozásához.

A típussal HADOOP rendelkező SAS-jogkivonatok nem támogatottak. Csak akkor támogatott, ha a BLOB_STORAGE tárfiók hozzáférési kulcsát használja. A típussal HADOOP és SAS-hitelesítő adatokkal rendelkező külső adatforrás létrehozása a következő hibával meghiúsul:

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

Példák

Egy. Külső adatforrás létrehozása a Hadoopra való hivatkozáshoz

Ha külső adatforrást szeretne létrehozni a Hortonworks HDP-re vagy a Cloudera CDH-re való hivatkozáshoz, adja meg a Hadoop Namenode és a port gépnevét vagy IP-címét.

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

B. Külső adatforrás létrehozása a Hadoopra való hivatkozáshoz, ha engedélyezve van a leküldéses leküldés

Adja meg a RESOURCE_MANAGER_LOCATION leküldéses számítás engedélyezésének lehetőségét a PolyBase-lekérdezésekhez készült Hadoopban. Ha engedélyezve van, a PolyBase költségalapú döntést hoz annak megállapításához, hogy a lekérdezési számítást le kell-e küldeni a Hadoopnak.

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

C. Külső adatforrás létrehozása a Kerberos által védett Hadoopra való hivatkozáshoz

Annak ellenőrzéséhez, hogy a Hadoop-fürt Kerberos-védelem alatt áll-e, ellenőrizze a Hadoop core-site.xmltulajdonság értékét hadoop.security.authentication . Kerberos által védett Hadoop-fürtre való hivatkozáshoz meg kell adnia egy adatbázis-hatókörű hitelesítő adatot, amely tartalmazza a Kerberos-felhasználónevet és -jelszót. Az adatbázis főkulcsa az adatbázis hatókörébe tartozó hitelesítőadat-titkos kód titkosítására szolgál.

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

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

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

D. Külső adatforrás létrehozása az Azure Storage-adatokhoz való hozzáféréshez a wasb:// felület használatával

Ebben a példában a külső adatforrás egy Azure V2 Storage-fiók neve logs. A tárolóedényt nevezik dailyel . Az Azure Storage külső adatforrása csak adatátvitelre használható. Nem támogatja a predikátum leküldését. A hierarchikus névterek nem támogatottak az adatok interfészen keresztüli wasb:// elérésekor. Az Azure Storage-hoz wasbwasbsvaló csatlakozáskor a hitelesítést tárfiók-kulccsal kell elvégezni, nem pedig közös hozzáférésű jogosultságkóddal (SAS).

Ez a példa bemutatja, hogyan hozhatja létre az adatbázis hatókörébe tartozó hitelesítő adatokat az Azure Storage-ba történő hitelesítéshez. Adja meg az Azure Storage-fiók kulcsát az adatbázis hitelesítőadat-titkos kódjában. Bármilyen sztringet megadhat az adatbázis hatókörébe tartozó hitelesítő identitásban, mivel az nem használható az Azure Storage-beli hitelesítés során.

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

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

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

* felügyelt SQL-példány *  

Áttekintés: Felügyelt Azure SQL-példány

A következőkre vonatkozik: Felügyelt Azure SQL-példány

Létrehoz egy külső adatforrást a felügyelt Azure SQL-példányban. További információ: Felügyelt Azure SQL-példány adatvirtualizálása.

A felügyelt Azure SQL-példány adatvirtualizálása különböző fájlformátumokban biztosít hozzáférést a külső adatokhoz az OPENROWSET vagy a CREATE EXTERNAL TABLE használatával.

Transact-SQL szintaxis konvenciók

Szemantika

CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
  ( [ LOCATION = '<prefix>://<path>[:<port>]' ]
    [ [ , ] CREDENTIAL = <credential_name> ]
  )
[ ; ]

Érvek

data_source_name

Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az adatbázisban.

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

Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.

Külső adatforrás Helyelőtag Hely elérési út
Azure Blob Storage abs abs://<container>@<storage_account>.blob.core.windows.net/<path>/<file_name>
Azure Data Lake Service Gen2 adls adls://<container>@<storage_account>.dfs.core.windows.net/<path>/<file_name>

Az adatbázismotor nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.

Ne adjon hozzá záró /, fájlnevet vagy közös hozzáférésű jogosultságkód-paramétereket az LOCATION URL-cím végén, amikor külső adatforrást konfigurál tömeges műveletekhez.

HITELESÍTŐ ADATOK = credential_name

Egy adatbázis-hatókörű hitelesítő adatot ad meg a külső adatforráshoz való hitelesítéshez.

További megjegyzések és útmutatás hitelesítő adatok létrehozásakor:

  • Ha adatokat szeretne betölteni az Azure Storage-ból a felügyelt Azure SQL-példányba, használjon egy közös hozzáférésű jogosultságkódot (SAS-jogkivonatot).
  • CREDENTIAL csak akkor szükséges, ha az adatok biztonságban vannak. CREDENTIAL nem szükséges a névtelen hozzáférést lehetővé tevő adathalmazokhoz.
  • Ha hitelesítő adatokra van szükség, a hitelesítő adatokat identitással Managed Identity vagy SHARED ACCESS SIGNATURE identitásként kell létrehozni. Adatbázis-hatókörű hitelesítő adatok létrehozásához lásd: CREATE DATABASE SCOPED CREDENTIAL.

A felügyelt szolgáltatás identitásának használata az adatbázis hatókörébe tartozó hitelesítő adatokhoz:

  • Részletez WITH IDENTITY = 'Managed Identity'

  • Használja a felügyelt Azure SQL-példány rendszer által hozzárendelt felügyeltszolgáltatás-identitását, amelyet engedélyezni kell, ha erre a célra szeretné használni.

Közös hozzáférésű jogosultságkód (SAS) létrehozása az adatbázis hatókörébe tartozó hitelesítő adatokhoz:

  • Részletez WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = ...

  • A közös hozzáférésű jogosultságkódok létrehozásának több módja is van:

  • Az SAS-jogkivonatot a következőképpen kell konfigurálni:

    • Sas-jogkivonat létrehozásakor egy kérdőjelet ('?' ) tartalmaz a jogkivonat elején. Zárja ki a bevezetőt ? , ha TITKOS kódként van konfigurálva.
    • Érvényes lejárati időtartamot használjon (minden dátum UTC-időpontban van).
  • Adjon legalább olvasási engedélyt a betöltendő fájlhoz (például srt=o&sp=r). Több közös hozzáférésű jogosultságkód is létrehozható különböző használati esetekhez. Az engedélyeket az alábbiak szerint kell megadni:

    Tevékenység Engedély
    Adatok beolvasása fájlból Olvasás
    Adatok olvasása több fájlból és almappából Olvasás és felsorolás
    Külső tábla létrehozása kijelölésként (CETAS) Olvasás, létrehozás és írás

Engedélyek

Engedély szükséges CONTROL a felügyelt Azure SQL-példány adatbázisához.

Zárolás

Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.

Példák

További példákért tekintse meg a felügyelt Azure SQL-példány adatvirtualizálását.

Egy. Külső adatok lekérdezése felügyelt Azure SQL-példányból OPENROWSET-lel vagy külső táblával

További példákért lásd a CREATE EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁS LÉTREHOZÁSA ) vagy a felügyelt Azure SQL-példány adatvirtualizálása című témakört.

  1. Ha nem létezik, hozza létre az adatbázis főkulcsát.

    -- Optional: Create MASTER KEY if it doesn't exist in the database:
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong Password>'
    GO
    
  2. Hozza létre az adatbázis hatókörébe tartozó hitelesítő adatokat EGY SAS-jogkivonat használatával. Felügyelt identitást is használhat.

    CREATE DATABASE SCOPED CREDENTIAL MyCredential
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
    SECRET = '<KEY>' ; --Removing leading '?'
    GO
    
  3. Hozza létre a külső adatforrást a hitelesítő adatok használatával.

    --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. A külső adatforrás parquet adatfájljának lekérdezése az OPENROWSET T-SQL szintaxissal, sémakövetkeztetés alapján, hogy a séma ismerete nélkül gyorsan felderítse az adatokat.

    --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. Vagy az adatok lekérdezése az OPENROWSET használatával a WITH záradékkal, ahelyett, hogy sémakövetkeztetésre támaszkodna, ami lekérdezheti a végrehajtási költséget. CSV esetén a sémakövetkeztetés nem támogatott.

    --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. Vagy hozzon létre egy KÜLSŐ FÁJLFORMÁTUMOT és egy KÜLSŐ TÁBLÁZATot az adatok helyi táblaként való lekérdezéséhez.

    -- Or, create an EXTERNAL FILE FORMAT and an EXTERNAL TABLE
    --Create external file format
    CREATE EXTERNAL FILE FORMAT DemoFileFormat
    WITH (FORMAT_TYPE = PARQUET)
    GO
    
    --Create external table:
    CREATE EXTERNAL TABLE tbl_TaxiRides (
        vendorID VARCHAR(100) COLLATE Latin1_General_BIN2,
        tpepPickupDateTime DATETIME2,
        tpepDropoffDateTime DATETIME2,
        passengerCount INT,
        tripDistance FLOAT,
        puLocationId VARCHAR(8000),
        doLocationId VARCHAR(8000),
        startLon FLOAT,
        startLat FLOAT,
        endLon FLOAT,
        endLat FLOAT,
        rateCodeId SMALLINT,
        storeAndFwdFlag VARCHAR(8000),
        paymentType VARCHAR(8000),
        fareAmount FLOAT,
        extra FLOAT,
        mtaTax FLOAT,
        improvementSurcharge VARCHAR(8000),
        tipAmount FLOAT,
        tollsAmount FLOAT,
        totalAmount FLOAT
    )
    WITH (
        LOCATION = 'yellow/puYear=*/puMonth=*/*.parquet',
        DATA_SOURCE = NYCTaxiExternalDataSource,
        FILE_FORMAT = MyFileFormat\.\./\.\./\.\./azure-sql/
    );
    GO
    
    --Then, query the data via an external table with T-SQL:
    SELECT TOP 10 *
    FROM tbl_TaxiRides;
    GO
    

*Microsoft Fabric Data Warehouse *

Áttekintés: Microsoft Fabric Data Warehouse

A következőkre vonatkozik: Fabric Data Warehouse

Létrehoz egy külső adatforrást.

Transact-SQL szintaxis konvenciók

Szemantika

CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
  ( LOCATION = '<prefix>://<path>[:<port>]' )
[ ; ]

Érvek

data_source_name

Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az adatbázisban.

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

Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.

Külső adatforrás Helyelőtag Hely elérési út
Azure Blob Storage https https://<storage_account>.blob.core.windows.net/<container>/<path>
Azure Data Lake Service Gen2 abfss abfss://<container>@<storage_account>.dfs.core.windows.net/<path>

Az adatbázismotor nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor.

Ne adjon hozzá záró /, fájlnevet vagy közös hozzáférésű jogosultságkód-paramétereket az LOCATION URL-cím végén, amikor külső adatforrást konfigurál tömeges műveletekhez.

Engedélyek

Ha a céltárfiók privát, az egyszerű felhasználónak is rendelkeznie kell az olvasásra hivatkozott fájlok engedélyével.

  • Az Azure Data Lake Storage és az Azure Blob Storage esetében az egyszerűnek a tároló vagy a tárfiók szintjén kell hozzárendelnie a Storage Blob Data Reader szerepkört (vagy annál magasabbat).
  • A Fabric One Lake Storage esetében az egyszerű felhasználónak "ReadAll" engedélyekkel kell rendelkeznie.

Zárolás

Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.

Példák

Egy. Külső adatok lekérdezése OPENROWSET vagy külső tábla használatával

  1. Hozza létre a külső adatforrást.

    --Create external data source pointing to the file path, and referencing database-scoped credential:
    CREATE EXTERNAL DATA SOURCE MyPrivateExternalDataSource
    WITH (
        LOCATION = 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest'
    );
    
  2. A külső adatforrás parquet adatfájljának lekérdezése az OPENROWSET T-SQL szintaxissal, sémakövetkeztetés alapján, hogy a séma ismerete nélkül gyorsan felderítse az adatokat.

    --Query data with OPENROWSET, relying on schema inference.
    SELECT TOP 10 *
    FROM OPENROWSET (
        BULK 'bing_covid-19_data.parquet',
        DATA_SOURCE = 'MyPrivateExternalDataSource'
    );
    
  3. Vagy az adatok lekérdezése az OPENROWSET használatával a WITH záradékkal, ahelyett, hogy sémakövetkeztetésre támaszkodna, ami lekérdezheti a végrehajtási költséget.

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

* Fabric SQL adatbázis *  

 

Áttekintés: SQL adatbázis a Microsoft Fabric-ben

Alkalmazható:SQL adatbázis a Microsoft Fabric-ben

Külső adatforrást hoz létre az adatok virtualizációjához SQL adatbázisban a Fabric-ben.

Transact-SQL szintaxis konvenciók

Szemantika

CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
  ( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ ; ]

Érvek

data_source_name

Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az adatbázisban.

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

Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.

A Fabric SQL adatbázis csak a OneLake (abfss) adatforrást támogatja.

Külső adatforrás Csatlakozó helyének előtagja Hely elérési út Elérhetőség
OneLake abfss abfss://<workspaceid>@<tenant>.dfs.fabric.microsoft.com/ Fabric SQL-adatbázis

További megjegyzések és útmutatás a hely beállításához:

  • Az adatbázismotor nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.

Engedélyek

Engedély szükséges CONTROL az Azure SQL Database adatbázisához.

Zárolás

Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.

Példák

Egy. Hozzon létre külső adatforrást egy Lakehouse fájlmappába

Ez a példa egy külső adatforrás nevű MyLakeHouse Lakehouse-hoz kötését jelenti, hogy hozzáférjen a feltöltött Parquet és CSV fájlokhoz. Ezek a fájlok ebben a mintában a mappa alatt lévő Files könyvtárban Contoso találhatók.

Fabric Lakehouse adatforrás létrehozásához meg kell adnia a munkaterület azonosítóját, a bérlőt és a Lakehouse ID-t. Az ABFSS fájl helyszínének megtalálásához egy tóház esetében menj a Fabric portálra. Navigálj a Lakehouse-odhoz, menj a kívánt mappáhelyre, válaszd ...ki a Tulajdonságokat. Másold ki az ABFS útvonalat, ami valami ilyesmiben néz ki: abfss://<WorkSpaceID>@<Tenant>.dfs.fabric.microsoft.com/<LakehouseID>/Files/Contoso.

Mivel a Fabric SQL adatbázis csak az Entra ID átengedett hitelesítést támogatja, nem szükséges adatbázis-keretű hitelesítést megadni, a kapcsolat mindig a felhasználó bejelentkezési adatait használja a helyszín eléréséhez.

CREATE EXTERNAL DATA SOURCE MyLakeHouse 
WITH (
 LOCATION = 'abfss://<workspace id>@<tenant>.dfs.fabric.microsoft.com/<lakehouseid>/Files/Contoso'
);