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

A következőkre vonatkozik: SQL Server 2016 (13.x) és újabb verziók Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-elemzési végpont a Microsoft Fabric< /c11>Warehouse a Microsoft FabricSQL-adatbázisban a Microsoft Fabric

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: 2016 SQL Server

A: 2016 SQL Server (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:

  • Adatvirtualizálás és adatbetöltés PolyBase használatával a SQL Server
  • Tömeges betöltési műveletek a BULK INSERTOPENROWSET

Megjegyzés:

A CREATE EXTERNAL DATA SOURCE szintaxisa a SQL Database Engine különböző verzióiban változik. A verzióválasztó legördülő listában válassza ki a megfelelő termékverziót. A 2019-SQL Server (15.x) funkcióinak megtekintéséhez látogasson el a CREATE EXTERNAL DATA SOURCE. A 2022-SQL Server (16.x) funkcióinak megtekintéséhez látogasson el CREATE EXTERNAL DATA SOURCE.

Transact-SQL szintaxis konvenciók

A 2016-os SQL Server 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 a 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] 2016-SQL Server (13.x) és 2019. SQL Server (15.x) Névtelen vagy alapszintű hitelesítés
Azure Storage fiók(V2) wasb[s] <container>@<storage_account>.blob.core.windows.net A 2016-os SQL Server (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> = a Azure erőforrás tárfiókjának neve.
  • <server_name> = a gazdagép neve.
  • <instance_name> = a SQL Server elnevezett példány neve. Akkor használatos, ha SQL Server Böngészőszolgáltatás fut a célpéldányon.

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

  • A SQL Server Database Engine 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 a SQL Server 2016-ban (13.x) ajánlott a Azure Storage Accounts eléréséhez, mivel az adatok biztonságos TLS/SSL-kapcsolaton keresztül 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. A 2016-os SQL Server ez a paraméter mindig kötelező, és csak HADOOPként kell megadni. Támogatja a Cloudera CDH-vel, a Hortonworks HDP-vel vagy egy Azure Storage-fiókkal való kapcsolatokat. A paraméter viselkedése a SQL Server későbbi verzióiban eltérő.

Ha például TYPE = HADOOP használatával tölt be adatokat egy Azure Storage-fiókból, tekintse meg a A külső adatforrás létrehozása a Azure Storage adatainak eléréséhez a wasb:// interfész használatával

RESOURCE_MANAGER_LOCATION = *'ResourceManager_URI[:p ort]'

Konfigurálja ezt az opcionális értéket, ha csak Cloudera CDH-hoz, 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 RESOURCE_MANAGER_LOCATION megadása jelentősen csökkentheti a Hadoop és a 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
  • Resource Manager
    • 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 feladatbeküldés (Cloudera 4.3) 8021
Resource Manager feladat beküldése (Hortonworks 2.0 Windows, Cloudera 5.x Linux rendszeren) 8032
Resource Manager feladat beküldése (Hortonworks 2.x, 3.0 Linuxon, Hortonworks 2.1-3 a Windows) 8050
Resource Manager feladatelőzmények 10020

Engedélyek

CONTROL engedélyt igényel a 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: Install PolyBase on Windows

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 a Azure Storage adatainak eléréséhez a wasb:// felülettel

Ebben a példában a külső adatforrás egy Azure logs nevű V2 Storage-fiók. A tárolóedényt nevezik dailyel . A Azure Storage külső adatforrás 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ókhoz való hitelesítéshez. Adja meg a 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ó a hitelesítés során a Azure Storage. Ha wasb vagy wasbs keresztül csatlakozik a Azure Storage, a hitelesítést tárfiók-kulccsal kell elvégezni, nem pedig közös hozzáférésű jogosultságkóddal (SAS).

2016 SQL Server (13.x) TYPEHADOOP értékre kell állítani, még akkor is, ha Azure Storage fér hozzá.

-- 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: 2017 SQL Server (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:

  • Adatvirtualizálás és adatbetöltés PolyBase használatával a SQL Server
  • Tömeges betöltési műveletek a BULK INSERTOPENROWSET

Megjegyzés:

A CREATE EXTERNAL DATA SOURCE szintaxisa az SQL Server on Linux különböző verzióiban változik. A verzióválasztó legördülő listában válassza ki a megfelelő verziót.
A 2019-SQL Server (15.x) funkcióinak megtekintéséhez látogasson el a CREATE EXTERNAL DATA SOURCE. A 2022-SQL Server (16.x) funkcióinak megtekintéséhez látogasson el CREATE EXTERNAL DATA SOURCE.

Megjegyzés:

A CREATE EXTERNAL DATA SOURCE szintaxisa a SQL Database Engine különböző verzióiban változik. A verzióválasztó legördülő listában válassza ki a megfelelő termékverziót.
A 2019-SQL Server (15.x) funkcióinak megtekintéséhez látogasson el a CREATE EXTERNAL DATA SOURCE. A 2022-SQL Server (16.x) funkcióinak megtekintéséhez látogasson el CREATE EXTERNAL DATA SOURCE.

Transact-SQL szintaxis konvenciók

Szintaxis a 2017-SQL Server

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 a 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-os (13.x) SQL Server 2019-ben (csak 15.x) Névtelen vagy alapszintű hitelesítés
Azure Storage fiók(V2) wasb[s] <container>@<storage_account>.blob.core.windows.net A 2016-os SQL Server (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> A 2017-SQL Server (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> = a Azure erőforrás tárfiókjának neve.
  • <server_name> = a gazdagép neve.
  • <instance_name> = a SQL Server elnevezett példány neve. Akkor használatos, ha SQL Server Böngészőszolgáltatás fut a célpéldányon.

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

  • A SQL Server Database Engine 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 a 2017-SQL Server 2017-ben (14.x) ajánlott a Azure Storage Accounts eléréséhez, mivel az adatok biztonságos TLS/SSL-kapcsolaton keresztül 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: .
  • Ha wasb vagy wasbs keresztül csatlakozik a Azure Storage, 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 úgy hozhat létre, ha a Azure portálra navigál -><Your_Storage_Account> -> Közös hozzáférésű jogosultságkód -> Engedélyek konfigurálása -> SAS létrehozása és connection string. További információ: Közös hozzáférésű jogosultságkód létrehozása.

  • Az SAS-t hozhat létre és konfigurálhat Azure Storage Explorer.

  • SAS-jogkivonatot programozott módon hozhat létre a PowerShell, a Azure CLI, a .NET és a REST API használatával. További információ: A közös hozzáférésű jogosultságkódok (SAS).

  • 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

Ha például egy CREDENTIALSHARED ACCESS SIGNATURE és TYPE = BLOB_STORAGE használatával szeretne használni, tekintse meg A külső adatforrás létrehozása tömeges műveletek végrehajtásához és az adatok Azure Storage SQL Database-be való beolvasásához

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 Azure Data Lake Storage Gen2 való csatlakozáskor kell megadni.

  • A HADOOP akkor használja, ha a külső adatforrás Cloudera CDH, Hortonworks HDP, Azure Storage-fiók vagy Azure Data Lake Storage Gen2.
  • A BLOB_STORAGEBULK INSERT vagy OPENROWSET BULK használatával hajthat végre tömeges műveleteket Azure Storage fiókból. A 2017-SQL Server (14.x). A HADOOPCREATE EXTERNAL TABLE Azure Storage.

Megjegyzés:

TYPE HADOOP értékre kell állítani, még Azure Storage elérésekor is.

Ha például TYPE = HADOOP használatával tölt be adatokat egy Azure Storage-fiókból, tekintse meg a A külső adatforrás létrehozása a Azure Storage adatokhoz való hozzáféréséhez a wasb:// interfész használatával

RESOURCE_MANAGER_LOCATION = "ResourceManager_URI[:p ort]"

Konfigurálja ezt az opcionális értéket, ha csak Cloudera CDH-hoz, 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. A RESOURCE_MANAGER_LOCATION megadása jelentősen csökkentheti a Hadoop és a 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
  • Resource Manager
    • 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 feladatbeküldés (Cloudera 4.3) 8021
Resource Manager feladat beküldése (Hortonworks 2.0 Windows, Cloudera 5.x Linux rendszeren) 8032
Resource Manager feladat beküldése (Hortonworks 2.x, 3.0 Linuxon, Hortonworks 2.1-3 a Windows) 8050
Resource Manager feladatelőzmények 10020

Engedélyek

CONTROL engedélyt igényel a 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: Install PolyBase on Windows

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 a Azure Storage adatainak eléréséhez a wasb:// felülettel

Ebben a példában a külső adatforrás egy Azure logs nevű V2 Storage-fiók. A tárolóedényt nevezik dailyel . A Azure Storage külső adatforrás 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. Ha wasb vagy wasbs keresztül csatlakozik a Azure Storage, 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ókhoz való hitelesítéshez. Adja meg a 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ó a hitelesítés során a Azure Storage.

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

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

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

Pé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 a Azure Storage adatok beolvasására szolgáló tömeges műveletekhez

A következő verziókra vonatkozik: SQL Server 2017 (14.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',
     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: 2019 SQL Server (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:

  • Adatvirtualizálás és adatbetöltés PolyBase használatával a SQL Server
  • Tömeges betöltési műveletek a BULK INSERTOPENROWSET

Megjegyzés:

A CREATE EXTERNAL DATA SOURCE szintaxisa a SQL Database Engine különböző verzióiban változik. A verzióválasztó legördülő listában válassza ki a megfelelő termékverziót.
A 2022-SQL Server (16.x) funkcióinak megtekintéséhez látogasson el CREATE EXTERNAL DATA SOURCE.

Megjegyzés:

A CREATE EXTERNAL DATA SOURCE szintaxisa a SQL Database Engine különböző verzióiban változik. A verzióválasztó legördülő listában válassza ki a megfelelő termékverziót.
A 2022-SQL Server (16.x) funkcióinak megtekintéséhez látogasson el CREATE EXTERNAL DATA SOURCE.

Transact-SQL szintaxis konvenciók

Szintaxis SQL Server 2019-hez

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 a 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] 2016-SQL Server (13.x) és 2019. SQL Server (15.x) Névtelen vagy alapszintű hitelesítés
Azure Storage fiók(V2) wasb[s] <container>@<storage_account>.blob.core.windows.net A 2016-os SQL Server (13.x)
A hierarchikus névtér nem támogatott
Azure Storage fiókkulcs
SQL Server sqlserver <server_name>[\<instance_name>][:port] 2019 SQL Server (15.x) Csak SQL-hitelesítés
Jóslat oracle <server_name>[:port] 2019 SQL Server (15.x) Csak alapszintű hitelesítés
Teradata teradata <server_name>[:port] 2019 SQL Server (15.x) Csak alapszintű hitelesítés
MongoDB vagy Cosmos DB API a MongoDB-hez mongodb <server_name>[:port] 2019 SQL Server (15.x) Csak alapszintű hitelesítés
Általános ODBC odbc <server_name>[:port] 2019 SQL Server (15.x) – csak Windows Csak alapszintű hitelesítés
Tömeges műveletek https <storage_account>.blob.core.windows.net/<container> A 2017-SQL Server (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 A 2019-SQL Server (15.x) CU11+-tól kezdve. Tárelérési kulcs
SQL Server Big Data Clusters adatkészlet sqldatapool sqldatapool://controller-svc/default Csak a 2019 SQL Server Big Data Clusters Csak alapszintű hitelesítés
SQL Server Big Data Clusters tárolókészlet sqlhdfs sqlhdfs://controller-svc/default Csak a 2019 SQL Server Big Data Clusters 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> = a Azure erőforrás tárfiókjának neve.
  • <server_name> = a gazdagép neve.
  • <instance_name> = a SQL Server elnevezett példány neve. Akkor használatos, ha SQL Server Böngészőszolgáltatás fut a célpéldányon.

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

  • A SQL Server Database Engine 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.
  • A sqlserver összekötő használatával csatlakoztathatja SQL Server 2019-et (15.x) egy másik SQL Server, vagy Azure SQL Database.
  • Adja meg a Driver={<Name of Driver>} csatlakozáskor a következőt ODBC: .
  • A wasbs vagy abfss használata nem kötelező, de a 2019-SQL Server 2019-ben (15.x) ajánlott a Azure Storage Accounts eléréséhez, mivel az adatok biztonságos TLS/SSL-kapcsolat használatával lesznek elküldve.
  • A abfs vagy abfss API-k támogatottak a Azure Storage Accounts 2019 SQL Server (15.x) CU11-től kezdődően. További információ: az Azure Blob Fájlrendszer-illesztőprogram (ABFS).
  • A Azure Storage Accounts(V2) abfs[s] használatával használható hierarchikus névtér beállítás a 2019-SQL Server (15.x) CU11+ Azure Data Lake Storage Gen2 használatával támogatott. 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 A sqlhdfs SQL Server Big Data Clusters-tárolókészletek lekérdezéséhez való használatáról további információt a Query HDFS a SQL Server 2019 Big Data-fürtben talál.
  • SQL Server HDFS Cloudera (CDP) és Hortonworks (HDP) külső adatforrások támogatása megszűnt, és nem szerepel a 2022-SQL Server (16.x) és újabb verziókban. További információ: Big adatbeállítások a Microsoft SQL Server platformon.

CONNECTION_OPTIONS = key_value_pair

A 2019-SQL Server (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 ODBC kapcsolatokra, 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.

SQL Server 2019 -es (15.x) 19-es és újabb kumulatív frissítés további kulcsszavakat vezet 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 a 2019-SQL Server (15.x) esetén 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 akkor támogatott, ha a külső adatforrás szintjén csatlakozik SQL Server, Oracle, Teradata, MongoDB, Azure Cosmos DB API for MongoDB vagy ODBC szolgáltatáshoz.

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 úgy hozhat létre, ha a Azure portálra navigál -><Your_Storage_Account> -> Közös hozzáférésű jogosultságkód -> Engedélyek konfigurálása -> SAS létrehozása és connection string. További információ: Közös hozzáférésű jogosultságkód létrehozása.

  • Az SAS-t hozhat létre és konfigurálhat Azure Storage Explorer.

  • SAS-jogkivonatot programozott módon hozhat létre a PowerShell, a Azure CLI, a .NET és a REST API használatával. További információ: A közös hozzáférésű jogosultságkódok (SAS).

  • 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

Ha például egy CREDENTIALSHARED ACCESS SIGNATURE és TYPE = BLOB_STORAGE használatával szeretne használni, tekintse meg A külső adatforrás létrehozása tömeges műveletek végrehajtásához és az adatok Azure Storage SQL Database-be való beolvasásához

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 Azure Data Lake Storage Gen2 való csatlakozáskor kell megadni.

  • A 2019-es SQL Server (15.x) ne adja meg a TYPE értéket, hacsak nem csatlakozik a Cloudera CDH-hoz, a Hortonworks HDP-hez, amely egy Azure Storage fiók.
  • A HADOOP akkor használja, ha a külső adatforrás Cloudera CDH, Hortonworks HDP, Azure Storage-fiók vagy Azure Data Lake Storage Gen2.
  • A BLOB_STORAGEBULK INSERT vagy OPENROWSET BULK és 2017 SQL Server (14.x) használatával hajthat végre tömeges műveleteket Azure Storage-fiókból. A HADOOP akkor használja, ha külső táblát kíván létrehozni Azure Storage.
  • SQL Server HDFS Cloudera (CDP) és Hortonworks (HDP) külső adatforrások támogatása megszűnt, és nem szerepel a 2022-SQL Server (16.x) és újabb verziókban. További információ: Big adatbeállítások a Microsoft SQL Server platformon.

Ha például TYPE = HADOOP használatával tölt be adatokat egy Azure Storage-fiókból, tekintse meg a A külső adatforrás létrehozása a Azure Storage adatainak eléréséhez a wasb:// felülettel.

RESOURCE_MANAGER_LOCATION = "ResourceManager_URI[:p ort]"

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

Konfigurálja ezt az opcionális értéket, ha csak Cloudera CDH-hoz, 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 RESOURCE_MANAGER_LOCATION megadása jelentősen csökkentheti a Hadoop és a 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
  • Resource Manager
    • 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 feladatbeküldés (Cloudera 4.3) 8021
Resource Manager feladat beküldése (Hortonworks 2.0 Windows, Cloudera 5.x Linux rendszeren) 8032
Resource Manager feladat beküldése (Hortonworks 2.x, 3.0 Linuxon, Hortonworks 2.1-3 a Windows) 8050
Resource Manager feladatelőzmények 10020

Engedélyek

CONTROL engedélyt igényel a 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 a 2019-SQL Server 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: Install PolyBase on Windows

Egy. Külső adatforrás létrehozása a SQL Server 2019-ben 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]
);

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

A 2019. SQL Server (15.x) kumulatív 19. frissítéstől kezdve a CREATE EXTERNAL DATA SOURCE 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 a futtatókörnyezetben SQL Server megkeresi a tnsnames.ora által megadott TNSNamesFile fájlhelyet, és megkeresi a ServerName által megadott gazdagépet és hálózati portot.

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 a Azure Storage adatainak eléréséhez a wasb:// felülettel

Ebben a példában a külső adatforrás egy Azure logs nevű V2 Storage-fiók. A tárolóedényt nevezik dailyel . A Azure Storage külső adatforrás 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. Ha wasb vagy wasbs keresztül csatlakozik a Azure Storage, 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ókhoz való hitelesítéshez. Adja meg a 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ó a hitelesítés során a Azure Storage.

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

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

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

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

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

Ha egy névvel ellátott SQL Server-példányra hivatkozó külső adatforrást szeretne létrehozni, használja a CONNECTION_OPTIONS 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 egy SQL Server alapértelmezett példányhoz 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őre vonatkozik: : SQL Server 2019 (15.x) és újabb verziók

Ha olyan külső adatforrást szeretne létrehozni, amely a SQL Server olvasható másodlagos replikájára hivatkozik, a CONNECTION_OPTIONS használatával adja 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 a Azure Storage adatok beolvasására szolgáló tömeges műveletekhez

A következőre 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 a Azure Storage adatainak eléréséhez a abfs:// felülettel

A következőre 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 a Azure Blob Fájlrendszer-illesztőprogram (ABFS) használatával. A tárolóedényt nevezik dailyel . A Azure Data Lake Storage Gen2 külső adatforrás 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ók hitelesítéséhez. Adja meg a 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ó a hitelesítés során a Azure Storage.

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

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

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

J. 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: 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:

  • Adatvirtualizálás és adatbetöltés PolyBase használatával a SQL Server
  • Tömeges betöltési műveletek a BULK INSERTOPENROWSET

Megjegyzés:

A CREATE EXTERNAL DATA SOURCE szintaxisa a SQL Database Engine különböző verzióiban változik. A verzióválasztó legördülő listában válassza ki a megfelelő termékverziót. Ez a tartalom a 2022-SQL Server (16.x) és újabb verzióira vonatkozik.

A 2022-SQL Server szintaxisa

Szintaxis a 2022-SQL Server és újabb verziókhoz

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 a 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>
A 2022-SQL Server (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>
A 2022-SQL Server (16.x) Közös hozzáférésű jogosultságkód (SAS)
SQL Server sqlserver <server_name>[\<instance_name>][:port] 2019 SQL Server (15.x) Csak SQL-hitelesítés
Jóslat oracle <server_name>[:port] 2019 SQL Server (15.x) Csak alapszintű hitelesítés
Teradata teradata <server_name>[:port] 2019 SQL Server (15.x) Csak alapszintű hitelesítés
MongoDB vagy Cosmos DB API a MongoDB-hez mongodb <server_name>[:port] 2019 SQL Server (15.x) Csak alapszintű hitelesítés
Általános ODBC odbc <server_name>[:port] 2019 SQL Server (15.x) – csak Windows Csak alapszintű hitelesítés
Tömeges műveletek https <storage_account>.blob.core.windows.net/<container> A 2017-SQL Server (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>
A 2022-SQL Server (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> = a Azure erőforrás tárfiókjának neve.
  • <server_name> = a gazdagép neve.
  • <instance_name> = a SQL Server elnevezett példány neve. Akkor használatos, ha SQL Server Böngészőszolgáltatás fut a célpéldányon.
  • <ip_address>:<port> = Csak S3-kompatibilis objektumtárolók esetén (a 2022-SQL Server (16.x)-tól kezdve) 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 (a 2022-SQL Server (16.x)-től kezdve) a tárolóplatformra jellemző.
  • <region> = Csak S3-kompatibilis objektumtárolók esetén (a 2022-SQL Server (16.x)-től kezdve) a tároló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:

  • A SQL Server Database Engine 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.
  • A sqlserver összekötő használatával csatlakoztathatja SQL Server 2019-et (15.x) egy másik SQL Server vagy Azure SQL Database.
  • Adja meg a Driver={<Name of Driver>} csatlakozáskor a következőt ODBC: .
  • A Azure Storage Accounts(V2) adls előtagot használó hierarchikus névtér beállítását a 2022-SQL Server (16.x) Azure Data Lake Storage Gen2 támogatja.
  • SQL Server HDFS Cloudera (CDP) és a Hortonworks (HDP) külső adatforrások támogatása megszűnik, és nem szerepel a 2022-SQL Server (16.x) verzióban. A TYPE argumentumot nem kell használni a 2022-es SQL Server (16.x).
  • Az S3-kompatibilis objektumtárolásról és a PolyBase-ről a 2022-SQL Server (16.x) verziótól kezdődően további információt a Configure PolyBase-ben talál a 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 a 2022-SQL Server (16.x) verzióban a Azure Storage Fiók (v2) előtagja wasb[s]-ről abs-ra változott.
  • A korábbi verzióktól eltérően a 2022-SQL Server (16.x) Azure Data Lake Storage Gen2 előtagja abfs[s]-ról adls-ra módosult.
  • Ha például a PolyBase használatával virtualizál egy CSV-fájlt Azure Storage, olvassa el a Virtualize CSV-fájlt a PolyBase használatával.
  • 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.
  • SQL Server 2022 (16.x) teljes mértékben támogatja Azure Storage Fiók v2 (abs) és Azure Data Lake Gen2 (adls) 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 2-s fiók: abs://<container>@<storage_account_name>.blob.core.windows.net (ajánlott) vagy abs://<storage_account_name>.blob.core.windows.net/<container>.
  • Azure Data Lake Gen2 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 2019-SQL Server (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 ODBC kapcsolatokra, 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.

A 2022.SQL Server (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 akkor támogatott, ha a külső adatforrás szintjén csatlakozik SQL Server, Oracle, Teradata, MongoDB, Azure Cosmos DB API for MongoDB vagy ODBC szolgáltatáshoz.

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 úgy hozhat létre, ha a Azure portálra navigál -><Your_Storage_Account> -> Közös hozzáférésű jogosultságkód -> Engedélyek konfigurálása -> SAS létrehozása és connection string. További információ: Közös hozzáférésű jogosultságkód létrehozása.

  • Az SAS-t hozhat létre és konfigurálhat Azure Storage Explorer.

  • SAS-jogkivonatot programozott módon hozhat létre a PowerShell, a Azure CLI, a .NET és a REST API használatával. További információ: A közös hozzáférésű jogosultságkódok (SAS).

  • 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
  • A 2. generációs Azure Blob Storage és Azure Data Lake 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

CONTROL engedélyt igényel a 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 SQL Server 2022-re

2022 SQL Server (16.x) kezdődően 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 a Azure Storage 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: Install PolyBase on Windows

Egy. Külső adatforrás létrehozása SQL Server 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.

A 2022 SQL Server-es (16.x) kumulatív 2. frissítéstől kezdve CREATE EXTERNAL DATA SOURCE 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 a futtatókörnyezetben SQL Server megkeresi a tnsnames.ora által megadott TNSNamesFile fájlhelyet, és megkeresi a ServerName által megadott gazdagépet és hálózati portot.

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 SQL Server elnevezett példány hivatkozásához PolyBase-kapcsolaton keresztül

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

Ha egy névvel ellátott SQL Server-példányra hivatkozó külső adatforrást szeretne létrehozni, használja a CONNECTION_OPTIONS 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 egy SQL Server alapértelmezett példányhoz 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őre vonatkozik: : SQL Server 2019 (15.x) és újabb verziók

Ha olyan külső adatforrást szeretne létrehozni, amely a SQL Server olvasható másodlagos replikájára hivatkozik, a CONNECTION_OPTIONS használatával adja 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őre vonatkozik: SQL Server 2022 (16.x) és újabb verziók

Az alábbi példaszkript létrehoz egy külső adatforrást s3_ds a forrásfelhasználói adatbázisban a SQL Server. 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

A Azure Blob Storage és 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 a Azure portálra é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 Azure Blob Storage adatainak eléréséhez a abs:// felülettel

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

A 2022-SQL Server (16.x) verziótól kezdve használjon egy új előtagot abs Azure Storage fiók 2- s verziójához. 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.

A Azure tárfió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
);

A Azure Blob Storage tárolt CSV-fájlok elérésére vonatkozó részletesebb példa: Virtualize CSV-fájl a PolyBase.

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

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

A 2022-SQL Server (16.x) verziótól kezdve használjon egy új előtagot adls Azure Data Lake Gen2-hez, és cserélje le a korábbi verziókban használt 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
);

A Azure Data Lake Gen2-ben tárolt deltafájlok elérésére vonatkozó részletesebb példát a A Delta-tábla a PolyBase használatával való elérésével kapcsolatban talál.

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 a Azure Storage adatok beolvasására szolgáló 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

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

  • Adatvirtualizálás és adatbetöltés PolyBase használatával a SQL Server
  • Tömeges betöltési műveletek a BULK INSERTOPENROWSET

Támogatja az Azure Arc által engedélyezett példányok felügyelt identitáskapcsolatait. Részletekért tekintse át a Kapcsolódás Azure Storage a PolyBase felügyelt identitásával.

Megjegyzés:

A CREATE EXTERNAL DATA SOURCE szintaxisa a SQL Database Engine különböző verzióiban változik. A verzióválasztó legördülő listában válassza ki a megfelelő termékverziót. Ez a tartalom SQL Server 2025-ös (17.x) és újabb verziókra vonatkozik.

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

A szintaxisi konvenciókról további információt a Transact-SQL szintaxiskonvenciók című témakörben talál.

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 a 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>
A 2022-SQL Server (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 Azure Storage1
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>
A 2022-SQL Server (16.x) Közös hozzáférésű jogosultságkód (SAS)
vagy
PolyBase-támogatás felügyelt identitáshoz Azure Storage1
SQL Server sqlserver <server_name>[\<instance_name>][:port] 2019 SQL Server (15.x) Csak SQL-hitelesítés
Jóslat oracle <server_name>[:port] 2019 SQL Server (15.x) Csak alapszintű hitelesítés
Teradata teradata <server_name>[:port] 2019 SQL Server (15.x) Csak alapszintű hitelesítés
MongoDB vagy Cosmos DB API a MongoDB-hez mongodb <server_name>[:port] 2019 SQL Server (15.x) Csak alapszintű hitelesítés
Általános ODBC odbc <server_name>[:port] 2019 SQL Server (15.x) – csak Windows Csak alapszintű hitelesítés
Tömeges műveletek https <storage_account>.blob.core.windows.net/<container> A 2017-SQL Server (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>
A 2022-SQL Server (16.x) Alapszintű vagy átmenő (STS) 2

1 A Azure Arc által engedélyezett SQL Server 2025-ös (17.x) példány szükséges. A részletekért tekintse át a Kapcsolódás Azure Storage a PolyBase felügyelt identitásával.

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> A Azure erőforrás tárfiókjának neve.
<server_name> A gazdagép neve.
<instance_name> A SQL Server elnevezett példány neve. Akkor használatos, ha SQL Server Böngészőszolgáltatás 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:

  • A SQL Server Database Engine 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.

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

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

  • A Azure Storage Accounts(V2) adls előtagot használó hierarchikus névtér beállítását a Azure Data Lake Storage Gen2 támogatja a 2022-SQL Server (16.x) és újabb verziókban.

  • SQL Server HDFS Cloudera (CDP) és a Hortonworks (HDP) külső adatforrások támogatása megszűnik, és nem szerepel a SQL Server 2022-ben (16.x) és újabb verziókban. A 2025-ös SQL Server (17.x) TYPE argumentumot nem kell használni.

  • Az S3-kompatibilis objektumtárolásról és a PolyBase-ről a 2022-SQL Server 2022-ben (16.x) és újabb verziókban a Konfigurálás a PolyBase-ben a 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.

SQL Server 2022-ben (16.x) és újabb verziókban:

  • az Azure Storage fiók (v2) előtagja wasb[s]-ról abs

  • a Azure Data Lake Storage Gen2 használt előtag abfs[s]-ről adls

  • Ha például a PolyBase használatával virtualizál egy CSV-fájlt Azure Storage, olvassa el a Virtualize CSV-fájlt a PolyBase használatával.

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

  • SQL Server 2022 -es (16.x) és újabb verziók teljes mértékben támogatják Azure Storage Fiók 2-es (abs) és Azure Data Lake Gen2 (adls) 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 2-s fiók: abs://<container>@<storage_account_name>.blob.core.windows.net (ajánlott) vagy abs://<storage_account_name>.blob.core.windows.net/<container>.
  • Azure Data Lake Gen2 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: 2019-SQL Server (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 ODBC kapcsolatokra, 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.

A 2022.SQL Server (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.

Encryption options in SQL Server 2025 (17.x)

A 2025-ös (17.x) SQL Server-tól kezdve a sqlserver adatforrásként való használatakor a SQL Server Microsoft ODBC-illesztőprogram 18-as verziója az alapértelmezett illesztőprogram. 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ásairól, a kiszolgálótanúsítványokról és a A Windows című szakaszában talál további információt.

Mindig a legújabb illesztőprogramot kell használnia. A 2025-ös SQL Server (17.x) azonban Microsoft ODBC-illesztőprogram 17-es verzióját is támogatja SQL Server a visszamenőleges kompatibilitás érdekében. További információ a PolyBase által használt illesztőprogram-verzió módosításáról: A PolyBase SQL Server illesztőprogram-verziójának módosítása.

PUSHDOWN = BE | KI

A: 2019-SQL Server (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 akkor támogatott, ha a külső adatforrás szintjén csatlakozik SQL Server, Oracle, Teradata, MongoDB, Azure Cosmos DB API for MongoDB vagy ODBC szolgáltatáshoz.

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 a Azure portálra való navigálással hozhat létreYour_Storage_AccountMegosztott hozzáférési jogosultságkódKonfigurációs engedélyekA SAS és connection string. További információ: Közös hozzáférésű jogosultságkód létrehozása.

  • Az SAS-t hozhat létre és konfigurálhat Azure Storage Explorer.

  • SAS-jogkivonatot programozott módon hozhat létre a PowerShell, a Azure CLI, a .NET és a REST API használatával. További információ: A közös hozzáférésű jogosultságkódok (SAS).

  • 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
  • A 2. generációs Azure Blob Storage és Azure Data Lake 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

CONTROL engedélyt igényel a 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 SQL Server 2025-re

A 2022-SQL Server (16.x) és újabb verziókban 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 a Azure Storage 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: Install PolyBase on Windows.

Egy. Külső adatforrás létrehozása SQL Server 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.

A 2022 SQL Server-es (16.x) kumulatív 2. frissítéstől kezdve CREATE EXTERNAL DATA SOURCE 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 a futtatókörnyezetben SQL Server megkeresi a tnsnames.ora által megadott TNSNamesFile fájlhelyet, és megkeresi a ServerName által megadott gazdagépet és hálózati portot.

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 SQL Server elnevezett példány hivatkozásához PolyBase-kapcsolaton keresztül

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

Ha egy névvel ellátott SQL Server-példányra hivatkozó külső adatforrást szeretne létrehozni, használja a CONNECTION_OPTIONS 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 egy SQL Server alapértelmezett példányhoz 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: SQL Server 2019 (15.x) és újabb verziókra vonatkozik.

Ha olyan külső adatforrást szeretne létrehozni, amely a SQL Server olvasható másodlagos replikájára hivatkozik, a CONNECTION_OPTIONS használatával adja 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 a forrásfelhasználói adatbázisban a SQL Server. 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

A Gen2 Azure Blob Storage és Azure Data Lake 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 a Azure portálra é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 Azure Blob Storage adatainak eléréséhez a abs:// felülettel

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

Használjon egy új előtagot abs 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.

A Azure tárfió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
);

A Azure Blob Storage tárolt CSV-fájlok elérésére vonatkozó részletesebb példa: Virtualize CSV-fájl a PolyBase.

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

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

Használjon egy új előtagot adls Azure Data Lake Gen2-hez, és cserélje le a korábbi verziókban használt 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
);

A Azure Data Lake Gen2-ben tárolt deltafájlok elérésére vonatkozó részletesebb példát a A Delta-tábla a PolyBase használatával való elérésével kapcsolatban talál.

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 a Azure Storage adatok beolvasására szolgáló 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 Server

A: SQL Server 2025 -ös (17.x) és újabb verziókra vonatkozik.

Ha a legújabb Microsoft ODBC Driver 18-at használja SQL Server, a Encryption alatt a CONNECTION_OPTIONS lehetőséget kell használnia, és TrustServerCertificate 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 következőt HostnameinCertificate használjuk 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: 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:// Elérhető Azure SQL Edgeonly. Az EdgeHub mindig helyi a Azure SQL Edge példányában. 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> Elérhető Azure SQL Edgeonly.
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ő Azure logikai kiszolgáló neve. 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:

  • A Database Engine 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:

  • A Azure Storage adatainak Azure SQL Database való betöltéséhez használjon 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 a Azure Storage 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 úgy hozhat létre, ha a Azure portálra navigál -><Your_Storage_Account> -> Közös hozzáférésű jogosultságkód -> Engedélyek konfigurálása -> SAS létrehozása és connection string. További információ: Közös hozzáférésű jogosultságkód létrehozása.

  • Az SAS-t hozhat létre és konfigurálhat Azure Storage Explorer.

  • SAS-jogkivonatot programozott módon hozhat létre a PowerShell, a Azure CLI, a .NET és a REST API használatával. További információ: A közös hozzáférésű jogosultságkódok (SAS).

  • 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

Ha például egy CREDENTIALSHARED ACCESS SIGNATURE és TYPE = BLOB_STORAGE használatával szeretne használni, tekintse meg A külső adatforrás létrehozása tömeges műveletek végrehajtásához és az adatok Azure Storage SQL Database-be való beolvasásához

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.

Fontos

2027. március 31-én megszűnik a rugalmas lekérdezés szegmenstérkép-kezelő módban (vízszintes particionálás) a típus EXTERNAL DATA SOURCEhasználatávalSHARD_MAP_MANAGER. Ezen dátum után a meglévő számítási feladatok továbbra is működni fognak, de a továbbiakban nem kapnak támogatást, és új külső típusú adatforrások SHARD_MAP_MANAGER létrehozása már nem lehetséges. A migrálási lehetőségekről a rugalmas lekérdezési szegmenstérkép-kezelő mód áttelepítési útmutatójában olvashat.

  • 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

CONTROL engedélyt igényel a 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

Fontos

2027. március 31-én megszűnik a rugalmas lekérdezés szegmenstérkép-kezelő módban (vízszintes particionálás) a típus EXTERNAL DATA SOURCEhasználatávalSHARD_MAP_MANAGER. Ezen dátum után a meglévő számítási feladatok továbbra is működni fognak, de a továbbiakban nem kapnak támogatást, és új külső típusú adatforrások SHARD_MAP_MANAGER létrehozása már nem lehetséges. A migrálási lehetőségekről a rugalmas lekérdezési szegmenstérkép-kezelő mód áttelepítési útmutatójában olvashat.

Ha egy SHARD_MAP_MANAGER hivatkozó külső adatforrást szeretne létrehozni, adja meg az SQL Database-kiszolgáló nevét, 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 a Azure Storage adatok beolvasására szolgáló 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 Azure Blob Storage (ABS) számára 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 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 való konfigurálásáról további információt a Adatstreamelés Azure SQL Edge című témakörben talál.

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

A következőre vonatkozik: Azure SQL Edgeonly

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

A következőre vonatkozik: Azure SQL Edgeonly

Ebben a példában a külső adatforrás egy EdgeHub, amely ugyanazon a peremeszközön fut, mint 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: 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 lekérdezéséhez Azure SQL Database elasztikus lekérdezéssel, tekintse meg KÜLSŐ ADATFORRÁS LÉTREHOZÁSA Azure SQL Database.

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 a Azure Synapse Analytics Azure SQL Database belül.

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 korlátozott támogatással rendelkezik, 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

* A kiszolgáló nélküli és dedikált SQL-készletek Azure Synapse Analytics 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 korlátozott támogatottságú, 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> = a 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 a enable secure SSL connections használata Azure Data Lake Storage Gen2 kiépítésekor. 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ó: az Azure Blob Fájlrendszer-illesztőprogram (ABFS).
  • 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 Azure V2-tárfiókok esetében, amikor az örökölt wasb:// felületen férnek hozzá az adatokhoz, de a wasbs:// használata támogatja a hierarchikus névtereket.

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 Azure tárban tárolt fájlok eléréséhez.

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

  • Ha adatokat szeretne betölteni Azure Storage vagy Azure Data Lake Store (ADLS) Gen2-ből Azure Synapse Analytics, 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 Microsoft Entra átengedés nevű felhasználói identitáson keresztüli hozzáférés az adatbázis hatókörébe tartozó hitelesítő adatokban is lehetséges, 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 megadhatók a közös hozzáférésű jogosultságkód (SAS) jogkivonat, a tárelérési kulcs, a szolgáltatásnév, a munkaterület felügyelt identitása vagy Microsoft Entra átengedése.

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.

Ha például a TYPE = HADOOP használatával tölt be adatokat Azure Storage, tekintse meg a A külső adatforrás létrehozása a Azure Data Lake 1. vagy 2. generációs áruházra való hivatkozáshoz szolgáltatásnév használatával.

A kiszolgáló nélküli és dedikált SQL-készletek Azure Synapse Analytics 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 Azure Data Lake 2. generációs tárfiókok hitelesítéséhez. 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 a Azure Storage adatainak eléréséhez a wasb:// felülettel

Ebben a példában a külső adatforrás egy Azure Storage logs nevű V2-fiók. A tárolóedényt nevezik dailyel . A Azure Storage külső adatforrás 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. Ha wasb vagy wasbs keresztül csatlakozik a Azure Storage, 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 a hitelesítéshez Azure Storage. Adja meg a 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őadat-identitásban, mivel az nem használható a tárolás Azure 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 Azure Data Lake 1. vagy 2. generációs áruházra való hivatkozáshoz szolgáltatásnév használatával

Azure Data Lake Store-kapcsolat az ADLS URI-ján és a Microsoft Entra alkalmazás szolgáltatásnevén alapulhat. Az alkalmazás létrehozásának dokumentációja a Adatadattár-hitelesítés Microsoft Entra ID használatával érhető el.

-- 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 Azure Data Lake 2. generációs tároló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 a 2. generációs tároló Azure Data Lake abfs:// használatával

Nem kell megadnia SECRET, amikor Azure Data Lake Store Gen2-fiókhoz csatlakozik managed 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. A külső adatforrások kapcsolat létesítésére és a következő használati esetek támogatására szolgálnak: Adatvirtualizálás és adatbetöltés PolyBase használatával SQL Server.

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> = a 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, ha Azure Storage fiókokkal használják 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:

  • Az adatok Azure Storage Azure Synapse vagy PDW-be való betöltéséhez használjon 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-t akkor használja, ha a külső adatforrás a Cloudera CDH, a Hortonworks HDP vagy a Azure Storage.

Ha például a TYPE = HADOOP használatával tölt be adatokat Azure Storage, tekintse meg a A külső adatforrás létrehozása a Hadoopra való hivatkozáshoz.

RESOURCE_MANAGER_LOCATION = "ResourceManager_URI[:p ort]"

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

Konfigurálja ezt az opcionális értéket, ha csak Cloudera CDH-hoz, 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
  • Resource Manager
    • 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 feladatbeküldés (Cloudera 4.3) 8021
Resource Manager feladat beküldése (Hortonworks 2.0 Windows, Cloudera 5.x Linux rendszeren) 8032
Resource Manager feladat beküldése (Hortonworks 2.x, 3.0 Linuxon, Hortonworks 2.1-3 a Windows) 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 a Azure Storage adatainak eléréséhez a wasb:// felülettel

Ebben a példában a külső adatforrás egy Azure logs nevű V2 Storage-fiók. A tárolóedényt nevezik dailyel . A Azure Storage külső adatforrás 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. Ha wasb vagy wasbs keresztül csatlakozik a Azure Storage, 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 a Azure tároló hitelesítéséhez. Adja meg a Azure tárfió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őadat-identitásban, mivel az nem használható a tárolás Azure 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
);

* SQL Managed Instance *  

Áttekintés: Azure SQL Managed Instance

A: Azure SQL Managed Instance

Létrehoz egy külső adatforrást Azure SQL Managed Instance. További információ: Adatvirtualizálás Azure SQL Managed Instance.

A Azure SQL Managed Instance adatvirtualizálása különböző fájlformátumokban biztosít hozzáférést a külső adatokhoz a OPENROWSET vagy CREATE EXTERNAL TABLE segítségével.

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>

A Database Engine 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 Azure Storage Azure SQL Managed Instance, használjon 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 Azure SQL Managed Instance rendszer által hozzárendelt felügyeltszolgáltatás-identitását, amelyet engedélyezni kell, ha ezt a célt szolgálja.

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

CONTROL engedélyt igényel a Azure SQL Managed Instance 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 lásd: Adatvirtualizálás Azure SQL Managed Instance.

Egy. Külső adatok lekérdezése Azure SQL Managed Instance OPENROWSET vagy külső táblával

További példákat a KÜLSŐ ADATFORRÁS LÉTREHOZÁSA vagy a Adatvirtualizálás Azure SQL Managed Instance című témakörben talál.

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

A Database Engine 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.

  • A Azure Data Lake Storage és a Azure Blob Storage esetében az egyszerű felhasználónak Storage Blob Data Reader szerepkört kell hozzárendelnie a tároló vagy tárfiók szintjén.
  • A One Lake Storage Fabric 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

A: SQL-adatbázis a Microsoft Fabric

Létrehoz egy külső adatforrást Adatvirtualizáláshoz az SQL Database-ben Fabric.

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.

Fabric SQL-adatbázis csak a OneLake-t (abfss) támogatja adatforrásként.

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:

  • A Database Engine 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

CONTROL engedélyt igényel a 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.

Ha Fabric Lakehouse-adatforrást szeretne létrehozni, meg kell adnia a munkaterület azonosítóját, a bérlőt és a lakehouse-azonosítót. Egy tóház ABFSS-fájljának helyének megkereséséhez nyissa meg a Fabric portált. 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 Fabric SQL-adatbázis csak Microsoft Entra ID átengedő hitelesítést támogat, nincs szükség adatbázis-hatókörű hitelesítő adatok megadására, a kapcsolat mindig a felhasználó bejelentkezési hitelesítő adatait használja a hely eléréséhez.

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