Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: Az SQL Server 2016 (13.x) és újabb verziói
az Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Platform System (PDW)
SQL Analytics végpontja a Microsoft Fabric
Warehouse-ban a Microsoft Fabric
SQL Database-ben a Microsoft Fabricben
Létrehoz egy külső adatforrást a PolyBase és az adatvirtualizálási funkciókhoz használt külső adatok lekérdezéséhez.
Ez a cikk a választott SQL-termék szintaxisát, argumentumait, megjegyzéseit, engedélyeit és példáit ismerteti.
Termék kiválasztása
A következő sorban válassza ki a kívánt terméknevet, és csak az adott termék adatai jelenjenek meg.
* SQL Server *
Áttekintés: SQL Server 2016
A következőkre vonatkozik: SQL Server 2016 (13.x)
Létrehoz egy külső adatforrást a PolyBase-lekérdezésekhez. A külső adatforrások kapcsolat létesítésére és az elsődleges használati esetek támogatására szolgálnak:
- Adatvirtualizálás és adatbetöltés a PolyBase használatával az SQL Serverben
- Tömeges betöltési műveletek a
BULK INSERTOPENROWSET
Megjegyzés:
Ez a szintaxis az SQL Server különböző verzióiban eltérő. A verzióválasztó legördülő listában válassza ki a megfelelő verziót.
Az SQL Server 2019 (15.x) funkcióinak megtekintéséhez látogasson el a CREATE EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁS LÉTREHOZÁSA) webhelyre.
Az SQL Server 2022 (16.x) funkcióinak megtekintéséhez látogasson el a CREATE EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁS LÉTREHOZÁSA) webhelyre.
Transact-SQL szintaxis konvenciók
Az SQL Server 2016 szintaxisa
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = { HADOOP } ]
[ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]
Érvek
data_source_name
Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az SQL Server adatbázisában.
LOCATION = '<prefix>://<path[:p ort]>'
Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.
| Külső adatforrás | Csatlakozó helyének előtagja | Hely elérési út | Támogatott helyek termék/szolgáltatás szerint | Hitelesítés |
|---|---|---|---|---|
| Cloudera CDH vagy Hortonworks HDP | hdfs |
<Namenode>[:port] |
SQL Server 2016 (13.x) – SQL Server 2019 (15.x) | Névtelen vagy alapszintű hitelesítés |
| Azure Storage-fiók (V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Az SQL Server 2016-tól kezdve (13.x) A hierarchikus névtér nem támogatott |
Azure Storage-fiókkulcs |
Hely elérési útja:
-
<Namenode>= a Hadoop-fürt gépneve, névszolgáltatás URI-ja vagy IP-címeNamenode. 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 afs.defaultFSkonfigurációs paraméterrel található. Az alapértelmezett érték a 8020. -
<container>= az adatokat tartalmazó tárfiók tárolója. A gyökértárolók írásvédettek, az adatok nem írhatók vissza a tárolóba. -
<storage_account>= az Azure-erőforrás tárfiókjának neve. -
<server_name>= a gazdagép neve. -
<instance_name>= a névvel ellátott SQL Server-példány neve. Akkor használatos, ha az SQL Server Browser Service fut a célpéldányon.
További megjegyzések és útmutatás a hely beállításához:
- Az SQL Server adatbázismotorja nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.
- Használja ugyanazt a külső adatforrást az összes táblához a Hadoop lekérdezése során, hogy egységes lekérdezési szemantikát biztosítson.
-
wasbsnem kötelező, de ajánlott az SQL Server 2016-ban (13.x) az Azure Storage-fiókok eléréséhez, mivel az adatok biztonságos TLS/SSL-kapcsolat használatával lesznek elküldve. - A Sikeres PolyBase-lekérdezések Hadoop-feladatátvétel
Namenodesorán történő biztosításához fontolja meg a Hadoop-fürt virtuális IP-címénekNamenodehasználatát. Ha nem, hajtsa végre az ALTER EXTERNAL DATA SOURCE parancsot, hogy az új helyre mutasson.
HITELESÍTŐ ADATOK = credential_name
Egy adatbázis-hatókörű hitelesítő adatot ad meg a külső adatforráshoz való hitelesítéshez.
CREDENTIAL csak akkor szükséges, ha az adatok biztonságban vannak.
CREDENTIAL nem szükséges a névtelen hozzáférést lehetővé tevő adathalmazokhoz.
Adatbázis-hatókörű hitelesítő adatok létrehozásához lásd: CREATE DATABASE SCOPED CREDENTIAL.
TÍPUS = * [ HAUOP ] *
Megadja a konfigurált külső adatforrás típusát. Az SQL Server 2016-ban ez a paraméter mindig kötelező, és csak a HADOOP. Támogatja a Cloudera CDH-vel, a Hortonworks HDP-vel vagy egy Azure Storage-fiókkal való kapcsolatokat. A paraméter viselkedése az SQL Server későbbi verzióiban eltérő.
Az Adatok Azure Storage-fiókból való betöltésére vonatkozó példa TYPE = HADOOP : Külső adatforrás létrehozása az Azure Storage-adatokhoz való hozzáféréshez a wasb:// felület használatával
RESOURCE_MANAGER_LOCATION = *'ResourceManager_URI[:p ort]'
Ezt az opcionális értéket akkor konfigurálhatja, ha csak Cloudera CDH-hez, Hortonworks HDP-hez vagy Azure Storage-fiókhoz csatlakozik. A támogatott Hadoop-verziók teljes listájáért tekintse meg a PolyBase kapcsolati konfigurációját.
RESOURCE_MANAGER_LOCATION A definiált lekérdezésoptimalizáló költségalapú döntést hoz a teljesítmény javítása érdekében. A MapReduce-feladat segítségével leküldheti a számítást a Hadoopnak.
RESOURCE_MANAGER_LOCATION A beállítás jelentősen csökkentheti a Hadoop és az SQL Server között átvitt adatok mennyiségét, ami jobb lekérdezési teljesítményt eredményezhet.
Ha a Resource Manager nincs megadva, a Számítás hadoopba való leküldése le van tiltva a PolyBase-lekérdezések esetében. Ha külső adatforrást hoz létre a Hadoopra való hivatkozáshoz, a leküldéses leküldés engedélyezve van, konkrét példát és további útmutatást nyújt.
A külső adatforrás létrehozásakor a RESOURCE_MANAGER_LOCATION érték nem lesz érvényesítve. Helytelen érték megadása lekérdezési hibát okozhat a végrehajtás során, amikor leküldéses leküldést kísérel meg, mivel a megadott érték nem oldható fel.
Ahhoz, hogy a PolyBase megfelelően működjön egy Hadoop külső adatforrással, a következő Hadoop-fürtösszetevők portjainak nyitva kell lenniük:
- HDFS-portok
- Névcsomópont
- Datanode
- Erőforrás-menedzser
- Feladat beküldése
- Feladatelőzmények
Ha a port nincs megadva, az alapértelmezett érték a hadoop-kapcsolat konfigurációjának aktuális beállításával lesz kiválasztva.
| Hadoop-kapcsolat | Alapértelmezett Resource Manager-port |
|---|---|
1 |
50300 |
2 |
50300 |
3 |
8021 |
4 |
8032 |
5 |
8050 |
6 |
8032 |
7 |
8050 |
8 |
8032 |
Az alábbi táblázat az összetevők alapértelmezett portjait mutatja be. Létezik Hadoop-verziófüggőség, valamint az egyéni konfiguráció lehetősége, amely nem használja az alapértelmezett port-hozzárendelést.
| Hadoop-fürtösszetevő | Alapértelmezett port |
|---|---|
| NameNode | 8020 |
| DataNode (Adatátvitel, nem jogosultságú IPC-port) | 50010 |
| DataNode (Adatátvitel, jogosultsági IPC-port) | 1019 |
| Resource Manager-feladat beküldése (Hortonworks 1.3) | 50300 |
| Resource Manager-feladat beküldése (Cloudera 4.3) | 8021 |
| Resource Manager-feladat beküldése (Hortonworks 2.0 Windows rendszeren, Cloudera 5.x Linux rendszeren) | 8032 |
| Resource Manager-feladat beküldése (Hortonworks 2.x, 3.0 Linuxon, Hortonworks 2.1-3 Windows rendszeren) | 8050 |
| Resource Manager-feladatelőzmények | 10020 |
Engedélyek
Engedély szükséges CONTROL az SQL Server adatbázisához.
Zárolás
Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.
Biztonság
A PolyBase a legtöbb külső adatforrás proxyalapú hitelesítését támogatja. Hozzon létre egy adatbázis-hatókörű hitelesítő adatot a proxyfiók létrehozásához.
Példák
Fontos
További információ a PolyBase telepítéséről és engedélyezéséről: PolyBase telepítése Windows rendszeren
Egy. Külső adatforrás létrehozása a Hadoopra való hivatkozáshoz
Ha külső adatforrást szeretne létrehozni a Hortonworks HDP- vagy Cloudera CDH Hadoop-fürtre való hivatkozáshoz, adja meg a Hadoop Namenode és a port gépnevét vagy IP-címét.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050'
);
B. Külső adatforrás létrehozása a Hadoopra való hivatkozáshoz, ha engedélyezve van a leküldéses leküldés
Adja meg a RESOURCE_MANAGER_LOCATION leküldéses számítás engedélyezésének lehetőségét a PolyBase-lekérdezésekhez készült Hadoopban. Ha engedélyezve van, a PolyBase költségalapú döntést hoz annak megállapításához, hogy a lekérdezési számítást le kell-e küldeni a Hadoopnak.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8020',
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
C. Külső adatforrás létrehozása a Kerberos által védett Hadoopra való hivatkozáshoz
Annak ellenőrzéséhez, hogy a Hadoop-fürt Kerberos-védelem alatt áll-e, ellenőrizze a Hadoop core-site.xmltulajdonság értékét hadoop.security.authentication . Kerberos által védett Hadoop-fürtre való hivatkozáshoz meg kell adnia egy adatbázis-hatókörű hitelesítő adatot, amely tartalmazza a Kerberos-felhasználónevet és -jelszót. Az adatbázis főkulcsa az adatbázis hatókörébe tartozó hitelesítőadat-titkos kód titkosítására szolgál.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH IDENTITY = '<hadoop_user_name>',
SECRET = '<hadoop_password>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. Külső adatforrás létrehozása az Azure Storage-adatokhoz való hozzáféréshez a wasb:// felület használatával
Ebben a példában a külső adatforrás egy Azure V2 Storage-fiók neve logs. A tárolóedényt nevezik dailyel . Az Azure Storage külső adatforrása csak adatátvitelre használható. Nem támogatja a predikátum leküldését. A hierarchikus névterek nem támogatottak az adatok interfészen keresztüli wasb:// elérésekor.
Ez a példa bemutatja, hogyan hozhatja létre az adatbázis hatókörébe tartozó hitelesítő adatokat egy Azure V2 Storage-fiók hitelesítéséhez. Adja meg az Azure Storage-fiókkulcsot az adatbázis hitelesítőadat-titkos kódjában. Bármilyen sztringet megadhat az adatbázis hatókörébe tartozó hitelesítő identitásban, mivel az nem használható az Azure Storage-beli hitelesítés során. Az Azure Storage-hoz wasbwasbsvaló csatlakozáskor a hitelesítést tárfiók-kulccsal kell elvégezni, nem pedig közös hozzáférésű jogosultságkóddal (SAS).
Az SQL Server 2016-ban (13.x) TYPE az Azure Storage elérésekor is be kell állítani HADOOP .
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
TYPE = HADOOP,
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential
);
Kapcsolódó tartalom
Áttekintés: SQL Server 2017
A következőkre vonatkozik: SQL Server 2017 (14.x)
Létrehoz egy külső adatforrást a PolyBase-lekérdezésekhez. A külső adatforrások kapcsolat létesítésére és az elsődleges használati esetek támogatására szolgálnak:
- Adatvirtualizálás és adatbetöltés a PolyBase használatával az SQL Serverben
- Tömeges betöltési műveletek a
BULK INSERTOPENROWSET
Megjegyzés:
Ez a szintaxis a Linuxon futó SQL Server különböző verzióiban eltérő. A verzióválasztó legördülő listában válassza ki a megfelelő verziót.
Az SQL Server 2019 (15.x) funkcióinak megtekintéséhez látogasson el a CREATE EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁS LÉTREHOZÁSA) webhelyre.
Az SQL Server 2022 (16.x) funkcióinak megtekintéséhez látogasson el a CREATE EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁS LÉTREHOZÁSA) webhelyre.
Megjegyzés:
Ez a szintaxis az SQL Server különböző verzióiban eltérő. A verzióválasztó legördülő listában válassza ki a megfelelő verziót.
Az SQL Server 2019 (15.x) funkcióinak megtekintéséhez látogasson el a CREATE EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁS LÉTREHOZÁSA) webhelyre.
Az SQL Server 2022 (16.x) funkcióinak megtekintéséhez látogasson el a CREATE EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁS LÉTREHOZÁSA) webhelyre.
Transact-SQL szintaxis konvenciók
Az SQL Server 2017 szintaxisa
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = { HADOOP | BLOB_STORAGE } ]
[ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]
Érvek
data_source_name
Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az SQL Server adatbázisában.
LOCATION = '<prefix>://<path[:p ort]>'
Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.
| Külső adatforrás | Csatlakozó helyének előtagja | Hely elérési út | Támogatott helyek termék/szolgáltatás szerint | Hitelesítés |
|---|---|---|---|---|
| Cloudera CDH vagy Hortonworks HDP | hdfs |
<Namenode>[:port] |
SQL Server 2016 (13.x) – SQL Server 2019 (csak 15.x) | Névtelen vagy alapszintű hitelesítés |
| Azure Storage-fiók (V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Az SQL Server 2016-tól kezdve (13.x) A hierarchikus névtér nem támogatott |
Azure Storage-fiókkulcs |
| Tömeges műveletek | https |
<storage_account>.blob.core.windows.net/<container> |
Az SQL Server 2017-től kezdve (14.x) | Közös hozzáférésű jogosultságkód (SAS) |
Hely elérési útja:
-
<Namenode>= a Hadoop-fürt gépneve, névszolgáltatás URI-ja vagy IP-címeNamenode. 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 afs.defaultFSkonfigurációs paraméterrel található. Az alapértelmezett érték a 8020. -
<container>= az adatokat tartalmazó tárfiók tárolója. A gyökértárolók írásvédettek, az adatok nem írhatók vissza a tárolóba. -
<storage_account>= az Azure-erőforrás tárfiókjának neve. -
<server_name>= a gazdagép neve. -
<instance_name>= a névvel ellátott SQL Server-példány neve. Akkor használatos, ha az SQL Server Browser Service fut a célpéldányon.
További megjegyzések és útmutatás a hely beállításához:
- Az SQL Server adatbázismotorja nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.
- Használja ugyanazt a külső adatforrást az összes táblához a Hadoop lekérdezése során, hogy egységes lekérdezési szemantikát biztosítson.
- Adja meg a
Driver={<Name of Driver>}csatlakozáskor a következőtODBC: . -
wasbsNem kötelező, de ajánlott az SQL Server 2017-ben (14.x) az Azure Storage-fiókok eléréséhez, mivel az adatok biztonságos TLS/SSL-kapcsolat használatával lesznek elküldve. - A Sikeres PolyBase-lekérdezések Hadoop-feladatátvétel
Namenodesorán történő biztosításához fontolja meg a Hadoop-fürt virtuális IP-címénekNamenodehaszná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:
-
CREDENTIALcsak akkor szükséges, ha az adatok biztonságban vannak.CREDENTIALnem 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étrehozniSHARED ACCESS SIGNATURE. -
TYPE=BLOB_STORAGEcsak tömeges műveletek esetén engedélyezett; nem hozhat létre külső táblákat külső adatforráshoz a következővelTYPE=BLOB_STORAGE: . - Az Azure Storage-hoz
wasbwasbsvaló csatlakozáskor a hitelesítést tárfiók-kulccsal kell elvégezni, nem pedig közös hozzáférésű jogosultságkóddal (SAS). - Amikor
TYPE=HADOOPa hitelesítő adatokat a tárfiók kulcsával kell létrehozni.SECRET
A közös hozzáférésű jogosultságkódok létrehozásának több módja is van:
SAS-jogkivonatot az Azure Portalra navigálva hozhat létre –><Your_Storage_Account> –> Közös hozzáférésű jogosultságkód –> Engedélyek konfigurálása –> SAS és kapcsolati sztring létrehozása. További információ: Közös hozzáférésű jogosultságkód létrehozása.
SAS-t az Azure Storage Explorerrel hozhat létre és konfigurálhat.
SAS-jogkivonatot programozott módon hozhat létre a PowerShell, az Azure CLI, a .NET és a REST API használatával. További információ: Korlátozott hozzáférés biztosítása az Azure Storage-erőforrásokhoz közös hozzáférésű jogosultságkódok (SAS) használatával.
Az SAS-jogkivonatot a következőképpen kell konfigurálni:
- Sas-jogkivonat létrehozásakor egy kérdőjelet ('?' ) tartalmaz a jogkivonat elején. Zárja ki a bevezetőt
?, ha TITKOS kódként van konfigurálva. - Érvényes lejárati időtartamot használjon (minden dátum UTC-időpontban van).
- Sas-jogkivonat létrehozásakor egy kérdőjelet ('?' ) tartalmaz a jogkivonat elején. Zárja ki a bevezetőt
Adjon legalább olvasási engedélyt a betöltendő fájlhoz (például
srt=o&sp=r). Több közös hozzáférésű jogosultságkód is létrehozható különböző használati esetekhez. Az engedélyeket az alábbiak szerint kell megadni:Tevékenység Engedély Adatok beolvasása fájlból Olvasás Adatok olvasása több fájlból és almappából Olvasás és felsorolás
Példa a with CREDENTIAL and ( ésSHARED ACCESS SIGNATURETYPE = ) használatáraBLOB_STORAGE: Külső adatforrás létrehozása tömeges műveletek végrehajtásához és adatok lekérése az Azure Storage-ból az SQL Database-be
Adatbázis-hatókörű hitelesítő adatok létrehozásához lásd: CREATE DATABASE SCOPED CREDENTIAL.
TÍPUS = * [ HADOOP | BLOB_STORAGE ] *
Megadja a konfigurált külső adatforrás típusát. Ez a paraméter nem mindig szükséges, és csak a Cloudera CDH-hoz, a Hortonworks HDP-hez, egy Azure Storage-fiókhoz vagy egy 2. generációs Azure Data Lake Storage-hoz való csatlakozáskor kell megadni.
- Akkor használható
HADOOP, ha a külső adatforrás a Cloudera CDH, a Hortonworks HDP, az Azure Storage-fiók vagy az Azure Data Lake Storage Gen2. - Használd
BLOB_STORAGEAzure Storage fiókból tömeges műveletek végrehajtásához BULK INSERT vagy OPENROWSET BULK használatával. Bevezetés az SQL Server 2017-be (14.x). HasználjaHADOOPaz Azure Storage-onCREATE EXTERNAL TABLEvaló használatra.
Megjegyzés:
TYPE az Azure Storage elérésekor is be kell állítani HADOOP .
Az Adatok Azure Storage-fiókból való betöltésére vonatkozó példa TYPE = HADOOP : Külső adatforrás létrehozása az Azure Storage-adatokhoz való hozzáféréshez a wasb:// felület használatával
RESOURCE_MANAGER_LOCATION = "ResourceManager_URI[:p ort]"
Ezt az opcionális értéket akkor konfigurálhatja, ha csak Cloudera CDH-hez, Hortonworks HDP-hez vagy Azure Storage-fiókhoz csatlakozik. A támogatott Hadoop-verziók teljes listájáért tekintse meg a PolyBase kapcsolati konfigurációját.
A definiálás után a RESOURCE_MANAGER_LOCATION lekérdezésoptimalizáló költségalapú döntést hoz a teljesítmény javítása érdekében. A MapReduce-feladat segítségével leküldheti a számítást a Hadoopnak.
RESOURCE_MANAGER_LOCATION A beállítás jelentősen csökkentheti a Hadoop és az SQL Server között átvitt adatok mennyiségét, ami jobb lekérdezési teljesítményt eredményezhet.
Ha a Resource Manager nincs megadva, a Számítás hadoopba való leküldése le van tiltva a PolyBase-lekérdezések esetében. Ha külső adatforrást hoz létre a Hadoopra való hivatkozáshoz, a leküldéses leküldés engedélyezve van, konkrét példát és további útmutatást nyújt.
A RESOURCE_MANAGER_LOCATION külső adatforrás létrehozásakor az érték nem lesz érvényesítve. Helytelen érték megadása lekérdezési hibát okozhat a végrehajtás során, amikor leküldéses leküldést kísérel meg, mivel a megadott érték nem oldható fel.
Ahhoz, hogy a PolyBase megfelelően működjön egy Hadoop külső adatforrással, a következő Hadoop-fürtösszetevők portjainak nyitva kell lenniük:
- HDFS-portok
- Névcsomópont
- Datanode
- Erőforrás-menedzser
- Feladat beküldése
- Feladatelőzmények
Ha a port nincs megadva, az alapértelmezett érték a hadoop-kapcsolat konfigurációjának aktuális beállításával lesz kiválasztva.
| Hadoop-kapcsolat | Alapértelmezett Resource Manager-port |
|---|---|
1 |
50300 |
2 |
50300 |
3 |
8021 |
4 |
8032 |
5 |
8050 |
6 |
8032 |
7 |
8050 |
8 |
8032 |
Az alábbi táblázat az összetevők alapértelmezett portjait mutatja be. Létezik Hadoop-verziófüggőség, valamint az egyéni konfiguráció lehetősége, amely nem használja az alapértelmezett port-hozzárendelést.
| Hadoop-fürtösszetevő | Alapértelmezett port |
|---|---|
| NameNode | 8020 |
| DataNode (Adatátvitel, nem jogosultságú IPC-port) | 50010 |
| DataNode (Adatátvitel, jogosultsági IPC-port) | 1019 |
| Resource Manager-feladat beküldése (Hortonworks 1.3) | 50300 |
| Resource Manager-feladat beküldése (Cloudera 4.3) | 8021 |
| Resource Manager-feladat beküldése (Hortonworks 2.0 Windows rendszeren, Cloudera 5.x Linux rendszeren) | 8032 |
| Resource Manager-feladat beküldése (Hortonworks 2.x, 3.0 Linuxon, Hortonworks 2.1-3 Windows rendszeren) | 8050 |
| Resource Manager-feladatelőzmények | 10020 |
Engedélyek
Engedély szükséges CONTROL az SQL Server adatbázisához.
Zárolás
Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.
Biztonság
A PolyBase a legtöbb külső adatforrás proxyalapú hitelesítését támogatja. Hozzon létre egy adatbázis-hatókörű hitelesítő adatot a proxyfiók létrehozásához.
A típussal HADOOP rendelkező SAS-jogkivonatok nem támogatottak. Csak akkor támogatott, ha a BLOB_STORAGE tárfiók hozzáférési kulcsát használja. A típussal HADOOP és SAS-hitelesítő adatokkal rendelkező külső adatforrás létrehozása a következő hibával meghiúsul:
Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account aren't valid.: Error [Parameters provided to connect to the Azure storage account aren't valid.] occurred while accessing external file.'
Példák
Fontos
További információ a PolyBase telepítéséről és engedélyezéséről: PolyBase telepítése Windows rendszeren
Egy. Külső adatforrás létrehozása a Hadoopra való hivatkozáshoz
Ha külső adatforrást szeretne létrehozni a Hortonworks HDP- vagy Cloudera CDH Hadoop-fürtre való hivatkozáshoz, adja meg a Hadoop Namenode és a port gépnevét vagy IP-címét.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050'
);
B. Külső adatforrás létrehozása a Hadoopra való hivatkozáshoz, ha engedélyezve van a leküldéses leküldés
Adja meg a RESOURCE_MANAGER_LOCATION leküldéses számítás engedélyezésének lehetőségét a PolyBase-lekérdezésekhez készült Hadoopban. Ha engedélyezve van, a PolyBase költségalapú döntést hoz annak megállapításához, hogy a lekérdezési számítást le kell-e küldeni a Hadoopnak.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8020',
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
C. Külső adatforrás létrehozása a Kerberos által védett Hadoopra való hivatkozáshoz
Annak ellenőrzéséhez, hogy a Hadoop-fürt Kerberos-védelem alatt áll-e, ellenőrizze a Hadoop core-site.xmltulajdonság értékét hadoop.security.authentication . Kerberos által védett Hadoop-fürtre való hivatkozáshoz meg kell adnia egy adatbázis-hatókörű hitelesítő adatot, amely tartalmazza a Kerberos-felhasználónevet és -jelszót. Az adatbázis főkulcsa az adatbázis hatókörébe tartozó hitelesítőadat-titkos kód titkosítására szolgál.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH IDENTITY = '<hadoop_user_name>',
SECRET = '<hadoop_password>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. Külső adatforrás létrehozása az Azure Storage-adatokhoz való hozzáféréshez a wasb:// felület használatával
Ebben a példában a külső adatforrás egy Azure V2 Storage-fiók neve logs. A tárolóedényt nevezik dailyel . Az Azure Storage külső adatforrása csak adatátvitelre használható. Nem támogatja a predikátum leküldését. A hierarchikus névterek nem támogatottak az adatok interfészen keresztüli wasb:// elérésekor. Az Azure Storage-hoz wasbwasbsvaló csatlakozáskor a hitelesítést tárfiók-kulccsal kell elvégezni, nem pedig közös hozzáférésű jogosultságkóddal (SAS).
Ez a példa bemutatja, hogyan hozhatja létre az adatbázis hatókörébe tartozó hitelesítő adatokat egy Azure V2 Storage-fiók hitelesítéséhez. Adja meg az Azure Storage-fiókkulcsot az adatbázis hitelesítőadat-titkos kódjában. Bármilyen sztringet megadhat az adatbázis hatókörébe tartozó hitelesítő identitásban, mivel az nem használható az Azure Storage-beli hitelesítés során.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
TYPE = HADOOP,
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential
);
Példák: Tömeges műveletek
Fontos
Ne adjon hozzá záró /, fájlnevet vagy közös hozzáférésű jogosultságkód-paramétereket az LOCATION URL-cím végén, amikor külső adatforrást konfigurál tömeges műveletekhez.
E. Külső adatforrás létrehozása az Azure Storage-ból adatokat beolvasó tömeges műveletekhez
A következőkre vonatkozik: SQL Server 2017 (14.x) és újabb verziókra.
A tömeges műveletekhez használja az alábbi adatforrást a BULK INSERT vagy AZ OPENROWSET BULK használatával. A hitelesítő adatoknak identitásként kell beállítaniuk SHARED ACCESS SIGNATURE , nem szabad az SAS-jogkivonatban a kezdőt ? megadniuk, legalább olvasási engedéllyel kell rendelkezniük a betöltendő fájlon (például srt=o&sp=r), és a lejárati időszaknak érvényesnek kell lennie (minden dátum UTC-időpontban van). A közös hozzáférésű jogosultságkódokkal kapcsolatos további információkért lásd: Közös hozzáférésű jogosultságkódok (SAS) használata.
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = -- Remove ? from the beginning of the SAS token'<azure_storage_account_key>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://newinvoices.blob.core.windows.net/week3',
CREDENTIAL = AccessAzureInvoices
);
A példa használatban való megtekintéséhez lásd a TÖMEGES BESZÚRÁS című témakört.
Kapcsolódó tartalom
- KÜLSŐ ADATFORRÁS MÓDOSÍTÁSA (Transact-SQL)
- HOZZON LÉTRE ADATBÁZIS HATÓKÖRŰ HITELTAGOT (Transact-SQL)
- KÜLSŐ FÁJLFORMÁTUM LÉTREHOZÁSA (Transact-SQL)
- HOZZON LÉTRE KÜLSŐ TÁBLÁT (Transact-SQL)
- sys.external_data_sources (Transact-SQL)
- Közös hozzáférésű jogosultságkódok (SAS) használata
- PolyBase-kapcsolat konfigurálása (Transact-SQL)
Áttekintés: SQL Server 2019
A következővonatkozik: SQL Server 2019 (15.x)
Létrehoz egy külső adatforrást a PolyBase-lekérdezésekhez. A külső adatforrások kapcsolat létesítésére és az elsődleges használati esetek támogatására szolgálnak:
- Adatvirtualizálás és adatbetöltés a PolyBase használatával az SQL Serverben
- Tömeges betöltési műveletek a
BULK INSERTOPENROWSET
Megjegyzés:
Ez a szintaxis az SQL Server különböző verzióiban eltérő. A verzióválasztó legördülő listában válassza ki a megfelelő verziót.
Az SQL Server 2022 (16.x) funkcióinak megtekintéséhez látogasson el a CREATE EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁS LÉTREHOZÁSA) webhelyre.
Megjegyzés:
Ez a szintaxis az SQL Server különböző verzióiban eltérő. A verzióválasztó legördülő listában válassza ki a megfelelő verziót.
Az SQL Server 2022 (16.x) funkcióinak megtekintéséhez látogasson el a CREATE EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁS LÉTREHOZÁSA) webhelyre.
Transact-SQL szintaxis konvenciók
Az SQL Server 2019 szintaxisa
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] PUSHDOWN = { ON | OFF } ]
[ [ , ] TYPE = { HADOOP | BLOB_STORAGE } ]
[ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' ]
)
[ ; ]
Érvek
data_source_name
Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az SQL Server adatbázisában.
LOCATION = '<prefix>://<path[:p ort]>'
Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.
| Külső adatforrás | Csatlakozó helyének előtagja | Hely elérési út | Támogatott helyek termék/szolgáltatás szerint | Hitelesítés |
|---|---|---|---|---|
| Cloudera CDH vagy Hortonworks HDP | hdfs |
<Namenode>[:port] |
SQL Server 2016 (13.x) – SQL Server 2019 (15.x) | Névtelen vagy alapszintű hitelesítés |
| Azure Storage-fiók (V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Az SQL Server 2016-tól kezdve (13.x) A hierarchikus névtér nem támogatott |
Azure Storage-fiókkulcs |
| SQL Server | sqlserver |
<server_name>[\<instance_name>][:port] |
Az SQL Server 2019-től kezdve (15.x) | Csak SQL-hitelesítés |
| Jóslat | oracle |
<server_name>[:port] |
Az SQL Server 2019-től kezdve (15.x) | Csak alapszintű hitelesítés |
| Teradata | teradata |
<server_name>[:port] |
Az SQL Server 2019-től kezdve (15.x) | Csak alapszintű hitelesítés |
| MongoDB vagy Cosmos DB API a MongoDB-hez | mongodb |
<server_name>[:port] |
Az SQL Server 2019-től kezdve (15.x) | Csak alapszintű hitelesítés |
| Általános ODBC | odbc |
<server_name>[:port] |
Az SQL Server 2019-től kezdve (15.x) – csak Windows rendszeren | Csak alapszintű hitelesítés |
| Tömeges műveletek | https |
<storage_account>.blob.core.windows.net/<container> |
Az SQL Server 2017-től kezdve (14.x) | Közös hozzáférésű jogosultságkód (SAS) |
| Azure Data Lake Storage Gen2 | abfs[s] |
abfss://<container>@<storage_account>.dfs.core.windows.net |
Az SQL Server 2019 (15.x) CU11+-tól kezdve. | Tárelérési kulcs |
| SQL Server Big Data-fürtök adatkészlete | sqldatapool |
sqldatapool://controller-svc/default |
Csak az SQL Server 2019 Big Data-fürtökben támogatott | Csak alapszintű hitelesítés |
| SQL Server Big Data-fürtök tárolókészlete | sqlhdfs |
sqlhdfs://controller-svc/default |
Csak az SQL Server 2019 Big Data-fürtökben támogatott | Csak alapszintű hitelesítés |
Hely elérési útja:
-
<Namenode>= a Hadoop-fürt gépneve, névszolgáltatás URI-ja vagy IP-címeNamenode. 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 afs.defaultFSkonfigurációs paraméterrel található. Az alapértelmezett érték a 8020. -
<container>= az adatokat tartalmazó tárfiók tárolója. A gyökértárolók írásvédettek, az adatok nem írhatók vissza a tárolóba. -
<storage_account>= az Azure-erőforrás tárfiókjának neve. -
<server_name>= a gazdagép neve. -
<instance_name>= a névvel ellátott SQL Server-példány neve. Akkor használatos, ha az SQL Server Browser Service fut a célpéldányon.
További megjegyzések és útmutatás a hely beállításához:
- Az SQL Server adatbázismotorja nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.
- Használja ugyanazt a külső adatforrást az összes táblához a Hadoop lekérdezése során, hogy egységes lekérdezési szemantikát biztosítson.
- Az összekötő használatával csatlakoztathatja az
sqlserverSQL Server 2019-et (15.x) egy másik SQL Serverhez vagy az Azure SQL Database-hez. - Adja meg a
Driver={<Name of Driver>}csatlakozáskor a következőtODBC: . - Az SQL Server 2019 (15.x) használata
wasbsvagyabfsshasználata nem kötelező, de ajánlott az Azure Storage-fiókok eléréséhez, mivel az adatok biztonságos TLS/SSL-kapcsolat használatával lesznek elküldve. - Az
abfsAzure Storage-fiókok SQL Server 2019 -től (15.x) CU11-től kezdődő elérésekor az API-k vagyabfssAPI-k támogatottak. További információ : Azure Blob Filesystem driver (ABFS). - Az Azure Storage-fiókok (V2)
abfs[s]hierarchikus névterének beállítását az Azure Data Lake Storage Gen2 támogatja az SQL Server 2019 (15.x) CU11+ verziótól kezdve. A hierarchikus névtér beállítás egyébként nem támogatott, és ennek a beállításnak le kell tiltva maradnia. - A Sikeres PolyBase-lekérdezések Hadoop-feladatátvétel
Namenodesorán történő biztosításához fontolja meg a Hadoop-fürt virtuális IP-címénekNamenodehasználatát. Ha nem, hajtsa végre az ALTER EXTERNAL DATA SOURCE parancsot, hogy az új helyre mutasson. -
sqlhdfsAsqldatapoolrendszer 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 .hdfsTovábbi információ azsqlhdfsSQL Server Big Data-fürtök tárolókészleteinek lekérdezéséről: HDFS lekérdezés az SQL Server 2019 Big Data-fürtben. - A HDFS Cloudera (CDP) és a Hortonworks (HDP) külső adatforrások SQL Server-támogatása megszűnt, és nem szerepel az SQL Server 2022 (16.x) és újabb verzióiban. További információkért tekintse meg a Nagy adathalmaz-beállításokat a Microsoft SQL Server platformon.
CONNECTION_OPTIONS = key_value_pair
Az SQL Server 2019 (15.x) és újabb verzióihoz van megadva. További beállításokat ad meg, amikor külső adatforráshoz csatlakozik ODBC . Ha több kapcsolati lehetőséget szeretne használni, különítse el őket egy pontosvesszővel.
Általános kapcsolatokra ODBC , valamint a MongoDB-hez készült SQL Server, Oracle, Teradata, MongoDB és Azure Cosmos DB API beépített ODBC összekötőire vonatkozik.
Ez key_value_pair egy adott kapcsolati lehetőség kulcsszója és értéke. Az elérhető kulcsszavak és értékek a külső adatforrás típusától függenek. Az illesztőprogram neve minimálisan kötelező, de vannak más lehetőségek is, például APP='<your_application_name>'ApplicationIntent= ReadOnly|ReadWrite amelyek szintén hasznosak, és segíthetnek a hibaelhárításban.
A lehetséges kulcsértékpárok a külső adatforrás szállítójához tartoznak. További információ az egyes szolgáltatókról: CREATE EXTERNAL DATA SOURCE (Transact-SQL) CONNECTION_OPTIONS.
Az SQL Server 2019 (15.x) 19.x kumulatív frissítése és újabb verziói további kulcsszavakat vezetnek be az Oracle TNS-fájlok támogatásához:
- A kulcsszó
TNSNamesFilemegadja az Oracle-kiszolgálón található fájl elérési útjáttnsnames.ora. - A kulcsszó
ServerNamea gazdagép nevének és a portnak a lecseréléséhez használttnsnames.oraaliast adja meg.
Pushdown = ON | KI
Csak AZ SQL Server 2019-hez (15.x) van megadva. Meghatározza, hogy a számítás leküldhető-e a külső adatforrásba. Alapértelmezés szerint be van kapcsolva .
PUSHDOWN az SQL Serverhez, az Oracle-hez, a Teradata-hoz, a MongoDB-hez, a MongoDB-hez készült Azure Cosmos DB API-hoz vagy a külső adatforrás szintjén az ODBC-hez való csatlakozáskor támogatott.
A leküldéses leküldés engedélyezése vagy letiltása a lekérdezés szintjén az EXTERNALPUSHDOWN tipp használatával érhető el.
HITELESÍTŐ ADATOK = credential_name
Egy adatbázis-hatókörű hitelesítő adatot ad meg a külső adatforráshoz való hitelesítéshez.
További megjegyzések és útmutatás hitelesítő adatok létrehozásakor:
-
CREDENTIALcsak akkor szükséges, ha az adatok biztonságban vannak.CREDENTIALnem 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étrehozniSHARED ACCESS SIGNATURE. -
TYPE=BLOB_STORAGEcsak tömeges műveletek esetén engedélyezett; nem hozhat létre külső táblákat külső adatforráshoz a következővelTYPE=BLOB_STORAGE: .
A közös hozzáférésű jogosultságkódok létrehozásának több módja is van:
SAS-jogkivonatot az Azure Portalra navigálva hozhat létre –><Your_Storage_Account> –> Közös hozzáférésű jogosultságkód –> Engedélyek konfigurálása –> SAS és kapcsolati sztring létrehozása. További információ: Közös hozzáférésű jogosultságkód létrehozása.
SAS-t az Azure Storage Explorerrel hozhat létre és konfigurálhat.
SAS-jogkivonatot programozott módon hozhat létre a PowerShell, az Azure CLI, a .NET és a REST API használatával. További információ: Korlátozott hozzáférés biztosítása az Azure Storage-erőforrásokhoz közös hozzáférésű jogosultságkódok (SAS) használatával.
Az SAS-jogkivonatot a következőképpen kell konfigurálni:
- Sas-jogkivonat létrehozásakor egy kérdőjelet ('?' ) tartalmaz a jogkivonat elején. Zárja ki a bevezetőt
?, ha TITKOS kódként van konfigurálva. - Érvényes lejárati időtartamot használjon (minden dátum UTC-időpontban van).
- Sas-jogkivonat létrehozásakor egy kérdőjelet ('?' ) tartalmaz a jogkivonat elején. Zárja ki a bevezetőt
Adjon legalább olvasási engedélyt a betöltendő fájlhoz (például
srt=o&sp=r). Több közös hozzáférésű jogosultságkód is létrehozható különböző használati esetekhez. Az engedélyeket az alábbiak szerint kell megadni:Tevékenység Engedély Adatok beolvasása fájlból Olvasás Adatok olvasása több fájlból és almappából Olvasás és felsorolás
Példa a with CREDENTIAL and ( ésSHARED ACCESS SIGNATURETYPE = ) használatáraBLOB_STORAGE: Külső adatforrás létrehozása tömeges műveletek végrehajtásához és adatok lekérése az Azure Storage-ból az SQL Database-be
Adatbázis-hatókörű hitelesítő adatok létrehozásához lásd: CREATE DATABASE SCOPED CREDENTIAL.
TÍPUS = * [ HADOOP | BLOB_STORAGE ] *
Megadja a konfigurált külső adatforrás típusát. Ez a paraméter nem mindig szükséges, és csak a Cloudera CDH-hoz, a Hortonworks HDP-hez, egy Azure Storage-fiókhoz vagy egy 2. generációs Azure Data Lake Storage-hoz való csatlakozáskor kell megadni.
- Az SQL Server 2019-ben (15.x) ne adja meg a TYPE értéket, hacsak nem csatlakozik a Cloudera CDH-hez, a Hortonworks HDP-hez, egy Azure Storage-fiókhoz.
- Akkor használható
HADOOP, ha a külső adatforrás a Cloudera CDH, a Hortonworks HDP, az Azure Storage-fiók vagy az Azure Data Lake Storage Gen2. - Akkor használható
BLOB_STORAGE, ha tömeges műveleteket hajt végre az Azure Storage-fiókból a BULK INSERT vagy az OPENROWSET BULK használatával az SQL Server 2017-zel (14.x). Akkor használhatóHADOOP, ha külső táblát kíván létrehozni az Azure Storage-on. - A HDFS Cloudera (CDP) és a Hortonworks (HDP) külső adatforrások SQL Server-támogatása megszűnt, és nem szerepel az SQL Server 2022 (16.x) és újabb verzióiban. További információkért tekintse meg a Nagy adathalmaz-beállításokat a Microsoft SQL Server platformon.
Ha például TYPE = HADOOP adatokat szeretne betölteni egy Azure Storage-fiókból, olvassa el a Külső adatforrás létrehozása az Adatok azure Storage-ban való eléréséhez a wasb:// felület használatával című témakört.
RESOURCE_MANAGER_LOCATION = "ResourceManager_URI[:p ort]"
Az SQL Server 2019-ben (15.x) ne adjon meg RESOURCE_MANAGER_LOCATION, hacsak nem csatlakozik a Cloudera CDH-hoz, a Hortonworks HDP-hez, egy Azure Storage-fiókhoz.
Ezt az opcionális értéket akkor konfigurálhatja, ha csak Cloudera CDH-hez, Hortonworks HDP-hez vagy Azure Storage-fiókhoz csatlakozik. A támogatott Hadoop-verziók teljes listájáért tekintse meg a PolyBase kapcsolati konfigurációját.
RESOURCE_MANAGER_LOCATION A definiált lekérdezésoptimalizáló költségalapú döntést hoz a teljesítmény javítása érdekében. A MapReduce-feladat segítségével leküldheti a számítást a Hadoopnak.
RESOURCE_MANAGER_LOCATION A beállítás jelentősen csökkentheti a Hadoop és az SQL Server között átvitt adatok mennyiségét, ami jobb lekérdezési teljesítményt eredményezhet.
Ha a Resource Manager nincs megadva, a Számítás hadoopba való leküldése le van tiltva a PolyBase-lekérdezések esetében. Ha külső adatforrást hoz létre a Hadoopra való hivatkozáshoz, a leküldéses leküldés engedélyezve van, konkrét példát és további útmutatást nyújt.
A külső adatforrás létrehozásakor a RESOURCE_MANAGER_LOCATION érték nem lesz érvényesítve. Helytelen érték megadása lekérdezési hibát okozhat a végrehajtás során, amikor leküldéses leküldést kísérel meg, mivel a megadott érték nem oldható fel.
Ahhoz, hogy a PolyBase megfelelően működjön egy Hadoop külső adatforrással, a következő Hadoop-fürtösszetevők portjainak nyitva kell lenniük:
- HDFS-portok
- Névcsomópont
- Datanode
- Erőforrás-menedzser
- Feladat beküldése
- Feladatelőzmények
Ha a port nincs megadva, az alapértelmezett érték a hadoop-kapcsolat konfigurációjának aktuális beállításával lesz kiválasztva.
| Hadoop-kapcsolat | Alapértelmezett Resource Manager-port |
|---|---|
1 |
50300 |
2 |
50300 |
3 |
8021 |
4 |
8032 |
5 |
8050 |
6 |
8032 |
7 |
8050 |
8 |
8032 |
Az alábbi táblázat az összetevők alapértelmezett portjait mutatja be. Létezik Hadoop-verziófüggőség, valamint az egyéni konfiguráció lehetősége, amely nem használja az alapértelmezett port-hozzárendelést.
| Hadoop-fürtösszetevő | Alapértelmezett port |
|---|---|
| NameNode | 8020 |
| DataNode (Adatátvitel, nem jogosultságú IPC-port) | 50010 |
| DataNode (Adatátvitel, jogosultsági IPC-port) | 1019 |
| Resource Manager-feladat beküldése (Hortonworks 1.3) | 50300 |
| Resource Manager-feladat beküldése (Cloudera 4.3) | 8021 |
| Resource Manager-feladat beküldése (Hortonworks 2.0 Windows rendszeren, Cloudera 5.x Linux rendszeren) | 8032 |
| Resource Manager-feladat beküldése (Hortonworks 2.x, 3.0 Linuxon, Hortonworks 2.1-3 Windows rendszeren) | 8050 |
| Resource Manager-feladatelőzmények | 10020 |
Engedélyek
Engedély szükséges CONTROL az SQL Server adatbázisához.
Zárolás
Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.
Biztonság
A PolyBase a legtöbb külső adatforrás proxyalapú hitelesítését támogatja. Hozzon létre egy adatbázis-hatókörű hitelesítő adatot a proxyfiók létrehozásához.
Amikor az SQL Server 2019 Big Data-fürtben lévő tárolóhoz vagy adatkészlethez csatlakozik, a rendszer átadja a felhasználó hitelesítő adatait a háttérrendszernek. Hozzon létre bejelentkezéseket az adatkészletben a hitelesítés engedélyezéséhez.
A típussal HADOOP rendelkező SAS-jogkivonatok nem támogatottak. Csak akkor támogatott, ha a BLOB_STORAGE tárfiók hozzáférési kulcsát használja. A típussal HADOOP és SAS-hitelesítő adatokkal rendelkező külső adatforrás létrehozása a következő hibával meghiúsul:
Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account aren't valid.: Error [Parameters provided to connect to the Azure storage account aren't valid.] occurred while accessing external file.'
Példák
Fontos
További információ a PolyBase telepítéséről és engedélyezéséről: PolyBase telepítése Windows rendszeren
Egy. Külső adatforrás létrehozása az SQL Server 2019-ben az Oracle hivatkozásához
Ha oracle-ra hivatkozó külső adatforrást szeretne létrehozni, győződjön meg arról, hogy rendelkezik adatbázis-hatókörű hitelesítő adatokkal. Lehetséges, hogy engedélyezi vagy letiltja a számítási feladatok leküldését az adatforráson.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
PUSHDOWN = ON,
CREDENTIAL = OracleProxyAccount
);
Az Oracle külső adatforrása is használhat proxyhitelesítést a részletes hozzáférés-vezérléshez. A proxyfelhasználók úgy konfigurálhatók, hogy korlátozott hozzáféréssel rendelkezzenek a megszemélyesített felhasználóhoz képest.
CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential]
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER',
CREDENTIAL = [OracleProxyCredential]
);
Alternatív megoldásként TNS-hitelesítést is használhat.
Az SQL Server 2019 (15.x) 19.x CREATE EXTERNAL DATA SOURCE kumulatív frissítésétől kezdve mostantól támogatja a TNS-fájlok használatát az Oracle-hez való csatlakozáskor.
A CONNECTION_OPTIONS paraméter ki lett bontva, és változókként használva TNSNamesFileServerName tallózik a tnsnames.ora fájlban, és kapcsolatot létesít a kiszolgálóval.
Az alábbi példában az SQL Server futásidőben megkeresi a tnsnames.ora megadott TNSNamesFile fájlhelyet, és megkeresi a megadott gazdagépet és hálózati portot ServerName.
CREATE EXTERNAL DATA SOURCE [external_data_source_name]
WITH (
LOCATION = N'oracle://XE',
CREDENTIAL = [OracleCredentialTest],
CONNECTION_OPTIONS = N'TNSNamesFile=C:\Temp\tnsnames.ora;ServerName=XE'
);
További példák más adatforrásokra, például a MongoDB-re: A PolyBase konfigurálása külső adatok eléréséhez a MongoDB-ben.
B. Külső adatforrás létrehozása a Hadoopra való hivatkozáshoz
Ha külső adatforrást szeretne létrehozni a Hortonworks HDP- vagy Cloudera CDH Hadoop-fürtre való hivatkozáshoz, adja meg a Hadoop Namenode és a port gépnevét vagy IP-címét.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050'
);
C. Külső adatforrás létrehozása a Hadoopra való hivatkozáshoz, ha engedélyezve van a leküldéses leküldés
Adja meg a RESOURCE_MANAGER_LOCATION leküldéses számítás engedélyezésének lehetőségét a PolyBase-lekérdezésekhez készült Hadoopban. Ha engedélyezve van, a PolyBase költségalapú döntést hoz annak megállapításához, hogy a lekérdezési számítást le kell-e küldeni a Hadoopnak.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8020',
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. Külső adatforrás létrehozása a Kerberos által védett Hadoopra való hivatkozáshoz
Annak ellenőrzéséhez, hogy a Hadoop-fürt Kerberos-védelem alatt áll-e, ellenőrizze a Hadoop core-site.xmltulajdonság értékét hadoop.security.authentication . Kerberos által védett Hadoop-fürtre való hivatkozáshoz meg kell adnia egy adatbázis-hatókörű hitelesítő adatot, amely tartalmazza a Kerberos-felhasználónevet és -jelszót. Az adatbázis főkulcsa az adatbázis hatókörébe tartozó hitelesítőadat-titkos kód titkosítására szolgál.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH IDENTITY = '<hadoop_user_name>',
SECRET = '<hadoop_password>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
E. Külső adatforrás létrehozása az Azure Storage-adatokhoz való hozzáféréshez a wasb:// felület használatával
Ebben a példában a külső adatforrás egy Azure V2 Storage-fiók neve logs. A tárolóedényt nevezik dailyel . Az Azure Storage külső adatforrása csak adatátvitelre használható. Nem támogatja a predikátum leküldését. A hierarchikus névterek nem támogatottak az adatok interfészen keresztüli wasb:// elérésekor. Az Azure Storage-hoz wasbwasbsvaló csatlakozáskor a hitelesítést tárfiók-kulccsal kell elvégezni, nem pedig közös hozzáférésű jogosultságkóddal (SAS).
Ez a példa bemutatja, hogyan hozhatja létre az adatbázis hatókörébe tartozó hitelesítő adatokat egy Azure V2 Storage-fiók hitelesítéséhez. Adja meg az Azure Storage-fiókkulcsot az adatbázis hitelesítőadat-titkos kódjában. Bármilyen sztringet megadhat az adatbázis hatókörébe tartozó hitelesítő identitásban, mivel az nem használható az Azure Storage-beli hitelesítés során.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
TYPE = HADOOP,
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential
);
F. Külső adatforrás létrehozása egy elnevezett SQL Server-példány hivatkozásához PolyBase-kapcsolaton keresztül
A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók
Ha olyan külső adatforrást szeretne létrehozni, amely az SQL Server egy elnevezett példányára hivatkozik, CONNECTION_OPTIONS adja meg a példány nevét.
Az alábbi példában WINSQL2019 a gazdagép neve és SQL2019 a példány neve.
'Server=%s\SQL2019' a kulcs értékpárja.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019',
CONNECTION_OPTIONS = 'Server=%s\SQL2019',
CREDENTIAL = SQLServerCredentials
);
Másik lehetőségként portot is használhat az SQL Server alapértelmezett példányához való csatlakozáshoz.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019:58137',
CREDENTIAL = SQLServerCredentials
);
G. Külső adatforrás létrehozása az Always On rendelkezésre állási csoport olvasható másodlagos replikájára való hivatkozáshoz
A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók
Ha olyan külső adatforrást szeretne létrehozni, amely az SQL Server olvasható másodlagos replikájára hivatkozik, adja CONNECTION_OPTIONS meg a ApplicationIntent=ReadOnly. Azt is megteheti, hogy a rendelkezésre állási adatbázist a megadott Database={dbname}módon CONNECTION_OPTIONS állítja be, vagy a rendelkezésre állási adatbázist kell alapértelmezett adatbázisként beállítania az adatbázis hatókörébe tartozó hitelesítő adatokhoz használt bejelentkezéshez. Ezt a rendelkezésre állási csoport összes rendelkezésre állási replikáján kell elvégeznie.
Először hozza létre az adatbázis hatókörébe tartozó hitelesítő adatokat, és tárolja a hitelesítő adatokat egy SQL által hitelesített bejelentkezéshez. A PolyBase-hez készült SQL ODBC-összekötő csak az alapszintű hitelesítést támogatja. Az adatbázis hatókörébe tartozó hitelesítő adatok létrehozása előtt az adatbázisnak rendelkeznie kell egy fő kulccsal a hitelesítő adatok védelméhez. További információ: CREATE MASTER KEY. Az alábbi minta létrehoz egy adatbázis-hatókörű hitelesítő adatokat, és megadja a saját bejelentkezési adatait és jelszavát.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username',
SECRET = 'password';
Ezután hozza létre az új külső adatforrást.
Függetlenül attól, hogy Database=dbname a CONNECTION_OPTIONS rendelkezésre állási adatbázis szerepel-e az adatbázis hatókörébe tartozó hitelesítő adatokban való bejelentkezés alapértelmezett adatbázisaként, a HELY paraméteren belül meg kell adnia az adatbázis nevét egy háromrészes névvel a CREATE EXTERNAL TABLE utasításban. Ilyen például a CREATE EXTERNAL TABLE (KÜLSŐ TÁBLA LÉTREHOZÁSA) című témakör.
Az alábbi példában a rendelkezésre állási csoport figyelőjének neve látható, WINSQL2019AGL és dbname annak az adatbázisnak a neve, amely a CREATE EXTERNAL TABLE utasítás célhelye lesz.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = SQLServerCredentials
);
A rendelkezésre állási csoport átirányítási viselkedését egy külső tábla rendszernézeten ApplicationIntentvaló megadásával sys.servers és létrehozásával szemléltetheti. A következő példaszkriptben két külső adatforrás jön létre, és mindegyikhez egy külső tábla jön létre. A nézetek segítségével tesztelje, hogy melyik kiszolgáló válaszol a kapcsolatra. Hasonló eredmények érhetők el az írásvédett útválasztási funkcióval is. További információ: Always On rendelkezésre állási csoport írásvédett útválasztásának konfigurálása.
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadOnlyIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = [SQLServerCredentials]
);
GO
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadWriteIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadWrite',
CREDENTIAL = [SQLServerCredentials]
);
GO
A rendelkezésre állási csoport adatbázisán belül hozzon létre egy visszaadandó sys.servers nézetet és a helyi példány nevét, amely segít azonosítani, hogy melyik replika válaszol a lekérdezésre. További információ: sys.servers.
CREATE VIEW vw_sys_servers
AS
SELECT [name]
FROM sys.servers
WHERE server_id = 0;
GO
Ezután hozzon létre egy külső táblát a forráspéldányon:
CREATE EXTERNAL TABLE vw_sys_servers_ro (name SYSNAME NOT NULL)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadOnlyIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
CREATE EXTERNAL TABLE vw_sys_servers_rw (name SYSNAME NOT NULL)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadWriteIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
SELECT [name]
FROM dbo.vw_sys_servers_ro;--should return secondary replica instance
SELECT [name]
FROM dbo.vw_sys_servers_rw;--should return primary replica instance
GO
Példák: Tömeges műveletek
Fontos
Ne adjon hozzá záró /, fájlnevet vagy közös hozzáférésű jogosultságkód-paramétereket az LOCATION URL-cím végén, amikor külső adatforrást konfigurál tömeges műveletekhez.
H. Külső adatforrás létrehozása az Azure Storage-ból adatokat beolvasó tömeges műveletekhez
A következőkre vonatkozik: SQL Server 2017 (14.x) és SQL Server 2019 (15.x)
A tömeges műveletekhez használja az alábbi adatforrást a BULK INSERT vagy AZ OPENROWSET BULK használatával. A hitelesítő adatoknak identitásként kell beállítaniuk SHARED ACCESS SIGNATURE , nem szabad az SAS-jogkivonatban a kezdőt ? megadniuk, legalább olvasási engedéllyel kell rendelkezniük a betöltendő fájlon (például srt=o&sp=r), és a lejárati időszaknak érvényesnek kell lennie (minden dátum UTC-időpontban van). A közös hozzáférésű jogosultságkódokkal kapcsolatos további információkért lásd: Közös hozzáférésű jogosultságkódok (SAS) használata.
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = -- Remove ? from the beginning of the SAS token'<azure_shared_access_signature>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://newinvoices.blob.core.windows.net/week3',
CREDENTIAL = AccessAzureInvoices
);
A példa használatban való megtekintéséhez lásd a TÖMEGES BESZÚRÁS című témakört.
Én. Külső adatforrás létrehozása az Azure Storage-adatokhoz való hozzáféréshez a abfs:// felület használatával
A következőkre vonatkozik: SQL Server 2019 (15.x) CU11 és újabb
Ebben a példában a külső adatforrás egy Azure Data Lake Storage Gen2-fiók logs, amely az Azure Blob Fájlrendszer illesztőprogramját (ABFS) használja. A tárolóedényt nevezik dailyel . Az Azure Data Lake Storage Gen2 külső adatforrása csak adatátvitelre szolgál, mivel a predikátum leküldése nem támogatott.
Ez a példa bemutatja, hogyan hozhatja létre az adatbázis hatókörébe tartozó hitelesítő adatokat egy Azure Data Lake Storage Gen2-fiókhoz való hitelesítéshez. Adja meg az Azure Storage-fiókkulcsot az adatbázis hitelesítőadat-titkos kódjában. Bármilyen sztringet megadhat az adatbázis hatókörébe tartozó hitelesítő identitásban, mivel az nem használható az Azure Storage-beli hitelesítés során.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
TYPE = HADOOP,
LOCATION = 'abfss://daily@logs.dfs.core.windows.net/',
CREDENTIAL = AzureStorageCredential
);
J. Külső adatforrás létrehozása általános ODBC-vel a PostgreSQL-hez
A korábbi példákhoz hasonlóan először hozzon létre egy adatbázis-főkulcsot és egy adatbázis-hatókörű hitelesítő adatot. Az adatbázis hatókörébe tartozó hitelesítő adatokat a rendszer a külső adatforráshoz használja. Ez a példa azt is feltételezi, hogy a postgreSQL-hez készült általános ODBC-adatszolgáltató telepítve van a kiszolgálón.
Ebben a példában az általános ODBC-adatszolgáltatót arra használjuk, hogy ugyanabban a hálózatban lévő PostgreSQL-adatbáziskiszolgálóhoz csatlakozzon, ahol a PostgreSQL-kiszolgáló POSTGRES1teljes tartományneve az alapértelmezett TCP 5432-portot használja.
CREATE EXTERNAL DATA SOURCE POSTGRES1
WITH (
LOCATION = 'odbc://POSTGRES1.domain:5432',
CONNECTION_OPTIONS = 'Driver={PostgreSQL Unicode(x64)};',
CREDENTIAL = postgres_credential
);
Kapcsolódó tartalom
- KÜLSŐ ADATFORRÁS MÓDOSÍTÁSA (Transact-SQL)
- HOZZON LÉTRE ADATBÁZIS HATÓKÖRŰ HITELTAGOT (Transact-SQL)
- KÜLSŐ FÁJLFORMÁTUM LÉTREHOZÁSA (Transact-SQL)
- HOZZON LÉTRE KÜLSŐ TÁBLÁT (Transact-SQL)
- sys.external_data_sources (Transact-SQL)
- Közös hozzáférésű jogosultságkódok (SAS) használata
- PolyBase-kapcsolat konfigurálása (Transact-SQL)
Áttekintés: SQL Server 2022
A következővonatkozik: SQL Server 2022 (16.x) és újabb verziók
Létrehoz egy külső adatforrást a PolyBase-lekérdezésekhez. A külső adatforrások kapcsolat létesítésére és az elsődleges használati esetek támogatására szolgálnak:
- Adatvirtualizálás és adatbetöltés a PolyBase használatával az SQL Serverben
- Tömeges betöltési műveletek a
BULK INSERTOPENROWSET
Megjegyzés:
Ez a szintaxis az SQL Server különböző verzióiban eltérő. A verzióválasztó legördülő listában válassza ki a megfelelő verziót. Ez a tartalom az SQL Server 2022 (16.x) és újabb verzióira vonatkozik.
Az SQL Server 2022 szintaxisa
Szintaxis az SQL Server 2022-s és újabb verzióihoz
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] PUSHDOWN = { ON | OFF } ]
)
[ ; ]
Érvek
data_source_name
Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az SQL Server adatbázisában.
LOCATION = '<prefix>://<path[:p ort]>'
Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.
| Külső adatforrás | Csatlakozó helyének előtagja | Hely elérési út | Támogatott helyek termék/szolgáltatás szerint | Hitelesítés |
|---|---|---|---|---|
| Azure Storage-fiók(V2) | abs |
abs://<container_name>@<storage_account_name>.blob.core.windows.net/vagy abs://<storage_account_name>.blob.core.windows.net/<container_name> |
Az SQL Server 2022-től kezdve (16.x) A hierarchikus névtér támogatott. |
Közös hozzáférésű jogosultságkód (SAS) |
| Azure Data Lake Storage Gen2 | adls |
adls://<container_name>@<storage_account_name>.dfs.core.windows.net/vagy adls://<storage_account_name>.dfs.core.windows.net/<container_name> |
Az SQL Server 2022-től kezdve (16.x) | Közös hozzáférésű jogosultságkód (SAS) |
| SQL Server | sqlserver |
<server_name>[\<instance_name>][:port] |
Az SQL Server 2019-től kezdve (15.x) | Csak SQL-hitelesítés |
| Jóslat | oracle |
<server_name>[:port] |
Az SQL Server 2019-től kezdve (15.x) | Csak alapszintű hitelesítés |
| Teradata | teradata |
<server_name>[:port] |
Az SQL Server 2019-től kezdve (15.x) | Csak alapszintű hitelesítés |
| MongoDB vagy Cosmos DB API a MongoDB-hez | mongodb |
<server_name>[:port] |
Az SQL Server 2019-től kezdve (15.x) | Csak alapszintű hitelesítés |
| Általános ODBC | odbc |
<server_name>[:port] |
Az SQL Server 2019-től kezdve (15.x) – csak Windows rendszeren | Csak alapszintű hitelesítés |
| Tömeges műveletek | https |
<storage_account>.blob.core.windows.net/<container> |
Az SQL Server 2017-től kezdve (14.x) | Közös hozzáférésű jogosultságkód (SAS) |
| S3-kompatibilis objektumtároló | s3 |
- S3-kompatibilis: s3://<server_name>:<port>/- AWS S3: s3://<bucket_name>.S3.amazonaws.com[:port]/<folder>vagy s3://s3.amazonaws.com[:port]/<bucket_name>/<folder> |
Az SQL Server 2022-től kezdve (16.x) | Alapszintű vagy átmenő (STS) * |
* Adatbázis-hatókörű hitelesítő adatoknak kell lenniük, ahol az IDENTITÁS kódolt IDENTITY = 'S3 Access Key' , és a SECRET argumentum formátuma = '<AccessKeyID>:<SecretKeyID>' vagy továbbítási (STS) engedélyezése. További információ: A PolyBase konfigurálása külső adatok S3-kompatibilis objektumtárolóban való eléréséhez.
Hely elérési útja:
-
port= Az a port, amelyen a külső adatforrás figyel. Sok esetben nem kötelező, a hálózati konfigurációtól függően. -
<container_name>= az adatokat tartalmazó tárfiók tárolója. A gyökértárolók írásvédettek, az adatok nem írhatók vissza a tárolóba. -
<storage_account>= az Azure-erőforrás tárfiókjának neve. -
<server_name>= a gazdagép neve. -
<instance_name>= a névvel ellátott SQL Server-példány neve. Akkor használatos, ha az SQL Server Browser Service fut a célpéldányon. -
<ip_address>:<port>= Csak S3-kompatibilis objektumtárolók esetén (az SQL Server 2022-től kezdve (16.x)) az S3-kompatibilis tárolóhoz való csatlakozáshoz használt végpont és port. -
<bucket_name>= Csak S3-kompatibilis objektumtárolók esetén (az SQL Server 2022-től kezdve (16.x)) a tárolási platformra jellemző. -
<region>= Csak S3-kompatibilis objektumtárolók esetén (az SQL Server 2022-től kezdve (16.x)) a tárolási platformra jellemző. -
<folder>= A tárolási útvonal része a tárolási URL-címen belül.
További megjegyzések és útmutatás a hely beállításához:
- Az SQL Server adatbázismotorja nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.
- Az összekötő használatával csatlakoztathatja az
sqlserverSQL Server 2019-et (15.x) egy másik SQL Serverhez vagy az Azure SQL Database-hez. - Adja meg a
Driver={<Name of Driver>}csatlakozáskor a következőtODBC: . - Az Előtaggal
adlsrendelkező Azure Storage-fiókok (V2) hierarchikus névtérbeállítása az SQL Server 2022-ben (16.x) futó Azure Data Lake Storage Gen2-n keresztül támogatott.
- A HDFS Cloudera (CDP) és a Hortonworks (HDP) külső adatforrások SQL Server-támogatása megszűnik, és nem szerepel az SQL Server 2022 -ben (16.x). Az SQL Server 2022-ben (16.x) nincs szükség a TYPE argumentum használatára.
- További információ az S3-kompatibilis objektumtárolásról és a PolyBase-ről az SQL Server 2022-től (16.x) kezdődően: A PolyBase konfigurálása külső adatok S3-kompatibilis objektumtárolóban való eléréséhez. Egy parquet-fájl S3-kompatibilis objektumtárolón belüli lekérdezésére példa: Virtualize parquet file in a S3-kompatibilis objektumtárolóban a PolyBase használatával.
- A korábbi verzióktól eltérően az SQL Server 2022-ben (16.x) az Azure Storage-fiókhoz (v2) használt előtag a következőre
wasb[s]absváltozott: . - A korábbi verzióktól eltérően az SQL Server 2022-ben (16.x) az Azure Data Lake Storage Gen2 előtagja a következőre
abfs[s]adlsváltozott: . - Ha például a PolyBase használatával virtualizál egy CSV-fájlt az Azure Storage-ban, olvassa el a CSV-fájl virtualizálása a PolyBase-lel című témakört.
- Ha például a PolyBase használatával virtualizál egy deltatáblát az ADLS Gen2-ben, olvassa el a Delta tábla virtualizálása a PolyBase használatával című témakört.
- Az SQL Server 2022 (16.x) teljes mértékben támogatja az Azure Storage-fiók 2-es (
abs) és az Azure Data Lake Gen2 (adls) két URL-formátumát.- A LOCATION elérési út a következő formátumokat használhatja:
<container>@<storage_account_name>..(ajánlott) vagy<storage_account_name>../<container>. Például:- Azure Storage-fiók v2:
abs://<container>@<storage_account_name>.blob.core.windows.net(ajánlott) vagyabs://<storage_account_name>.blob.core.windows.net/<container>.
- Azure Storage-fiók v2:
- A LOCATION elérési út a következő formátumokat használhatja:
- Az Azure Data Lake Gen2 a következőket támogatja:
adls://<container>@<storage_account_name>.blob.core.windows.net(ajánlott) vagyadls://<storage_account_name>.dfs.core.windows.net/<container>.
CONNECTION_OPTIONS = key_value_pair
Az SQL Server 2019 (15.x) és újabb verzióihoz van megadva. További beállításokat ad meg, amikor külső adatforráshoz csatlakozik ODBC . Ha több kapcsolati lehetőséget szeretne használni, különítse el őket egy pontosvesszővel.
Általános kapcsolatokra ODBC , valamint a MongoDB-hez készült SQL Server, Oracle, Teradata, MongoDB és Azure Cosmos DB API beépített ODBC összekötőire vonatkozik.
Ez key_value_pair egy adott kapcsolati lehetőség kulcsszója és értéke. Az elérhető kulcsszavak és értékek a külső adatforrás típusától függenek. Az illesztőprogram neve minimálisan kötelező, de vannak más lehetőségek is, például APP='<your_application_name>'ApplicationIntent= ReadOnly|ReadWrite amelyek szintén hasznosak, és segíthetnek a hibaelhárításban.
A lehetséges kulcsértékpárok az illesztőprogramra vonatkoznak. További információ az egyes szolgáltatókról: CREATE EXTERNAL DATA SOURCE (Transact-SQL) CONNECTION_OPTIONS.
Az SQL Server 2022 (16.x) 2. kumulatív frissítésétől kezdve további kulcsszavak jelentek meg az Oracle TNS-fájlok támogatásához:
- A kulcsszó
TNSNamesFilemegadja az Oracle-kiszolgálón található fájl elérési útjáttnsnames.ora. - A kulcsszó
ServerNamea gazdagép nevének és a portnak a lecseréléséhez használttnsnames.oraaliast adja meg.
PUSHDOWN = BE | KI
A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók. Meghatározza, hogy a számítás leküldhető-e a külső adatforrásba. Alapértelmezés szerint be van kapcsolva.
PUSHDOWN az SQL Serverhez, az Oracle-hez, a Teradata-hoz, a MongoDB-hez, a MongoDB-hez készült Azure Cosmos DB API-hoz vagy a külső adatforrás szintjén az ODBC-hez való csatlakozáskor támogatott.
A leküldéses leküldés engedélyezése vagy letiltása a lekérdezés szintjén az EXTERNALPUSHDOWN tipp használatával érhető el.
HITELESÍTŐ ADATOK = credential_name
Egy adatbázis-hatókörű hitelesítő adatot ad meg a külső adatforráshoz való hitelesítéshez.
További megjegyzések és útmutatás hitelesítő adatok létrehozásakor:
-
CREDENTIALcsak akkor szükséges, ha az adatok biztonságban vannak.CREDENTIALnem szükséges a névtelen hozzáférést lehetővé tevő adathalmazokhoz. - Az Azure Storage-fiók (V2) vagy az Azure Data Lake Storage Gen2 elérésekor a
IDENTITYkövetkezőnek kell lennieSHARED ACCESS SIGNATURE: . - Példa: Külső adatforrás létrehozása tömeges műveletek végrehajtásához és adatok lekéréséhez az Azure Storage-ból az SQL Database-be.
A közös hozzáférésű jogosultságkódok létrehozásának több módja is van:
SAS-jogkivonatot az Azure Portalra navigálva hozhat létre –><Your_Storage_Account> –> Közös hozzáférésű jogosultságkód –> Engedélyek konfigurálása –> SAS és kapcsolati sztring létrehozása. További információ: Közös hozzáférésű jogosultságkód létrehozása.
SAS-t az Azure Storage Explorerrel hozhat létre és konfigurálhat.
SAS-jogkivonatot programozott módon hozhat létre a PowerShell, az Azure CLI, a .NET és a REST API használatával. További információ: Korlátozott hozzáférés biztosítása az Azure Storage-erőforrásokhoz közös hozzáférésű jogosultságkódok (SAS) használatával.
Az SAS-jogkivonatot a következőképpen kell konfigurálni:
- Sas-jogkivonat létrehozásakor egy kérdőjelet ('?' ) tartalmaz a jogkivonat elején. Zárja ki a bevezetőt
?, ha TITKOS kódként van konfigurálva. - Érvényes lejárati időtartamot használjon (minden dátum UTC-időpontban van).
- Sas-jogkivonat létrehozásakor egy kérdőjelet ('?' ) tartalmaz a jogkivonat elején. Zárja ki a bevezetőt
Adjon legalább olvasási engedélyt a betöltendő fájlhoz (például
srt=o&sp=r). Több közös hozzáférésű jogosultságkód is létrehozható különböző használati esetekhez. Az engedélyeket az alábbiak szerint kell megadni:Tevékenység Engedély Adatok beolvasása fájlból Olvasás Adatok olvasása több fájlból és almappából Olvasás és felsorolás Külső tábla létrehozása kijelölésként (CETAS) Olvasás, létrehozás, lista és írás Az Azure Blob Storage és az Azure Data Lake Gen 2 esetében:
- Engedélyezett szolgáltatások:
Blobki kell jelölni az SAS-jogkivonat létrehozásához
- Engedélyezett szolgáltatások:
Engedélyezett erőforrástípusok:
ContainerésObjectki kell jelölni az SAS-jogkivonat létrehozásához
Ha például S3-kompatibilis objektumtárolót és PolyBase-t használ CREDENTIAL , tekintse meg a PolyBase konfigurálását az S3-kompatibilis objektumtárolóban lévő külső adatok eléréséhez.
Adatbázis-hatókörű hitelesítő adatok létrehozásához lásd: CREATE DATABASE SCOPED CREDENTIAL.
Engedélyek
Engedély szükséges CONTROL az SQL Server adatbázisához.
Zárolás
Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.
Biztonság
A PolyBase a legtöbb külső adatforrás proxyalapú hitelesítését támogatja. Hozzon létre egy adatbázis-hatókörű hitelesítő adatot a proxyfiók létrehozásához.
Frissítés az SQL Server 2022-re
Az SQL Server 2022-től kezdve (16.x) a Hadoop külső adatforrásai már nem támogatottak. Manuálisan kell újból létrehozni a korábban létrehozott külső adatforrásokat TYPE = HADOOP, valamint a külső adatforrást használó külső táblákat.
A felhasználóknak a külső adatforrásaikat is konfigurálniuk kell, hogy új összekötőket használjanak az Azure Storage-hoz való csatlakozáskor.
| Külső adatforrás | Ettől kezdve | Há |
|---|---|---|
| Azure Blob Storage | wasb[s] |
abs |
| ADLS Gen2 | abfs[s] |
adls |
Példák
Fontos
További információ a PolyBase telepítéséről és engedélyezéséről: PolyBase telepítése Windows rendszeren
Egy. Külső adatforrás létrehozása az SQL Serveren az Oracle-ra való hivatkozáshoz
Ha oracle-ra hivatkozó külső adatforrást szeretne létrehozni, győződjön meg arról, hogy rendelkezik adatbázis-hatókörű hitelesítő adatokkal. Lehetséges, hogy engedélyezi vagy letiltja a számítási feladatok leküldését az adatforráson.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
PUSHDOWN = ON,
CREDENTIAL = OracleProxyAccount
);
Az Oracle külső adatforrása is használhat proxyhitelesítést a részletes hozzáférés-vezérléshez. A proxyfelhasználók úgy konfigurálhatók, hogy korlátozott hozzáféréssel rendelkezzenek a megszemélyesített felhasználóhoz képest.
CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential]
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER',
CREDENTIAL = [OracleProxyCredential]
);
Másik lehetőségként hitelesítést is végezhet TNS használatával.
Az SQL Server 2022 (16.x) 2 CREATE EXTERNAL DATA SOURCE . kumulatív frissítésétől kezdve mostantól támogatja a TNS-fájlok használatát az Oracle-hez való csatlakozáskor.
A CONNECTION_OPTIONS paraméter ki lett bontva, és változókként használva TNSNamesFileServerName tallózik a tnsnames.ora fájlban, és kapcsolatot létesít a kiszolgálóval.
Az alábbi példában az SQL Server futásidőben megkeresi a tnsnames.ora megadott TNSNamesFile fájlhelyet, és megkeresi a megadott gazdagépet és hálózati portot ServerName.
CREATE EXTERNAL DATA SOURCE [external_data_source_name]
WITH (
LOCATION = N'oracle://XE',
CREDENTIAL = [OracleCredentialTest],
CONNECTION_OPTIONS = N'TNSNamesFile=C:\Temp\tnsnames.ora;ServerName=XE'
);
B. Külső adatforrás létrehozása egy elnevezett SQL Server-példány hivatkozásához PolyBase-kapcsolaton keresztül
A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók
Ha olyan külső adatforrást szeretne létrehozni, amely az SQL Server egy elnevezett példányára hivatkozik, CONNECTION_OPTIONS adja meg a példány nevét.
Először hozza létre az adatbázis hatókörébe tartozó hitelesítő adatokat, és tárolja a hitelesítő adatokat egy SQL által hitelesített bejelentkezéshez. A PolyBase-hez készült SQL ODBC-összekötő csak az alapszintű hitelesítést támogatja. Az adatbázis hatókörébe tartozó hitelesítő adatok létrehozása előtt az adatbázisnak rendelkeznie kell egy fő kulccsal a hitelesítő adatok védelméhez. További információ: CREATE MASTER KEY. Az alábbi minta létrehoz egy adatbázis-hatókörű hitelesítő adatokat, és megadja a saját bejelentkezési adatait és jelszavát.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username',
SECRET = 'password';
Az alábbi példában WINSQL2019 a gazdagép neve és SQL2019 a példány neve.
'Server=%s\SQL2019' a kulcs értékpárja.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019',
CONNECTION_OPTIONS = 'Server=%s\SQL2019',
CREDENTIAL = SQLServerCredentials
);
Másik lehetőségként portot is használhat az SQL Server alapértelmezett példányához való csatlakozáshoz.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019:58137',
CREDENTIAL = SQLServerCredentials
);
C. Külső adatforrás létrehozása az Always On rendelkezésre állási csoport olvasható másodlagos replikájára való hivatkozáshoz
A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók
Ha olyan külső adatforrást szeretne létrehozni, amely az SQL Server olvasható másodlagos replikájára hivatkozik, adja CONNECTION_OPTIONS meg a ApplicationIntent=ReadOnly. Azt is megteheti, hogy a rendelkezésre állási adatbázist a megadott Database={dbname}módon CONNECTION_OPTIONS állítja be, vagy a rendelkezésre állási adatbázist kell alapértelmezett adatbázisként beállítania az adatbázis hatókörébe tartozó hitelesítő adatokhoz használt bejelentkezéshez. Ezt a rendelkezésre állási csoport összes rendelkezésre állási replikáján kell elvégeznie.
Először hozza létre az adatbázis hatókörébe tartozó hitelesítő adatokat, és tárolja a hitelesítő adatokat egy SQL által hitelesített bejelentkezéshez. A PolyBase-hez készült SQL ODBC-összekötő csak az alapszintű hitelesítést támogatja. Az adatbázis hatókörébe tartozó hitelesítő adatok létrehozása előtt az adatbázisnak rendelkeznie kell egy fő kulccsal a hitelesítő adatok védelméhez. További információ: CREATE MASTER KEY. Az alábbi minta létrehoz egy adatbázis-hatókörű hitelesítő adatokat, és megadja a saját bejelentkezési adatait és jelszavát.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username',
SECRET = 'password';
Ezután hozza létre az új külső adatforrást.
Függetlenül attól, hogy Database=dbname a CONNECTION_OPTIONS rendelkezésre állási adatbázis szerepel-e az adatbázis hatókörébe tartozó hitelesítő adatokban való bejelentkezés alapértelmezett adatbázisaként, a HELY paraméteren belül meg kell adnia az adatbázis nevét egy háromrészes névvel a CREATE EXTERNAL TABLE utasításban. Ilyen például a CREATE EXTERNAL TABLE (KÜLSŐ TÁBLA LÉTREHOZÁSA) című témakör.
Az alábbi példában a rendelkezésre állási csoport figyelőjének neve látható, WINSQL2019AGL és dbname annak az adatbázisnak a neve, amely a CREATE EXTERNAL TABLE utasítás célhelye lesz.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = SQLServerCredentials
);
A rendelkezésre állási csoport átirányítási viselkedését egy külső tábla rendszernézeten ApplicationIntentvaló megadásával sys.servers és létrehozásával szemléltetheti. A következő példaszkriptben két külső adatforrás jön létre, és mindegyikhez egy külső tábla jön létre. A nézetek segítségével tesztelje, hogy melyik kiszolgáló válaszol a kapcsolatra. Hasonló eredmények érhetők el az írásvédett útválasztási funkcióval is. További információ: Always On rendelkezésre állási csoport írásvédett útválasztásának konfigurálása.
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadOnlyIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = [SQLServerCredentials]
);
GO
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadWriteIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadWrite',
CREDENTIAL = [SQLServerCredentials]
);
GO
A rendelkezésre állási csoport adatbázisán belül hozzon létre egy visszaadandó sys.servers nézetet és a helyi példány nevét, amely segít azonosítani, hogy melyik replika válaszol a lekérdezésre. További információ: sys.servers.
CREATE VIEW vw_sys_servers
AS
SELECT [name]
FROM sys.servers
WHERE server_id = 0;
GO
Ezután hozzon létre egy külső táblát a forráspéldányon:
CREATE EXTERNAL TABLE vw_sys_servers_ro (name SYSNAME NOT NULL)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadOnlyIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
CREATE EXTERNAL TABLE vw_sys_servers_rw (name SYSNAME NOT NULL)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadWriteIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
SELECT [name]
FROM dbo.vw_sys_servers_ro;--should return secondary replica instance
SELECT [name]
FROM dbo.vw_sys_servers_rw;--should return primary replica instance
GO
D. Külső adatforrás létrehozása parquet-fájl lekérdezéséhez S3-kompatibilis objektumtárolóban a PolyBase használatával
A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók
Az alábbi példaszkript létrehoz egy külső adatforrást s3_ds az SQL Server forrásfelhasználói adatbázisában. A külső adatforrás a s3_dc adatbázis hatókörébe tartozó hitelesítő adatokra hivatkozik.
CREATE DATABASE SCOPED CREDENTIAL s3_dc
WITH IDENTITY = 'S3 Access Key', -- for S3-compatible object storage the identity must always be S3 Access Key
SECRET = '<access_key_id>:<secret_key_id>' -- provided by the S3-compatible object storage
GO
CREATE EXTERNAL DATA SOURCE s3_ds
WITH (
LOCATION = 's3://<ip_address>:<port>/',
CREDENTIAL = s3_dc
);
GO
Ellenőrizze az új külső adatforrást sys.external_data_sources.
SELECT *
FROM sys.external_data_sources;
Ezután az alábbi példa bemutatja, hogy a T-SQL használatával lekérdezhető egy S3-kompatibilis objektumtárolóban tárolt parquet fájl OPENROWSET-lekérdezésen keresztül. További információ: Parquet-fájl virtualizálása egy S3-kompatibilis objektumtárolóban a PolyBase használatával.
SELECT *
FROM OPENROWSET (
BULK '/<bucket>/<parquet_folder>',
FORMAT = 'PARQUET',
DATA_SOURCE = 's3_ds'
) AS [cc];
E. Külső adatforrás létrehozása általános ODBC-vel a PostgreSQL-hez
A korábbi példákhoz hasonlóan először hozzon létre egy adatbázis-főkulcsot és egy adatbázis-hatókörű hitelesítő adatot. Az adatbázis hatókörébe tartozó hitelesítő adatokat a rendszer a külső adatforráshoz használja. Ez a példa azt is feltételezi, hogy a postgreSQL-hez készült általános ODBC-adatszolgáltató telepítve van a kiszolgálón.
Ebben a példában az általános ODBC-adatszolgáltatót arra használjuk, hogy ugyanabban a hálózatban lévő PostgreSQL-adatbáziskiszolgálóhoz csatlakozzon, ahol a PostgreSQL-kiszolgáló POSTGRES1teljes tartományneve az alapértelmezett TCP 5432-portot használja.
CREATE EXTERNAL DATA SOURCE POSTGRES1
WITH (
LOCATION = 'odbc://POSTGRES1.domain:5432',
CONNECTION_OPTIONS = 'Driver={PostgreSQL Unicode(x64)};',
CREDENTIAL = postgres_credential
);
Azure Storage
Közös hozzáférésű jogosultságkód létrehozása
Az Azure Blob Storage és az Azure Data Lake Storage (ADLS) Gen2 esetében a támogatott hitelesítési módszer a közös hozzáférésű jogosultságkód (SAS). A közös hozzáférésű jogosultságkód-jogkivonatok létrehozásának egyik egyszerű módja az alábbi lépések végrehajtása. További információ: CREDENTIAL.
Lépjen az Azure Portalra és a kívánt tárfiókra.
Keresse meg a kívánt tárolót a Data Storage menüben.
Válassza ki a megosztott hozzáférési jogkivonatokat.
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 Válassza ki a jogkivonat lejárati dátumát.
SAS-jogkivonat és URL-cím létrehozása.
Másolja ki az SAS-jogkivonatot.
F. Külső adatforrás létrehozása az Azure Blob Storage-adatokhoz való hozzáféréshez a abs:// felület használatával
A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók
Az SQL Server 2022-től kezdve (16.x) használjon egy új előtagot abs az Azure Storage-fiók 2-hez. Az abs előtag támogatja a hitelesítést a következő használatával SHARED ACCESS SIGNATURE: . Az abs előtag lecseréli wasba korábbi verziókban használt előtagot. A HADOOP már nem támogatott, nincs többé szükség a használatára TYPE = BLOB_STORAGE.
Az Azure Storage-fiókkulcsra már nincs szükség, ehelyett SAS-jogkivonatot használ, ahogy az alábbi példában látható:
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
GO
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredentialv2
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', -- to use SAS the identity must be fixed as-is
SECRET = '<Blob_SAS_Token>';
GO
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredentialv2
);
Az Azure Blob Storage-ban tárolt CSV-fájlok elérésére vonatkozó részletesebb példákért lásd a CSV-fájlok Virtualizálása a PolyBase-lel című témakört.
G. Külső adatforrás létrehozása az adatok eléréséhez az Azure Data Lake Gen2-ben
A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók
Az SQL Server 2022-től kezdve (16.x) használjon egy új előtagot adls az Azure Data Lake Gen2-hez, a korábbi verziókban használt helyett abfs . Az adls előtag az SAS-jogkivonatot is támogatja hitelesítési módszerként az alábbi példában látható módon:
--Create a database scoped credential using SAS Token
CREATE DATABASE SCOPED CREDENTIAL datalakegen2
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<DataLakeGen2_SAS_Token>';
GO
CREATE EXTERNAL DATA SOURCE data_lake_gen2_dfs
WITH (
LOCATION = 'adls://<container>@<storage_account>.dfs.core.windows.net',
CREDENTIAL = datalakegen2
);
Az Azure Data Lake Gen2-ben tárolt deltafájlok elérésére vonatkozó részletesebb példa: A deltatábla virtualizálása a PolyBase használatával.
Példák: Tömeges műveletek
Fontos
Ne adjon hozzá záró /, fájlnevet vagy közös hozzáférésű jogosultságkód-paramétereket az LOCATION URL-cím végén, amikor külső adatforrást konfigurál tömeges műveletekhez.
H. Külső adatforrás létrehozása az Azure Storage-ból adatokat beolvasó tömeges műveletekhez
A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók.
A tömeges műveletekhez használja az alábbi adatforrást a BULK INSERT vagy AZ OPENROWSET BULK használatával. A hitelesítő adatoknak identitásként kell beállítaniuk SHARED ACCESS SIGNATURE , nem szabad az SAS-jogkivonatban a kezdőt ? megadniuk, legalább olvasási engedéllyel kell rendelkezniük a betöltendő fájlon (például srt=o&sp=r), és a lejárati időszaknak érvényesnek kell lennie (minden dátum UTC-időpontban van). A közös hozzáférésű jogosultságkódokkal kapcsolatos további információkért lásd: Közös hozzáférésű jogosultságkódok (SAS) használata.
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
-- Remove ? from the beginning of the SAS token
SECRET = '<azure_shared_access_signature>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = AccessAzureInvoices,
);
Kapcsolódó tartalom
- KÜLSŐ ADATFORRÁS MÓDOSÍTÁSA (Transact-SQL)
- HOZZON LÉTRE ADATBÁZIS HATÓKÖRŰ HITELTAGOT (Transact-SQL)
- KÜLSŐ FÁJLFORMÁTUM LÉTREHOZÁSA (Transact-SQL)
- HOZZON LÉTRE KÜLSŐ TÁBLÁT (Transact-SQL)
- sys.external_data_sources (Transact-SQL)
- Közös hozzáférésű jogosultságkódok (SAS) használata
- PolyBase-kapcsolat konfigurálása (Transact-SQL)
Áttekintés: SQL Server 2025
Vonatkozik: SQL Server 2025 (17.x)
Létrehoz egy külső adatforrást a PolyBase-lekérdezésekhez. A külső adatforrások kapcsolat létesítésére és az elsődleges használati esetek támogatására szolgálnak:
- Adatvirtualizálás és adatbetöltés a PolyBase használatával az SQL Serverben
- Tömeges betöltési műveletek a
BULK INSERTOPENROWSET
Támogatja az Azure Arc által engedélyezett példányok menedzselt identitású kapcsolatait. Részletekért tekintse át a Connect to Azure Storage with managed identity programot a PolyBase-től.
Megjegyzés:
Ez a szintaxis az SQL Server különböző verzióiban eltérő. A verzióválasztó legördülő listában válassza ki a megfelelő verziót. Ez a tartalom az SQL Server 2025 (17.x) és későbbi verziókra vonatkozik.
Szintaxis az SQL Server 2025-ös és újabb verzióihoz
A szintaxisi konvenciókról további információt Transact-SQL szintaxiskonvenciákat.
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] PUSHDOWN = { ON | OFF } ]
)
[ ; ]
Érvek
data_source_name
Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az SQL Server adatbázisában.
LOCATION = '<prefix>://<path[:p ort]>'
Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.
| Külső adatforrás | Csatlakozó helyének előtagja | Hely elérési út | Támogatott helyek termék/szolgáltatás szerint | Hitelesítés |
|---|---|---|---|---|
| Azure Storage-fiók(V2) | abs |
abs://<container_name>@<storage_account_name>.blob.core.windows.net/vagy abs://<storage_account_name>.blob.core.windows.net/<container_name> |
Az SQL Server 2022-től kezdve (16.x) A hierarchikus névtér támogatott. |
Közös hozzáférésű jogosultságkód (SAS) vagy PolyBase-támogatás felügyelt identitáshoz az Azure Storage 1-be |
| Azure Data Lake Storage Gen2 | adls |
adls://<container_name>@<storage_account_name>.dfs.core.windows.net/vagy adls://<storage_account_name>.dfs.core.windows.net/<container_name> |
Az SQL Server 2022-től kezdve (16.x) | Közös hozzáférésű jogosultságkód (SAS) vagy PolyBase-támogatás felügyelt identitáshoz az Azure Storage 1-be |
| SQL Server | sqlserver |
<server_name>[\<instance_name>][:port] |
Az SQL Server 2019-től kezdve (15.x) | Csak SQL-hitelesítés |
| Jóslat | oracle |
<server_name>[:port] |
Az SQL Server 2019-től kezdve (15.x) | Csak alapszintű hitelesítés |
| Teradata | teradata |
<server_name>[:port] |
Az SQL Server 2019-től kezdve (15.x) | Csak alapszintű hitelesítés |
| MongoDB vagy Cosmos DB API a MongoDB-hez | mongodb |
<server_name>[:port] |
Az SQL Server 2019-től kezdve (15.x) | Csak alapszintű hitelesítés |
| Általános ODBC | odbc |
<server_name>[:port] |
Az SQL Server 2019-től kezdve (15.x) – csak Windows rendszeren | Csak alapszintű hitelesítés |
| Tömeges műveletek | https |
<storage_account>.blob.core.windows.net/<container> |
Az SQL Server 2017-től kezdve (14.x) | Közös hozzáférésű jogosultságkód (SAS) |
| S3-kompatibilis objektumtároló | s3 |
- S3-kompatibilis: s3://<server_name>:<port>/- AWS S3: s3://<bucket_name>.S3.amazonaws.com[:port]/<folder>vagy s3://s3.amazonaws.com[:port]/<bucket_name>/<folder> |
Az SQL Server 2022-től kezdve (16.x) | Alapszintű vagy átmenő (STS) 2 |
1 Az Azure Arc által engedélyezett SQL Server 2025 (17.x) példányt igényel. Részletekért tekintse át a Connect to Azure Storage with managed identity programot a PolyBase-től.
2Adatbázis-hatókörű hitelesítő adatoknak kell lenniük, ahol a IDENTITY hitelesítő adatok nehezen kódoltak IDENTITY = 'S3 Access Key' , és az SECRET argumentum formátuma = '<AccessKeyID>:<SecretKeyID>' vagy továbbítási (STS) engedélyezése. További információ: A PolyBase konfigurálása külső adatok S3-kompatibilis objektumtárolóban való eléréséhez.
Hely elérési útja:
| Hely elérési út | Leírás |
|---|---|
port |
Az a port, amelyen a külső adatforrás figyel. Sok esetben nem kötelező, a hálózati konfigurációtól függően. |
<container_name> |
Az adatokat tartalmazó tárfiók tárolója. A gyökértárolók írásvédettek, az adatok nem írhatók vissza a tárolóba. |
<storage_account> |
Az Azure-erőforrás tárfiókjának neve. |
<server_name> |
A gazdagép neve. |
<instance_name> |
A névvel ellátott SQL Server-példány neve. Akkor használatos, ha az SQL Server Browser Service fut a célpéldányon. |
<ip_address>:<port>
1 |
Csak S3-kompatibilis objektumtárolók esetén az S3-kompatibilis tárolóhoz való csatlakozáshoz használt végpont és port. |
<bucket_name>
1 |
Csak az S3-kompatibilis objektumtárolók esetében, amelyek a tárolási platformra vonatkoznak. |
<region>
1 |
Csak az S3-kompatibilis objektumtárolók esetében, amelyek a tárolási platformra vonatkoznak. |
<folder> |
A tárolási útvonal egy része a tárolási URL-címen belül. |
1 SQL Server 2022 (16.x) és újabb verziók.
További megjegyzések és útmutatás a hely beállításához:
Az SQL Server adatbázismotorja nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.
Az összekötő használatával csatlakoztathatja az
sqlserverSQL Server 2019-et (15.x) egy másik SQL Serverhez vagy az Azure SQL Database-hez.Adja meg a
Driver={<Name of Driver>}csatlakozáskor a következőtODBC: .Az előtagot
adlshasználó Azure Storage-fiókok (V2) hierarchikus névtérbeállítása az SQL Server 2022-ben (16.x) és újabb verziókban az Azure Data Lake Storage Gen2-n keresztül támogatott.A HDFS Cloudera (CDP) és a Hortonworks (HDP) külső adatforrások SQL Server-támogatása megszűnik, és nem szerepel az SQL Server 2022 (16.x) és újabb verzióiban. Az SQL Server 2025 (17.x) verzióban nincs szükség az
TYPEérvelés használatára.Az SQL Server 2022 -ben (16.x) és újabb verziókban elérhető S3-kompatibilis objektumtárolásról és PolyBase-ről további információt a PolyBase konfigurálása az S3-kompatibilis objektumtárolóban lévő külső adatok eléréséhez című témakörben talál. Egy parquet-fájl S3-kompatibilis objektumtárolón belüli lekérdezésére példa: Virtualize parquet file in a S3-kompatibilis objektumtárolóban a PolyBase használatával.
Az SQL Server 2022 (16.x) és újabb verzióiban:
az Azure Storage-fiókhoz (v2) használt előtag a következőre
wasb[s]módosult:absaz Azure Data Lake Storage Gen2-hez használt előtag a következőre
abfs[s]változott:adlsHa például a PolyBase használatával virtualizál egy CSV-fájlt az Azure Storage-ban, olvassa el a CSV-fájl virtualizálása a PolyBase-lel című témakört.
Ha például a PolyBase használatával virtualizál egy deltatáblát az ADLS Gen2-ben, olvassa el a Delta tábla virtualizálása a PolyBase használatával című témakört.
Az SQL Server 2022 (16.x) és újabb verziói teljes mértékben támogatják az Azure Storage-fiók 2-es (
abs) és az Azure Data Lake Gen2 (adls) két URL-formátumát.Az
LOCATIONelérési út a következő formátumokat használhatja:<container>@<storage_account_name>..(ajánlott) vagy<storage_account_name>../<container>. Például:- Azure Storage-fiók v2:
abs://<container>@<storage_account_name>.blob.core.windows.net(ajánlott) vagyabs://<storage_account_name>.blob.core.windows.net/<container>.
- Azure Storage-fiók v2:
Az Azure Data Lake Gen2 a következőket támogatja:
adls://<container>@<storage_account_name>.blob.core.windows.net(ajánlott) vagyadls://<storage_account_name>.dfs.core.windows.net/<container>.
CONNECTION_OPTIONS = key_value_pair
A: SQL Server 2019 (15.x) és újabb verziókra vonatkozik.
További beállításokat ad meg, amikor külső adatforráshoz csatlakozik ODBC . Ha több kapcsolati lehetőséget szeretne használni, különítse el őket egy pontosvesszővel.
Általános kapcsolatokra ODBC , valamint a MongoDB-hez készült SQL Server, Oracle, Teradata, MongoDB és Azure Cosmos DB API beépített ODBC összekötőire vonatkozik.
Ez key_value_pair egy adott kapcsolati lehetőség kulcsszója és értéke. Az elérhető kulcsszavak és értékek a külső adatforrás típusától függenek. Az illesztőprogram neve minimálisan kötelező, de vannak más lehetőségek is, például APP='<your_application_name>'ApplicationIntent= ReadOnly|ReadWrite amelyek szintén hasznosak, és segíthetnek a hibaelhárításban.
A lehetséges kulcsértékpárok az illesztőprogramra vonatkoznak. További információ az egyes szolgáltatókról: CREATE EXTERNAL DATA SOURCE (Transact-SQL) CONNECTION_OPTIONS.
Az SQL Server 2022 (16.x) 2. kumulatív frissítésétől kezdve további kulcsszavak jelentek meg az Oracle TNS-fájlok támogatásához:
- A kulcsszó
TNSNamesFilemegadja az Oracle-kiszolgálón található fájl elérési útjáttnsnames.ora. - A kulcsszó
ServerNamea gazdagép nevének és a portnak a lecseréléséhez használttnsnames.oraaliast adja meg.
Titkosítási lehetőségek az SQL Server 2025-ben (17.x)
Az SQL Server 2025-től (17.x) kezdve, amikor adatforrásként használják sqlserver , az alapértelmezett driver a Microsoft ODBC Driver 18-as verziója SQL Serverhez. A Encryption beállítás kötelező (Yesvagy NoStrict), és TrustServerCertificate elérhető (Yes vagy No). Ha Encryption nincs megadva, az alapértelmezett viselkedés az Encrypt=Yes;TrustServerCertificate=No;, és kiszolgálótanúsítványt igényel.
A TDS 8.0 protokoll használatával való csatlakozáshoz a szigorú mód (Encrypt=Strict) lett hozzáadva. Ebben a módban megbízható kiszolgálótanúsítványt kell telepíteni, és mindig ellenőrizni kell (a TrustServerCertificate figyelmen kívül hagyja). Egy új kulcsszóval HostnameInCertificatemegadhatja a tanúsítványban található várt állomásnevet, ha az eltér a megadott kiszolgálótól.
HostnameInCertificate minden titkosítási módban használható, és akkor is alkalmazható, ha a kiszolgálóoldali Force Encryption beállítás engedélyezve van, ami miatt az illesztőprogram nem kötelező vagy kötelező módban ellenőrzi a tanúsítványt, kivéve, ha letiltja a használatát TrustServerCertificate.
A beállításokrólEncryption, a kiszolgálótanúsítványokról és TrustServerCertificatea windowsos SQL Serverhez készült Microsoft ODBC-illesztőprogram funkcióiról további információt talál.
Mindig a legújabb illesztőprogramot kell használnia. Ugyanakkor az SQL Server 2025 (17.x) támogatja a Microsoft ODBC Driver 17-es verzióját is az SQL Server számára a visszafelé kompatibilitás érdekében. A PolyBase által használt illesztőprogram-verzió módosításáról további információt a PolyBase SQL Server-illesztőprogram verziójának módosítása című témakörben talál.
PUSHDOWN = BE | KI
A: SQL Server 2019 (15.x) és újabb verziókra vonatkozik.
Meghatározza, hogy a számítás leküldhető-e a külső adatforrásba. Alapértelmezés szerint engedélyezve van.
PUSHDOWN az SQL Serverhez, az Oracle-hez, a Teradata-hoz, a MongoDB-hez, a MongoDB-hez készült Azure Cosmos DB API-hoz vagy a külső adatforrás szintjén az ODBC-hez való csatlakozáskor támogatott.
A leküldéses leküldés engedélyezése vagy letiltása a lekérdezés szintjén egy tipp segítségével érhető el.
HITELESÍTŐ ADATOK = credential_name
Egy adatbázis-hatókörű hitelesítő adatot ad meg a külső adatforráshoz való hitelesítéshez.
További megjegyzések és útmutatás hitelesítő adatok létrehozásakor:
CREDENTIALcsak akkor szükséges, ha az adatok biztonságban vannak.CREDENTIALnem szükséges a névtelen hozzáférést lehetővé tevő adathalmazokhoz.Az Azure Storage-fiók (V2) vagy az Azure Data Lake Storage Gen2 elérésekor a
IDENTITYkövetkezőnek kell lennieSHARED ACCESS SIGNATURE: .
A közös hozzáférésű jogosultságkódok létrehozásának több módja is van:
SAS-jogkivonatot úgy hozhat létre, ha az Azure Portalra><navigál, Your_Storage_Account>>Közös hozzáférésű jogosultságkód>engedélyek konfigurálása>SAS és kapcsolati sztring létrehozása. További információ: Közös hozzáférésű jogosultságkód létrehozása.
SAS-t az Azure Storage Explorerrel hozhat létre és konfigurálhat.
SAS-jogkivonatot programozott módon hozhat létre a PowerShell, az Azure CLI, a .NET és a REST API használatával. További információ: Korlátozott hozzáférés biztosítása az Azure Storage-erőforrásokhoz közös hozzáférésű jogosultságkódok (SAS) használatával.
Az SAS-jogkivonatot a következőképpen kell konfigurálni:
Sas-jogkivonat létrehozásakor egy kérdőjelet ('?' ) tartalmaz a jogkivonat elején. Zárja ki a bevezetőt
?, ha a bevezetőt aSECRET.Érvényes lejárati időtartamot használjon (minden dátum UTC-időpontban van).
Adjon legalább olvasási engedélyt a betöltendő fájlhoz (például
srt=o&sp=r). Több közös hozzáférésű jogosultságkód is létrehozható különböző használati esetekhez. Az engedélyeket az alábbiak szerint kell megadni:Tevékenység Engedély Adatok beolvasása fájlból Olvasás Adatok olvasása több fájlból és almappából Olvasás és felsorolás Külső tábla létrehozása kijelölésként (CETAS) Olvasás, létrehozás, lista és írás Az Azure Blob Storage és az Azure Data Lake Gen 2 esetében:
- Engedélyezett szolgáltatások:
Blobki kell jelölni az SAS-jogkivonat létrehozásához
- Engedélyezett szolgáltatások:
Engedélyezett erőforrástípusok:
ContainerésObjectki kell jelölni az SAS-jogkivonat létrehozásához
Ha például S3-kompatibilis objektumtárolót és PolyBase-t használ CREDENTIAL , tekintse meg a PolyBase konfigurálását az S3-kompatibilis objektumtárolóban lévő külső adatok eléréséhez.
Adatbázis-hatókörű hitelesítő adatok létrehozásához lásd: CREATE DATABASE SCOPED CREDENTIAL.
Engedélyek
Engedély szükséges CONTROL az SQL Server adatbázisához.
Zárolás
Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.
Biztonság
A PolyBase a legtöbb külső adatforrás proxyalapú hitelesítését támogatja. Hozzon létre egy adatbázis-hatókörű hitelesítő adatot a proxyfiók létrehozásához.
Frissítés az SQL Server 2025-re
Az SQL Server 2022 (16.x) és újabb verzióiban a Hadoop külső adatforrásai nem támogatottak. Manuálisan kell újból létrehozni a korábban létrehozott külső adatforrásokat TYPE = HADOOP, valamint a külső adatforrást használó külső táblákat.
A felhasználóknak a külső adatforrásaikat is konfigurálniuk kell, hogy új összekötőket használjanak az Azure Storage-hoz való csatlakozáskor.
| Külső adatforrás | Ettől kezdve | Há |
|---|---|---|
| Azure Blob Storage | wasb[s] | Abs |
| ADLS Gen2 | abfs[s] | adls |
Példák
Fontos
A PolyBase telepítéséről és engedélyezéséről további információt a PolyBase telepítése Windows rendszeren című témakörben talál.
Egy. Külső adatforrás létrehozása az SQL Serveren az Oracle-ra való hivatkozáshoz
Ha oracle-ra hivatkozó külső adatforrást szeretne létrehozni, győződjön meg arról, hogy rendelkezik adatbázis-hatókörű hitelesítő adatokkal. Lehetséges, hogy engedélyezi vagy letiltja a számítási feladatok leküldését az adatforráson.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
PUSHDOWN = ON,
CREDENTIAL = OracleProxyAccount
);
Az Oracle külső adatforrása is használhat proxyhitelesítést a részletes hozzáférés-vezérléshez. A proxyfelhasználók úgy konfigurálhatók, hogy korlátozott hozzáféréssel rendelkezzenek a megszemélyesített felhasználóhoz képest.
CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential]
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER',
CREDENTIAL = [OracleProxyCredential]
);
Másik lehetőségként hitelesítést is végezhet TNS használatával.
Az SQL Server 2022 (16.x) 2 CREATE EXTERNAL DATA SOURCE . kumulatív frissítésétől kezdve mostantól támogatja a TNS-fájlok használatát az Oracle-hez való csatlakozáskor.
A CONNECTION_OPTIONS paraméter ki lett bontva, és változókként használva TNSNamesFileServerName tallózik a tnsnames.ora fájlban, és kapcsolatot létesít a kiszolgálóval.
Az alábbi példában az SQL Server futásidőben megkeresi a tnsnames.ora megadott TNSNamesFile fájlhelyet, és megkeresi a megadott gazdagépet és hálózati portot ServerName.
CREATE EXTERNAL DATA SOURCE [external_data_source_name]
WITH (
LOCATION = N'oracle://XE',
CREDENTIAL = [OracleCredentialTest],
CONNECTION_OPTIONS = N'TNSNamesFile=C:\Temp\tnsnames.ora;ServerName=XE'
);
B. Külső adatforrás létrehozása egy elnevezett SQL Server-példány hivatkozásához PolyBase-kapcsolaton keresztül
A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók.
Ha olyan külső adatforrást szeretne létrehozni, amely az SQL Server egy elnevezett példányára hivatkozik, CONNECTION_OPTIONS adja meg a példány nevét.
Először hozza létre az adatbázis hatókörébe tartozó hitelesítő adatokat, és tárolja a hitelesítő adatokat egy SQL által hitelesített bejelentkezéshez. A PolyBase-hez készült SQL ODBC-összekötő csak az alapszintű hitelesítést támogatja. Az adatbázis hatókörébe tartozó hitelesítő adatok létrehozása előtt az adatbázisnak rendelkeznie kell egy fő kulccsal a hitelesítő adatok védelméhez. További információ: CREATE MASTER KEY. Az alábbi minta létrehoz egy adatbázis-hatókörű hitelesítő adatokat, és megadja a saját bejelentkezési adatait és jelszavát.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username',
SECRET = 'password';
Az alábbi példában WINSQL2019 a gazdagép neve és SQL2019 a példány neve.
'Server=%s\SQL2019' a kulcs értékpárja.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019',
CONNECTION_OPTIONS = 'Server=%s\SQL2019',
CREDENTIAL = SQLServerCredentials
);
Másik lehetőségként portot is használhat az SQL Server alapértelmezett példányához való csatlakozáshoz.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019:58137',
CREDENTIAL = SQLServerCredentials
);
C. Külső adatforrás létrehozása az Always On rendelkezésre állási csoport olvasható másodlagos replikájára való hivatkozáshoz
A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók.
Ha olyan külső adatforrást szeretne létrehozni, amely az SQL Server olvasható másodlagos replikájára hivatkozik, adja CONNECTION_OPTIONS meg a ApplicationIntent=ReadOnly. Emellett be kell állítania a rendelkezésre állási adatbázist a megadott Database={dbname}módonCONNECTION_OPTIONS, vagy a rendelkezésre állási adatbázist kell beállítania az adatbázis hatókörébe tartozó hitelesítő adatokhoz használt bejelentkezés alapértelmezett adatbázisaként. Ezt a rendelkezésre állási csoport összes rendelkezésre állási replikáján kell elvégeznie.
Először hozza létre az adatbázis hatókörébe tartozó hitelesítő adatokat, és tárolja a hitelesítő adatokat egy SQL által hitelesített bejelentkezéshez. A PolyBase-hez készült SQL ODBC-összekötő csak az alapszintű hitelesítést támogatja. Az adatbázis hatókörébe tartozó hitelesítő adatok létrehozása előtt az adatbázisnak rendelkeznie kell egy fő kulccsal a hitelesítő adatok védelméhez. További információ: CREATE MASTER KEY. Az alábbi minta létrehoz egy adatbázis-hatókörű hitelesítő adatokat, és megadja a saját bejelentkezési adatait és jelszavát.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username',
SECRET = 'password';
Ezután hozza létre az új külső adatforrást.
Függetlenül attól, hogy Database=dbname a CONNECTION_OPTIONS rendelkezésre állási adatbázis szerepel-e az adatbázis hatókörébe tartozó hitelesítő adatokban való bejelentkezés alapértelmezett adatbázisaként, a HELY paraméteren belül meg kell adnia az adatbázis nevét egy háromrészes névvel a CREATE EXTERNAL TABLE utasításban. Ilyen például a CREATE EXTERNAL TABLE (KÜLSŐ TÁBLA LÉTREHOZÁSA) című témakör.
Az alábbi példában a rendelkezésre állási csoport figyelőjének neve látható, WINSQL2019AGL és dbname annak az adatbázisnak a neve, amely a CREATE EXTERNAL TABLE utasítás célhelye lesz.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = SQLServerCredentials
);
A rendelkezésre állási csoport átirányítási viselkedését egy külső tábla rendszernézeten ApplicationIntentvaló megadásával sys.servers és létrehozásával szemléltetheti. A következő példaszkriptben két külső adatforrás jön létre, és mindegyikhez egy külső tábla jön létre. A nézetek segítségével tesztelje, hogy melyik kiszolgáló válaszol a kapcsolatra. Hasonló eredmények érhetők el az írásvédett útválasztási funkcióval is. További információ: Always On rendelkezésre állási csoport írásvédett útválasztásának konfigurálása.
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadOnlyIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = [SQLServerCredentials]
);
GO
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadWriteIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadWrite',
CREDENTIAL = [SQLServerCredentials]
);
GO
A rendelkezésre állási csoport adatbázisán belül hozzon létre egy visszaadandó sys.servers nézetet és a helyi példány nevét, amely segít azonosítani, hogy melyik replika válaszol a lekérdezésre. További információ: sys.servers.
CREATE VIEW vw_sys_servers AS
SELECT [name]
FROM sys.servers
WHERE server_id = 0;
GO
Ezután hozzon létre egy külső táblát a forráspéldányon:
CREATE EXTERNAL TABLE vw_sys_servers_ro
(
name SYSNAME NOT NULL
)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadOnlyIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
CREATE EXTERNAL TABLE vw_sys_servers_rw
(
name SYSNAME NOT NULL
)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadWriteIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
SELECT [name]
FROM dbo.vw_sys_servers_ro;
--should return secondary replica instance
SELECT [name]
FROM dbo.vw_sys_servers_rw;
--should return primary replica instance
GO
D. Külső adatforrás létrehozása parquet-fájl lekérdezéséhez S3-kompatibilis objektumtárolóban a PolyBase használatával
A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók.
Az alábbi példaszkript létrehoz egy külső adatforrást s3_ds az SQL Server forrásfelhasználói adatbázisában. A külső adatforrás a s3_dc adatbázis hatókörébe tartozó hitelesítő adatokra hivatkozik.
CREATE DATABASE SCOPED CREDENTIAL s3_dc
WITH IDENTITY = 'S3 Access Key', -- for S3-compatible object storage the identity must always be S3 Access Key
SECRET = '<access_key_id>:<secret_key_id>'; -- provided by the S3-compatible object storage
GO
CREATE EXTERNAL DATA SOURCE s3_ds
WITH (
LOCATION = 's3://<ip_address>:<port>/',
CREDENTIAL = s3_dc
);
GO
Ellenőrizze az új külső adatforrást sys.external_data_sources.
SELECT *
FROM sys.external_data_sources;
Ezután az alábbi példa bemutatja, hogy a T-SQL használatával lekérdezhető egy S3-kompatibilis objektumtárolóban tárolt parquet fájl OPENROWSET-lekérdezésen keresztül. További információ: Parquet-fájl virtualizálása egy S3-kompatibilis objektumtárolóban a PolyBase használatával.
SELECT *
FROM OPENROWSET (
BULK '/<bucket>/<parquet_folder>',
FORMAT = 'PARQUET',
DATA_SOURCE = 's3_ds'
) AS [cc];
E. Külső adatforrás létrehozása általános ODBC-vel a PostgreSQL-hez
A korábbi példákhoz hasonlóan először hozzon létre egy adatbázis-főkulcsot és egy adatbázis-hatókörű hitelesítő adatot. Az adatbázis hatókörébe tartozó hitelesítő adatokat a rendszer a külső adatforráshoz használja. Ez a példa azt is feltételezi, hogy a postgreSQL-hez készült általános ODBC-adatszolgáltató telepítve van a kiszolgálón.
Ebben a példában az általános ODBC-adatszolgáltatót arra használjuk, hogy ugyanabban a hálózatban lévő PostgreSQL-adatbáziskiszolgálóhoz csatlakozzon, ahol a PostgreSQL-kiszolgáló POSTGRES1teljes tartományneve az alapértelmezett TCP 5432-portot használja.
CREATE EXTERNAL DATA SOURCE POSTGRES1
WITH (
LOCATION = 'odbc://POSTGRES1.domain:5432',
CONNECTION_OPTIONS = 'Driver={PostgreSQL Unicode(x64)};',
CREDENTIAL = postgres_credential
);
Azure Storage
Közös hozzáférésű jogosultságkód létrehozása
Az Azure Blob Storage és az Azure Data Lake Gen2 esetében a támogatott hitelesítési módszer a közös hozzáférésű jogosultságkód (SAS). A közös hozzáférésű jogosultságkód-jogkivonatok létrehozásának egyik egyszerű módja az alábbi lépések végrehajtása. További információ: CREDENTIAL.
- Lépjen az Azure Portalra és a kívánt tárfiókra.
- Keresse meg a kívánt tárolót a Data Storage menüben.
- Válassza ki a megosztott hozzáférési jogkivonatokat.
- 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 |
- Válassza ki a jogkivonat lejárati dátumát.
- SAS-jogkivonat és URL-cím létrehozása.
- Másolja ki az SAS-jogkivonatot.
F. Külső adatforrás létrehozása az Azure Blob Storage-adatokhoz való hozzáféréshez a abs:// felület használatával
A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók.
Használjon egy új előtagot abs az Azure Storage-fiók v2-hez. Az abs előtag támogatja a hitelesítést a következő használatával SHARED ACCESS SIGNATURE: . Az abs előtag lecseréli wasba korábbi verziókban használt előtagot. A HADOOP már nem támogatott, nincs többé szükség a használatára TYPE = BLOB_STORAGE.
Az Azure Storage-fiókkulcsra már nincs szükség, ehelyett SAS-jogkivonatot használ, ahogy az alábbi példában látható:
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD= '<password>';
GO
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredentialv2
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', -- to use SAS the identity must be fixed as-is
SECRET = '<Blob_SAS_Token>';
GO
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredentialv2
);
Az Azure Blob Storage-ban tárolt CSV-fájlok elérésére vonatkozó részletesebb példákért lásd a CSV-fájlok Virtualizálása a PolyBase-lel című témakört.
G. Külső adatforrás létrehozása az adatok eléréséhez az Azure Data Lake Gen2-ben
A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók.
Használjon egy új előtagot adls az Azure Data Lake Gen2-hez a korábbi verziókban használt helyett abfs . Az adls előtag az SAS-jogkivonatot is támogatja hitelesítési módszerként az alábbi példában látható módon:
--Create a database scoped credential using SAS Token
CREATE DATABASE SCOPED CREDENTIAL datalakegen2
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<DataLakeGen2_SAS_Token>';
GO
CREATE EXTERNAL DATA SOURCE data_lake_gen2_dfs
WITH (
LOCATION = 'adls://<container>@<storage_account>.dfs.core.windows.net',
CREDENTIAL = datalakegen2
);
Az Azure Data Lake Gen2-ben tárolt deltafájlok elérésére vonatkozó részletesebb példa: A deltatábla virtualizálása a PolyBase használatával.
Példák: Tömeges műveletek
Fontos
Ne adjon hozzá záró /, fájlnevet vagy közös hozzáférésű jogosultságkód-paramétereket az LOCATION URL-cím végén, amikor külső adatforrást konfigurál tömeges műveletekhez.
H. Külső adatforrás létrehozása az Azure Storage-ból adatokat beolvasó tömeges műveletekhez
A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók.
A TÖMEGES BESZÚRÁS vagy AZ OPENROWSET használatával végzett tömeges műveletekhez használja az alábbi adatforrást. A hitelesítő adatoknak identitásként kell beállítaniuk SHARED ACCESS SIGNATURE , nem szabad az SAS-jogkivonatban a kezdőt ? megadniuk, legalább olvasási engedéllyel kell rendelkezniük a betöltendő fájlon (például srt=o&sp=r), és a lejárati időszaknak érvényesnek kell lennie (minden dátum UTC-időpontban van). A közös hozzáférésű jogosultságkódokkal kapcsolatos további információkért lásd: Közös hozzáférésű jogosultságkódok (SAS) használata.
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
-- Remove ? from the beginning of the SAS token
SECRET = '<azure_shared_access_signature>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = AccessAzureInvoices,
);
Én. Külső adatforrás létrehozása a TDS 8.0 használatával egy másik SQL Serverhez való csatlakozáshoz
Érvényes: SQL Server 2025 (17.x) és újabb verziók.
Ha a legújabb Microsoft ODBC Driver 18 for SQL Servert használja, az Encryption alatta CONNECTION_OPTIONSlévő lehetőséget kell használnia, és TrustServerCertificate az is támogatott. Ha Encryption nincs megadva, az alapértelmezett viselkedés az Encrypt=Yes;TrustServerCertificate=No;, és kiszolgálói tanúsítványra van szükség.
Ebben a példában sql-hitelesítést használunk. A hitelesítő adatok védelméhez adatbázis-főkulcsra (DMK) van szükség. További információ: CREATE MASTER KEY. Az alábbi minta egy adatbázis-hatókörű hitelesítő adatot hoz létre egyéni bejelentkezéssel és jelszóval.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = '<username>',
SECRET = '<password>';
A célkiszolgáló neve WINSQL2022a port 58137, és ez egy alapértelmezett példány. A beállítással Encrypt=Stricta kapcsolat TDS 8.0-t használ, és a kiszolgálótanúsítványt mindig ellenőrzi a rendszer. ebben a példában a HostnameinCertificate használt a következő WINSQL2022:
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2022:58137',
CONNECTION_OPTIONS = 'Encrypt=Strict;HostnameInCertificate=WINSQL2022;'
CREDENTIAL = SQLServerCredentials
);
J. Külső adatforrás létrehozása titkosítással és TrustServerCertificate beállítással
Az előző példát követve két kódmintát láthat. Az első kódrészlet rendelkezik és Encryption be van TrustServerCertificate állítva.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2022:58137',
CONNECTION_OPTIONS = 'Encrypt=Yes;HostnameInCertificate=WINSQL2022;TrustServerCertificate=Yes;'
CREDENTIAL = SQLServerCredentials
);
Az alábbi kódrészlet nincs Encryption engedélyezve.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2022:58137',
CONNECTION_OPTIONS = 'Encrypt=no;'
CREDENTIAL = SQLServerCredentials
);
Kapcsolódó tartalom
- KÜLSŐ ADATFORRÁS MÓDOSÍTÁSA (Transact-SQL)
- HOZZON LÉTRE ADATBÁZIS HATÓKÖRŰ HITELTAGOT (Transact-SQL)
- KÜLSŐ FÁJLFORMÁTUM LÉTREHOZÁSA (Transact-SQL)
- HOZZON LÉTRE KÜLSŐ TÁBLÁT (Transact-SQL)
- sys.external_data_sources (Transact-SQL)
- Közös hozzáférésű jogosultságkódok (SAS) használata
- PolyBase-kapcsolat konfigurálása (Transact-SQL)
* SQL adatbázis *
Áttekintés: Azure SQL Database
A következővonatkozik: Azure SQL Database
Külső adatforrást hoz létre rugalmas lekérdezésekhez. A külső adatforrások kapcsolat létesítésére és az elsődleges használati esetek támogatására szolgálnak:
- Adatvirtualizálás (előzetes verzió)
- Tömeges betöltési műveletek a
BULK INSERTOPENROWSET - Távoli SQL Database- vagy Azure Synapse-példányok lekérdezése rugalmas lekérdezéssel rendelkező SQL Database használatával
- Horizontális SQL Database lekérdezése rugalmas lekérdezéssel
Transact-SQL szintaxis konvenciók
Szemantika
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = { BLOB_STORAGE | RDBMS | SHARD_MAP_MANAGER } ]
[ [ , ] DATABASE_NAME = '<database_name>' ]
[ [ , ] SHARD_MAP_NAME = '<shard_map_manager>' ] )
[ ; ]
Érvek
data_source_name
Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az SQL Database adatbázisában.
LOCATION = '<prefix>://<path[:p ort]>'
Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.
| Külső adatforrás | Csatlakozó helyének előtagja | Hely elérési út | Elérhetőség |
|---|---|---|---|
| Tömeges műveletek | https |
<storage_account>.blob.core.windows.net/<container> |
|
| Rugalmas lekérdezés (szegmens) | Nem kötelező | <shard_map_server_name>.database.windows.net |
|
| Rugalmas lekérdezés (távoli) | Nem kötelező | <remote_server_name>.database.windows.net |
|
| EdgeHub | edgehub |
edgehub:// |
Csak az Azure SQL Edge-ben érhető el. Az EdgeHub mindig helyi az Azure SQL Edge-példányhoz. Ezért nincs szükség elérési út vagy portérték megadására. |
| Kafka | kafka |
kafka://<kafka_bootstrap_server_name_ip>:<port_number> |
Csak az Azure SQL Edge-ben érhető el. |
| Azure Storage-fiók (v2) | abs |
abs://<container_name>@<storage_account_name>.blob.core.windows.net/vagy abs://<storage_account_name>.blob.core.windows.net/
<container_name> |
|
| Azure Data Lake Storage Gen2 | adls |
adls://<container_name>@<storage_account_name>.dfs.core.windows.net/vagy adls://<storage_account_name>.dfs.core.windows.net/<container_name> |
Hely elérési útja:
-
<shard_map_server_name>= A szegmenstérkép-kezelőt üzemeltető logikai kiszolgáló neve az Azure-ban. AzDATABASE_NAMEargumentum a szegmenstérkép üzemeltetéséhez használt adatbázist adja meg, ésSHARD_MAP_NAMEmagá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 azDATABASE_NAMEargumentum használatával van megadva.
További megjegyzések és útmutatás a hely beállításához:
- Az adatbázismotor nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.
HITELESÍTŐ ADATOK = credential_name
Egy adatbázis-hatókörű hitelesítő adatot ad meg a külső adatforráshoz való hitelesítéshez.
További megjegyzések és útmutatás hitelesítő adatok létrehozásakor:
- Ha adatokat szeretne betölteni az Azure Storage-ból az Azure SQL Database-be, használjon egy közös hozzáférésű jogosultságkódot (SAS-jogkivonatot).
-
CREDENTIALcsak akkor szükséges, ha az adatok biztonságban vannak.CREDENTIALnem 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étrehozniSHARED ACCESS SIGNATURE. - Ha az Azure Storage-hoz való kapcsolat a WASB[s] összekötőt használja, a hitelesítést tárfiók-kulccsal kell elvégezni, nem pedig közös hozzáférésű jogosultságkóddal (SAS).
- Amikor
TYPE=HADOOPa hitelesítő adatokat a tárfiók kulcsával kell létrehozni.SECRET -
TYPE=BLOB_STORAGEcsak tömeges műveletek esetén engedélyezett; nem hozhat létre külső táblákat külső adatforráshoz a következővelTYPE=BLOB_STORAGE: .
A közös hozzáférésű jogosultságkódok létrehozásának több módja is van:
SAS-jogkivonatot az Azure Portalra navigálva hozhat létre –><Your_Storage_Account> –> Közös hozzáférésű jogosultságkód –> Engedélyek konfigurálása –> SAS és kapcsolati sztring létrehozása. További információ: Közös hozzáférésű jogosultságkód létrehozása.
SAS-t az Azure Storage Explorerrel hozhat létre és konfigurálhat.
SAS-jogkivonatot programozott módon hozhat létre a PowerShell, az Azure CLI, a .NET és a REST API használatával. További információ: Korlátozott hozzáférés biztosítása az Azure Storage-erőforrásokhoz közös hozzáférésű jogosultságkódok (SAS) használatával.
Az SAS-jogkivonatot a következőképpen kell konfigurálni:
- Sas-jogkivonat létrehozásakor egy kérdőjelet ('?' ) tartalmaz a jogkivonat elején. Zárja ki a bevezetőt
?, ha TITKOS kódként van konfigurálva. - Érvényes lejárati időtartamot használjon (minden dátum UTC-időpontban van).
- Sas-jogkivonat létrehozásakor egy kérdőjelet ('?' ) tartalmaz a jogkivonat elején. Zárja ki a bevezetőt
Adjon legalább olvasási engedélyt a betöltendő fájlhoz (például
srt=o&sp=r). Több közös hozzáférésű jogosultságkód is létrehozható különböző használati esetekhez. Az engedélyeket az alábbiak szerint kell megadni:Tevékenység Engedély Adatok beolvasása fájlból Olvasás Adatok olvasása több fájlból és almappából Olvasás és felsorolás Külső tábla létrehozása kijelölésként (CETAS) Olvasás, létrehozás és írás
Példa a with CREDENTIAL and ( ésSHARED ACCESS SIGNATURETYPE = ) használatáraBLOB_STORAGE: Külső adatforrás létrehozása tömeges műveletek végrehajtásához és adatok lekérése az Azure Storage-ból az SQL Database-be
Adatbázis-hatókörű hitelesítő adatok létrehozásához lásd: CREATE DATABASE SCOPED CREDENTIAL.
TÍPUS = * [ BLOB_STORAGE | RDBMS | SHARD_MAP_MANAGER ] *
Megadja a konfigurált külső adatforrás típusát. Ez a paraméter nem mindig szükséges, és csak bizonyos külső adatforrásokhoz kell megadni.
- Adatbázisközi lekérdezésekhez használható
RDBMSaz SQL Database rugalmas lekérdezéseinek használatával. - Külső adatforrás létrehozásakor használható
SHARD_MAP_MANAGERszegmenses SQL Database-adatbázishoz való csatlakozáskor. - A használat
BLOB_STORAGEcsak azhttpselőtaggal használható. Azabdelőtagokat ésadlsaz előtagokat ne adja megTYPE.
Fontos
Ne állítsa be TYPE , ha más külső adatforrást használ.
DATABASE_NAME = database_name
Konfigurálja ezt az argumentumot, ha a TYPE beállítás értéke RDBMS vagy SHARD_MAP_MANAGER.
| TÍPUS | A DATABASE_NAME értéke |
|---|---|
RDBMS |
A kiszolgálón található távoli adatbázis neve, amely a következő használatával van megadva: LOCATION |
SHARD_MAP_MANAGER |
A szegmenstérkép-kezelőként működő adatbázis neve |
Ha például azt mutatja be, hogyan hozhat létre külső adatforrást, TYPE = RDBMStekintse meg az RDBMS külső adatforrásának létrehozását ismertető témakört.
SHARD_MAP_NAME = shard_map_name
Akkor használatos, ha az TYPE argumentum csak a szegmenstérkép nevének beállítására van beállítva SHARD_MAP_MANAGER .
Példa arra, hogyan hozhat létre külső adatforrást, ahol TYPE = SHARD_MAP_MANAGER tekintse meg a szegmenstérkép-kezelő külső adatforrásának létrehozását ismertető példát
Engedélyek
Engedély szükséges CONTROL az Azure SQL Database adatbázisához.
Zárolás
Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.
Példák
Egy. Szegmenstérkép-kezelő külső adatforrásának létrehozása
Ha külső adatforrást szeretne létrehozni egy SHARD_MAP_MANAGERhivatkozáshoz, adja meg azt az SQL Database-kiszolgálónevet, amely a szegmenstérkép-kezelőt üzemelteti az SQL Database-ben vagy egy SQL Server-adatbázist egy virtuális gépen.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred
WITH IDENTITY = '<username>',
SECRET = '<password>';
CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc
WITH (
TYPE = SHARD_MAP_MANAGER,
LOCATION = '<server_name>.database.windows.net',
DATABASE_NAME = 'ElasticScaleStarterKit_ShardMapManagerDb',
CREDENTIAL = ElasticDBQueryCred,
SHARD_MAP_NAME = 'CustomerIDShardMap'
);
Részletes oktatóanyagért tekintse meg a rugalmas horizontális particionálási (horizontális particionálás) lekérdezések használatának első lépéseit.
B. RDBMS külső adatforrás létrehozása
Ha rdBMS-re hivatkozó külső adatforrást szeretne létrehozni, adja meg az SQL Database-ben található távoli adatbázis SQL Database-kiszolgálójának nevét.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL SQL_Credential
WITH IDENTITY = '<username>',
SECRET = '<password>';
CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc
WITH (
TYPE = RDBMS,
LOCATION = '<server_name>.database.windows.net',
DATABASE_NAME = 'Customers',
CREDENTIAL = SQL_Credential
);
Az RDBMS-sel kapcsolatos részletes oktatóanyagért tekintse meg az adatbázisközi lekérdezések (függőleges particionálás) használatának első lépéseit.
Példák: Tömeges műveletek
Fontos
Ne adjon hozzá záró /, fájlnevet vagy közös hozzáférésű jogosultságkód-paramétereket az LOCATION URL-cím végén, amikor külső adatforrást konfigurál tömeges műveletekhez.
C. Külső adatforrás létrehozása az Azure Storage-ból adatokat beolvasó tömeges műveletekhez
A tömeges műveletekhez használja az alábbi adatforrást a BULK INSERT vagy AZ OPENROWSET BULK használatával. A hitelesítő adatoknak identitásként kell beállítaniuk SHARED ACCESS SIGNATURE , nem szabad az SAS-jogkivonatban a kezdőt ? megadniuk, legalább olvasási engedéllyel kell rendelkezniük a betöltendő fájlon (például srt=o&sp=r), és a lejárati időszaknak érvényesnek kell lennie (minden dátum UTC-időpontban van). A közös hozzáférésű jogosultságkódokkal kapcsolatos további információkért lásd: Közös hozzáférésű jogosultságkódok (SAS) használata.
Külső adatforrás létrehozása az Azure Blob Storage -hoz (ABS) felügyelt identitással:
CREATE DATABASE SCOPED CREDENTIAL DSC_MI
WITH IDENTITY = 'Managed Identity';
--Create external data source pointing to the file path, and referencing database-scoped credential:
CREATE EXTERNAL DATA SOURCE PrivateABS
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = [DSC_MI]
);
Hozzon létre külső adatforrást az Azure Data Lake Gen2 (ADLS) számára a felhasználói identitás használatával:
CREATE DATABASE SCOPED CREDENTIAL DSC_ADLS
WITH IDENTITY = 'User Identity';
--Create external data source pointing to the file path, and referencing database-scoped credential:
CREATE EXTERNAL DATA SOURCE PrivateADLS
WITH (
LOCATION = 'adls://<container>@<storage_account_name>.dfs.core.windows.net/',
CREDENTIAL = [DSC_ADLS]
);
A példa használatban való megtekintéséhez lásd a TÖMEGES BESZÚRÁS című témakört.
Példák: Azure SQL Edge
Fontos
A külső adatok Azure SQL Edge-hez való konfigurálásáról további információt az Azure SQL Edge-ben történő adatstreamelés című témakörben talál.
Egy. Külső adatforrás létrehozása a Kafkára való hivatkozáshoz
Csak az Azure SQLEdge-re vonatkozik
Ebben a példában a külső adatforrás egy Olyan Kafka-kiszolgáló, amely ip-címmel xxx.xxx.xxx.xxx és figyeli az 1900-s portot. A Kafka külső adatforrása csak adatstreamelésre használható, és nem támogatja a predikátum leküldését.
-- Create an External Data Source for Kafka
CREATE EXTERNAL DATA SOURCE MyKafkaServer
WITH (
LOCATION = 'kafka://xxx.xxx.xxx.xxx:1900'
);
B. Külső adatforrás létrehozása az EdgeHubra való hivatkozáshoz
Csak az Azure SQLEdge-re vonatkozik
Ebben a példában a külső adatforrás egy EdgeHub, amely ugyanazon a peremeszközön fut, mint az Azure SQL Edge. Az edgeHub külső adatforrása csak az adatstreameléshez használható, és nem támogatja a predikátum leküldését.
-- Create an External Data Source for Kafka
CREATE EXTERNAL DATA SOURCE MyEdgeHub
WITH (
LOCATION = 'edgehub://'
);
Kapcsolódó tartalom
* Azure Synapse
Elemzés *
Áttekintés: Azure Synapse Analytics
A következővonatkozik: Azure Synapse Analytics
Létrehoz egy külső adatforrást az adatvirtualizáláshoz. A külső adatforrások kapcsolat létesítésére és a külső adatforrásokból történő adatvirtualizálás és adatbetöltés elsődleges használati eseteinek támogatására szolgálnak. További információ: Külső táblák használata a Synapse SQL-sel.
Fontos
Ha külső adatforrást szeretne létrehozni egy Azure Synapse Analytics-erőforrás rugalmas lekérdezéssel történő lekérdezéséhez az Azure SQL Database használatával, olvassa el a CREATE EXTERNAL DATA SOURCE for Azure SQL Database(Külső adatforrás létrehozása az Azure SQL Database-hez) című témakört.
Transact-SQL szintaxis konvenciók
Szemantika
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = HADOOP ]
)
[ ; ]
Érvek
data_source_name
Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az Azure SQL Database-ben az Azure Synapse Analyticsben.
HELY = '<prefix>://<path>'
Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.
| Külső adatforrás | Csatlakozó helyének előtagja | Hely elérési út |
|---|---|---|
| Data Lake Storage* Gen1 | adl |
<storage_account>.azuredatalake.net |
| Data Lake Storage Gen2 | abfs[s] |
<container>@<storage_account>.dfs.core.windows.net |
| Azure Blob Storage | wasbs |
<container>@<storage_account>.blob.core.windows.net |
| Azure Blob Storage | https |
<storage_account>.blob.core.windows.net/<container>/subfolders |
| Data Lake Storage Gen1 | http[s] |
<storage_account>.azuredatalakestore.net/webhdfs/v1 |
| Data Lake Storage Gen2 | http[s] |
<storage_account>.dfs.core.windows.net/<container>/subfolders |
| Data Lake Storage Gen2 | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
* A Microsoft Azure Data Lake Storage Gen1 támogatása korlátozott, a Gen2 minden új fejlesztéshez ajánlott.
| Külső adatforrás | Csatlakozó helyének előtagja | Dedikált SQL-készletek: PolyBase | Dedikált SQL-készletek: natív* | Kiszolgáló nélküli SQL-készletek |
|---|---|---|---|---|
| Data Lake Storage** Gen1 | adl |
Nem | Nem | Igen |
| Data Lake Storage Gen2 | abfs[s] |
Igen | Igen | Igen |
| Azure Blob Storage | wasbs |
Igen | Igen*** | Igen |
| Azure Blob Storage | https |
Nem | Igen | Igen |
| Data Lake Storage Gen1 | http[s] |
Nem | Nem | Igen |
| Data Lake Storage Gen2 | http[s] |
Igen | Igen | Igen |
| Data Lake Storage Gen2 | wasb[s] |
Igen | Igen | Igen |
* Az Azure Synapse Analytics kiszolgáló nélküli és dedikált SQL-készletei különböző kódbázisokat használnak az adatvirtualizáláshoz. A kiszolgáló nélküli SQL-készletek támogatják a natív adatvirtualizálási technológiát. A dedikált SQL-készletek támogatják a natív és a PolyBase-adatvirtualizálást is. A PolyBase-adatvirtualizálás akkor használatos, ha a KÜLSŐ ADATFORRÁS TYPE=HADOOPjön létre.
** A Microsoft Azure Data Lake Storage Gen1 támogatása korlátozott, a Gen2 minden új fejlesztéshez ajánlott.
A biztonságosabb wasbs összekötő használata javasolt wasb. Csak a dedikált SQL-készletek natív adatvirtualizálása támogatott (ahol a TÍPUS nem egyenlő a HADOOP-tal wasb).
Hely elérési útja:
-
<container>= az adatokat tartalmazó tárfiók tárolója. A gyökértárolók írásvédettek, az adatok nem írhatók vissza a tárolóba. -
<storage_account>= az Azure-erőforrás tárfiókjának neve.
További megjegyzések és útmutatás a hely beállításához:
- Az alapértelmezett beállítás az Azure Data Lake Storage Gen2 kiépítésekor használható
enable secure SSL connections. Ha ez engedélyezve van, akkor biztonságos TLS/SSL-kapcsolat kiválasztásakor kell használniaabfss, bárabfssa nem biztonságos TLS-kapcsolatok esetében is működik. További információ : Azure Blob Filesystem driver (ABFS). - Az Azure Synapse nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.
- Használja ugyanazt a külső adatforrást az összes táblához a Hadoop lekérdezése során, hogy egységes lekérdezési szemantikát biztosítson.
-
https:az előtag lehetővé teszi az almappák használatát az elérési úton.httpsnem érhető el minden adatelérési módszerhez. -
wasbsajánlott, mivel az adatok biztonságos TLS-kapcsolaton keresztül lesznek elküldve. - A hierarchikus névterek nem támogatottak az Azure V2 Storage-fiókokban, amikor az örökölt
wasb://felületen férnek hozzá az adatokhoz, de a hierarchikus névterek használatátwasbs://támogatják.
HITELESÍTŐ ADATOK = credential_name
Opcionális. Az adatbázis hatókörébe tartozó hitelesítő adatokat ad meg a külső adatforráshoz való hitelesítéshez. A hitelesítő adatok nélküli külső adatforrás hozzáférhet a nyilvános tárfiókhoz, vagy használhatja a hívó Microsoft Entra-identitását az Azure Storage-fájlok eléréséhez.
További megjegyzések és útmutatás hitelesítő adatok létrehozásakor:
- Ha az Azure Storage-ból vagy az Azure Data Lake Store-ból (ADLS) Gen2-ből szeretne adatokat betölteni az Azure Synapse Analyticsbe, használjon egy Azure Storage-kulcsot.
-
CREDENTIALcsak akkor szükséges, ha az adatok biztonságban vannak.CREDENTIALnem szükséges a névtelen hozzáférést lehetővé tevő adathalmazokhoz.
Adatbázis-hatókörű hitelesítő adatok létrehozásához lásd: CREATE DATABASE SCOPED CREDENTIAL.
A kiszolgáló nélküli SQL-készletben az adatbázis-hatókörű hitelesítő adatok megadhatják a munkaterület felügyelt identitását, a szolgáltatásnév nevét vagy a közös hozzáférésű jogosultságkód (SAS) jogkivonatát. A felhasználói identitáson keresztüli hozzáférés, más néven a Microsoft Entra átengedése is lehetséges az adatbázis-hatókörű hitelesítő adatokban, ahogy a nyilvánosan elérhető tárterülethez való névtelen hozzáférés is. További információ: Támogatott tárterület-engedélyezési típusok.
A dedikált SQL-készletben az adatbázis hatókörébe tartozó hitelesítő adatok megadhatják a közös hozzáférésű jogosultságkód (SAS) jogkivonatot, a tárelérési kulcsot, a szolgáltatásnevet, a munkaterület felügyelt identitását vagy a Microsoft Entra-átengedést.
TÍPUS = HADOOP
Nem kötelező, nem ajánlott.
Csak dedikált SQL-készletekkel rendelkező TÍPUSt adhat meg.
HADOOP a megadott érték az egyetlen engedélyezett érték. A külső adatforrások TYPE=HADOOP csak dedikált SQL-készletekben érhetők el.
A HADOOP használata régebbi implementációkhoz, ellenkező esetben ajánlott az újabb natív adathozzáférés használata. Ne adja meg a TYPE argumentumot az újabb natív adathozzáférés használatához.
Az Adatok Azure Storage-ból való betöltésére vonatkozó példa TYPE = HADOOP : Külső adatforrás létrehozása az Azure Data Lake Store Gen 1 vagy 2 szolgáltatásnév használatával történő hivatkozásához.
Az Azure Synapse Analytics kiszolgáló nélküli és dedikált SQL-készletei különböző kódbázisokat használnak az adatvirtualizáláshoz. A kiszolgáló nélküli SQL-készletek támogatják a natív adatvirtualizálási technológiát. A dedikált SQL-készletek támogatják a natív és a PolyBase-adatvirtualizálást is. A PolyBase-adatvirtualizálás akkor használatos, ha a KÜLSŐ ADATFORRÁS TYPE=HADOOPjön létre.
Engedélyek
Az adatbázishoz CONTROL engedély szükséges.
Zárolás
Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.
Biztonság
A legtöbb külső adatforrás támogatja a proxyalapú hitelesítést egy adatbázis-hatókörű hitelesítő adatok használatával a proxyfiók létrehozásához.
A közös hozzáférésű jogosultságkód (SAS) kulcsok támogatottak az Azure Data Lake Store Gen 2 Storage-fiókokhoz való hitelesítéshez. Azoknak az ügyfeleknek, akik közös hozzáférésű jogosultságkóddal szeretnének hitelesíteni, létre kell hozniuk egy adatbázis-hatókörű hitelesítő adatot, ahol IDENTITY = "Shared Access Signature" egy SAS-jogkivonatot kell megadniuk titkos kulcsként.
Ha adatbázis-hatókörű hitelesítő adatot hoz létre, ahol IDENTITY = "Shared Access Signature" titkos kulcsértéket használ, a következő hibaüzenet jelenik meg:
'HdfsBridge::isDirExist - Unexpected error encountered checking whether directory exists or not: AbfsRestOperationException: Operation failed: "Server failed to authenticate the request. Please refer to the information in the www-authenticate header.", 401, HEAD, [Storage path URL]'
Példák
Egy. Külső adatforrás létrehozása az Azure Storage-adatokhoz való hozzáféréshez a wasb:// felület használatával
Ebben a példában a külső adatforrás egy V2 nevű logsAzure Storage-fiók. A tárolóedényt nevezik dailyel . Az Azure Storage külső adatforrása csak adatátvitelre használható. Nem támogatja a predikátum leküldését. A hierarchikus névterek nem támogatottak az adatok interfészen keresztüli wasb:// elérésekor. Az Azure Storage-hoz wasbwasbsvaló csatlakozáskor a hitelesítést tárfiók-kulccsal kell elvégezni, nem pedig közös hozzáférésű jogosultságkóddal (SAS).
Ez a példa az örökölt HADOOP Java-alapú hozzáférési módszert használja. Az alábbi minta bemutatja, hogyan hozhatja létre az adatbázis hatókörébe tartozó hitelesítő adatokat az Azure Storage-beli hitelesítéshez. Adja meg az Azure Storage-fiókkulcsot az adatbázis hitelesítőadat-titkos kódjában. Bármilyen sztringet megadhat az adatbázis hatókörébe tartozó hitelesítő identitásban, mivel az nem használható az Azure Storage-beli hitelesítés során.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
TYPE = HADOOP,
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential
);
B. Külső adatforrás létrehozása az 1. vagy 2. generációs Azure Data Lake Store-ra való hivatkozáshoz szolgáltatásnév használatával
Az Azure Data Lake Store-kapcsolat alapja az ADLS URI és a Microsoft Entra-alkalmazás szolgáltatásnév. Az alkalmazás létrehozásának dokumentációja megtalálható a Data Lake Store-hitelesítésben a Microsoft Entra ID használatával.
-- If you do not have a Master Key on your DW you will need to create one.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- These values come from your Microsoft Entra application used to authenticate to ADLS
CREATE DATABASE SCOPED CREDENTIAL ADLS_credential
WITH
-- IDENTITY = '<clientID>@<OAuth2.0TokenEndPoint>' ,
IDENTITY = '536540b4-4239-45fe-b9a3-629f97591c0c@https://login.microsoftonline.com/42f988bf-85f1-41af-91ab-2d2cd011da47/oauth2/token',
-- SECRET = '<KEY>'
SECRET = 'BjdIlmtKp4Fpyh9hIvr8HJlUida/seM5kQ3EpLAmeDI=';
-- For Gen 1 - Create an external data source
-- TYPE: HADOOP - PolyBase uses Hadoop APIs to access data in Azure Data Lake Storage.
-- LOCATION: Provide Data Lake Storage Gen 1 account name and URI
-- CREDENTIAL: Provide the credential created in the previous step
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH (
TYPE = HADOOP,
LOCATION = 'adl://newyorktaxidataset.azuredatalakestore.net',
CREDENTIAL = ADLS_credential
);
-- For Gen2 - Create an external data source
-- TYPE: HADOOP - PolyBase uses Hadoop APIs to access data in Azure Data Lake Storage.
-- LOCATION: Provide Data Lake Storage Gen2 account name and URI
-- CREDENTIAL: Provide the credential created in the previous step
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH (
-- Note the abfss endpoint when your account has secure transfer enabled
TYPE = HADOOP,
LOCATION = 'abfss://data@newyorktaxidataset.dfs.core.windows.net',
CREDENTIAL = ADLS_credential
);
C. Külső adatforrás létrehozása az Azure Data Lake Store Gen2-ra való hivatkozáshoz a tárfiókkulcs használatával
-- If you do not have a Master Key on your DW you will need to create one.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL ADLS_credential
WITH
-- IDENTITY = '<storage_account_name>' ,
IDENTITY = 'newyorktaxidata',
-- SECRET = '<storage_account_key>'
SECRET = 'yz5N4+bxSb89McdiysJAzo+9hgEHcJRJuXbF/uC3mhbezES/oe00vXnZEl14U0lN3vxrFKsphKov16C0w6aiTQ==';
-- Note this example uses a Gen2 secured endpoint (abfss)
CREATE EXTERNAL DATA SOURCE < data_source_name >
WITH (
LOCATION = 'abfss://2013@newyorktaxidataset.dfs.core.windows.net',
CREDENTIAL = ADLS_credential,
TYPE = HADOOP
);
D. Külső adatforrás létrehozása az Azure Data Lake Store Gen2-be abfs://
Nem kell megadni SECRET , amikor Azure Data Lake Store Gen2 fiókhoz csatlakozol kezelt identitásokkal.
-- If you do not have a Master Key on your DW you will need to create one
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
--Create database scoped credential with **IDENTITY = 'Managed Service Identity'**
CREATE DATABASE SCOPED CREDENTIAL msi_cred
WITH IDENTITY = 'Managed Service Identity';
--Create external data source with abfss:// scheme for connecting to your Azure Data Lake Store Gen2 account
CREATE EXTERNAL DATA SOURCE ext_datasource_with_abfss
WITH (
TYPE = HADOOP,
LOCATION = 'abfss://myfile@mystorageaccount.dfs.core.windows.net',
CREDENTIAL = msi_cred
);
Kapcsolódó tartalom
- HOZZON LÉTRE ADATBÁZIS HATÓKÖRŰ HITELTAGOT (Transact-SQL)
- KÜLSŐ FÁJLFORMÁTUM LÉTREHOZÁSA (Transact-SQL)
- HOZZON LÉTRE KÜLSŐ TÁBLÁT (Transact-SQL)
- CREATE EXTERNAL TABLE AS SELECT (Azure Synapse Analytics)
- CREATE TABLE AS SELECT (Azure Synapse Analytics)
- sys.external_data_sources (Transact-SQL)
- Közös hozzáférésű jogosultságkódok (SAS) használata
* Elemzés
Platformrendszer (PDW) *
Áttekintés: Elemzési platformrendszer
A következőkre vonatkozik: Elemzési platformrendszer (PDW)
Létrehoz egy külső adatforrást a PolyBase-lekérdezésekhez. Külső adatforrásokat használnak a kapcsolódás kialakítására, és a következő felhasználási esetet támogatják: adatvirtualizáció és adatbetöltés a PolyBase használatával az SQL Serverben.
Transact-SQL szintaxis konvenciók
Szemantika
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = HADOOP ]
[ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]
Érvek
data_source_name
Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az Analytics Platform System (PDW) kiszolgálón belül.
LOCATION = '<prefix>://<path[:p ort]>'
Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.
| Külső adatforrás | Csatlakozó helyének előtagja | Hely elérési út |
|---|---|---|
| Cloudera CDH vagy Hortonworks HDP | hdfs |
<Namenode>[:port] |
| Azure Storage-fiók | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Hely elérési útja:
-
<Namenode>= a Hadoop-fürt gépneve, névszolgáltatás URI-ja vagy IP-címeNamenode. 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 afs.defaultFSkonfigurációs paraméterrel található. Az alapértelmezett érték a 8020. -
<container>= az adatokat tartalmazó tárfiók tárolója. A gyökértárolók írásvédettek, az adatok nem írhatók vissza a tárolóba. -
<storage_account>= az Azure-erőforrás tárfiókjának neve.
További megjegyzések és útmutatás a hely beállításához:
- A PDW-motor nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.
- Használja ugyanazt a külső adatforrást az összes táblához a Hadoop lekérdezése során, hogy egységes lekérdezési szemantikát biztosítson.
-
wasbsajánlott, mivel az adatok biztonságos TLS-kapcsolaton keresztül lesznek elküldve. - A hierarchikus névterek nem támogatottak az Azure Storage-fiókok wasb://.
- A Sikeres PolyBase-lekérdezések Hadoop-feladatátvétel
Namenodesorán történő biztosításához fontolja meg a Hadoop-fürt virtuális IP-címénekNamenodehasználatát. Ha nem, hajtsa végre az ALTER EXTERNAL DATA SOURCE parancsot, hogy az új helyre mutasson.
HITELESÍTŐ ADATOK = credential_name
Egy adatbázis-hatókörű hitelesítő adatot ad meg a külső adatforráshoz való hitelesítéshez.
További megjegyzések és útmutatás hitelesítő adatok létrehozásakor:
- Ha adatokat szeretne betölteni az Azure Storage-ból az Azure Synapse-ba vagy a PDW-be, használjon egy Azure Storage-kulcsot.
-
CREDENTIALcsak akkor szükséges, ha az adatok biztonságban vannak.CREDENTIALnem szükséges a névtelen hozzáférést lehetővé tevő adathalmazokhoz.
TÍPUS = * [ HAUOP ] *
Megadja a konfigurált külső adatforrás típusát. Ez a paraméter nem mindig szükséges.
- A HADOOP használata, ha a külső adatforrás a Cloudera CDH, a Hortonworks HDP vagy az Azure Storage.
Az Adatok Azure Storage-ból való betöltésére vonatkozó példa TYPE = HADOOP : Külső adatforrás létrehozása a Hadoopra való hivatkozáshoz.
RESOURCE_MANAGER_LOCATION = "ResourceManager_URI[:p ort]"
Az SQL Server 2019-ben (15.x) ne adjon meg RESOURCE_MANAGER_LOCATION, hacsak nem csatlakozik a Cloudera CDH-hoz, a Hortonworks HDP-hez, egy Azure Storage-fiókhoz.
Ezt az opcionális értéket akkor konfigurálhatja, ha csak Cloudera CDH-hez, Hortonworks HDP-hez vagy Azure Storage-fiókhoz csatlakozik. A támogatott Hadoop-verziók teljes listájáért tekintse meg a PolyBase kapcsolati konfigurációját.
RESOURCE_MANAGER_LOCATION A definiált lekérdezésoptimalizáló költségalapú döntést hoz a teljesítmény javítása érdekében. A MapReduce-feladat segítségével leküldheti a számítást a Hadoopnak. A megadásával RESOURCE_MANAGER_LOCATION jelentősen csökkenthető a Hadoop és az SQL között átvitt adatok mennyisége, ami jobb lekérdezési teljesítményt eredményezhet.
Ha a Resource Manager nincs megadva, a Számítás hadoopba való leküldése le van tiltva a PolyBase-lekérdezések esetében. Ha külső adatforrást hoz létre a Hadoopra való hivatkozáshoz, a leküldéses leküldés engedélyezve van, konkrét példát és további útmutatást nyújt.
A külső adatforrás létrehozásakor a RESOURCE_MANAGER_LOCATION érték nem lesz érvényesítve. Helytelen érték megadása lekérdezési hibát okozhat a végrehajtás során, amikor leküldéses leküldést kísérel meg, mivel a megadott érték nem oldható fel.
Ahhoz, hogy a PolyBase megfelelően működjön egy Hadoop külső adatforrással, a következő Hadoop-fürtösszetevők portjainak nyitva kell lenniük:
- HDFS-portok
- Névcsomópont
- Datanode
- Erőforrás-menedzser
- Feladat beküldése
- Feladatelőzmények
Ha a port nincs megadva, az alapértelmezett érték a hadoop-kapcsolat konfigurációjának aktuális beállításával lesz kiválasztva.
| Hadoop-kapcsolat | Alapértelmezett Resource Manager-port |
|---|---|
1 |
50300 |
2 |
50300 |
3 |
8021 |
4 |
8032 |
5 |
8050 |
6 |
8032 |
7 |
8050 |
Az alábbi táblázat az összetevők alapértelmezett portjait mutatja be. Létezik Hadoop-verziófüggőség, valamint az egyéni konfiguráció lehetősége, amely nem használja az alapértelmezett port-hozzárendelést.
| Hadoop-fürtösszetevő | Alapértelmezett port |
|---|---|
| NameNode | 8020 |
| DataNode (Adatátvitel, nem jogosultságú IPC-port) | 50010 |
| DataNode (Adatátvitel, jogosultsági IPC-port) | 1019 |
| Resource Manager-feladat beküldése (Hortonworks 1.3) | 50300 |
| Resource Manager-feladat beküldése (Cloudera 4.3) | 8021 |
| Resource Manager-feladat beküldése (Hortonworks 2.0 Windows rendszeren, Cloudera 5.x Linux rendszeren) | 8032 |
| Resource Manager-feladat beküldése (Hortonworks 2.x, 3.0 Linuxon, Hortonworks 2.1-3 Windows rendszeren) | 8050 |
| Resource Manager-feladatelőzmények | 10020 |
Engedélyek
Engedélyre van szükség CONTROL az adatbázishoz az Analytics Platform Systemben (PDW).
Megjegyzés:
A PDW korábbi kiadásaiban hozzon létre külső adatforráshoz szükséges ALTER ANY EXTERNAL DATA SOURCE engedélyeket.
Zárolás
Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.
Biztonság
A PolyBase a legtöbb külső adatforrás proxyalapú hitelesítését támogatja. Hozzon létre egy adatbázis-hatókörű hitelesítő adatot a proxyfiók létrehozásához.
A típussal HADOOP rendelkező SAS-jogkivonatok nem támogatottak. Csak akkor támogatott, ha a BLOB_STORAGE tárfiók hozzáférési kulcsát használja. A típussal HADOOP és SAS-hitelesítő adatokkal rendelkező külső adatforrás létrehozása a következő hibával meghiúsul:
Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account aren't valid.: Error [Parameters provided to connect to the Azure storage account aren't valid.] occurred while accessing external file.'
Példák
Egy. Külső adatforrás létrehozása a Hadoopra való hivatkozáshoz
Ha külső adatforrást szeretne létrehozni a Hortonworks HDP-re vagy a Cloudera CDH-re való hivatkozáshoz, adja meg a Hadoop Namenode és a port gépnevét vagy IP-címét.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050'
);
B. Külső adatforrás létrehozása a Hadoopra való hivatkozáshoz, ha engedélyezve van a leküldéses leküldés
Adja meg a RESOURCE_MANAGER_LOCATION leküldéses számítás engedélyezésének lehetőségét a PolyBase-lekérdezésekhez készült Hadoopban. Ha engedélyezve van, a PolyBase költségalapú döntést hoz annak megállapításához, hogy a lekérdezési számítást le kell-e küldeni a Hadoopnak.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8020',
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
C. Külső adatforrás létrehozása a Kerberos által védett Hadoopra való hivatkozáshoz
Annak ellenőrzéséhez, hogy a Hadoop-fürt Kerberos-védelem alatt áll-e, ellenőrizze a Hadoop core-site.xmltulajdonság értékét hadoop.security.authentication . Kerberos által védett Hadoop-fürtre való hivatkozáshoz meg kell adnia egy adatbázis-hatókörű hitelesítő adatot, amely tartalmazza a Kerberos-felhasználónevet és -jelszót. Az adatbázis főkulcsa az adatbázis hatókörébe tartozó hitelesítőadat-titkos kód titkosítására szolgál.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH IDENTITY = '<hadoop_user_name>',
SECRET = '<hadoop_password>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. Külső adatforrás létrehozása az Azure Storage-adatokhoz való hozzáféréshez a wasb:// felület használatával
Ebben a példában a külső adatforrás egy Azure V2 Storage-fiók neve logs. A tárolóedényt nevezik dailyel . Az Azure Storage külső adatforrása csak adatátvitelre használható. Nem támogatja a predikátum leküldését. A hierarchikus névterek nem támogatottak az adatok interfészen keresztüli wasb:// elérésekor. Az Azure Storage-hoz wasbwasbsvaló csatlakozáskor a hitelesítést tárfiók-kulccsal kell elvégezni, nem pedig közös hozzáférésű jogosultságkóddal (SAS).
Ez a példa bemutatja, hogyan hozhatja létre az adatbázis hatókörébe tartozó hitelesítő adatokat az Azure Storage-ba történő hitelesítéshez. Adja meg az Azure Storage-fiók kulcsát az adatbázis hitelesítőadat-titkos kódjában. Bármilyen sztringet megadhat az adatbázis hatókörébe tartozó hitelesítő identitásban, mivel az nem használható az Azure Storage-beli hitelesítés során.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
TYPE = HADOOP,
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential
);
Kapcsolódó tartalom
* felügyelt SQL-példány *
Áttekintés: Felügyelt Azure SQL-példány
A következőkre vonatkozik: Felügyelt Azure SQL-példány
Létrehoz egy külső adatforrást a felügyelt Azure SQL-példányban. További információ: Felügyelt Azure SQL-példány adatvirtualizálása.
A felügyelt Azure SQL-példány adatvirtualizálása különböző fájlformátumokban biztosít hozzáférést a külső adatokhoz az OPENROWSET vagy a CREATE EXTERNAL TABLE használatával.
Transact-SQL szintaxis konvenciók
Szemantika
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
)
[ ; ]
Érvek
data_source_name
Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az adatbázisban.
LOCATION = '<prefix>://<path[:p ort]>'
Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.
| Külső adatforrás | Helyelőtag | Hely elérési út |
|---|---|---|
| Azure Blob Storage | abs |
abs://<container>@<storage_account>.blob.core.windows.net/<path>/<file_name> |
| Azure Data Lake Service Gen2 | adls |
adls://<container>@<storage_account>.dfs.core.windows.net/<path>/<file_name> |
Az adatbázismotor nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.
Ne adjon hozzá záró /, fájlnevet vagy közös hozzáférésű jogosultságkód-paramétereket az LOCATION URL-cím végén, amikor külső adatforrást konfigurál tömeges műveletekhez.
HITELESÍTŐ ADATOK = credential_name
Egy adatbázis-hatókörű hitelesítő adatot ad meg a külső adatforráshoz való hitelesítéshez.
További megjegyzések és útmutatás hitelesítő adatok létrehozásakor:
- Ha adatokat szeretne betölteni az Azure Storage-ból a felügyelt Azure SQL-példányba, használjon egy közös hozzáférésű jogosultságkódot (SAS-jogkivonatot).
-
CREDENTIALcsak akkor szükséges, ha az adatok biztonságban vannak.CREDENTIALnem 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 IdentityvagySHARED ACCESS SIGNATUREidentitásként kell létrehozni. Adatbázis-hatókörű hitelesítő adatok létrehozásához lásd: CREATE DATABASE SCOPED CREDENTIAL.
A felügyelt szolgáltatás identitásának használata az adatbázis hatókörébe tartozó hitelesítő adatokhoz:
Részletez
WITH IDENTITY = 'Managed Identity'Használja a felügyelt Azure SQL-példány rendszer által hozzárendelt felügyeltszolgáltatás-identitását, amelyet engedélyezni kell, ha erre a célra szeretné használni.
- Adja meg a Reader Azure RBAC-szerepkört a felügyelt Azure SQL-példány rendszer által hozzárendelt felügyeltszolgáltatás-identitásának a szükséges Azure Blob Storage-tárolóknak. Például az Azure Portalon keresztül lásd: Azure-szerepkörök hozzárendelése az Azure Portal használatával.
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:
- SAS-jogkivonatot az Azure Portalra navigálva szerezhet be –><Your_Storage_Account> –> Közös hozzáférésű jogosultságkód –> Engedélyek konfigurálása –> SAS és kapcsolati sztring létrehozása. További információ: Közös hozzáférésű jogosultságkód létrehozása.
- SAS-t az Azure Storage Explorerrel hozhat létre és konfigurálhat.
- SAS-jogkivonatot programozott módon hozhat létre a PowerShell, az Azure CLI, a .NET és a REST API használatával. További információ: Korlátozott hozzáférés biztosítása az Azure Storage-erőforrásokhoz közös hozzáférésű jogosultságkódok (SAS) használatával.
Az SAS-jogkivonatot a következőképpen kell konfigurálni:
- Sas-jogkivonat létrehozásakor egy kérdőjelet ('?' ) tartalmaz a jogkivonat elején. Zárja ki a bevezetőt
?, ha TITKOS kódként van konfigurálva. - Érvényes lejárati időtartamot használjon (minden dátum UTC-időpontban van).
- Sas-jogkivonat létrehozásakor egy kérdőjelet ('?' ) tartalmaz a jogkivonat elején. Zárja ki a bevezetőt
Adjon legalább olvasási engedélyt a betöltendő fájlhoz (például
srt=o&sp=r). Több közös hozzáférésű jogosultságkód is létrehozható különböző használati esetekhez. Az engedélyeket az alábbiak szerint kell megadni:Tevékenység Engedély Adatok beolvasása fájlból Olvasás Adatok olvasása több fájlból és almappából Olvasás és felsorolás Külső tábla létrehozása kijelölésként (CETAS) Olvasás, létrehozás és írás
Engedélyek
Engedély szükséges CONTROL a felügyelt Azure SQL-példány adatbázisához.
Zárolás
Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.
Példák
További példákért tekintse meg a felügyelt Azure SQL-példány adatvirtualizálását.
Egy. Külső adatok lekérdezése felügyelt Azure SQL-példányból OPENROWSET-lel vagy külső táblával
További példákért lásd a CREATE EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁS LÉTREHOZÁSA ) vagy a felügyelt Azure SQL-példány adatvirtualizálása című témakört.
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>' GOHozza 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 '?' GOHozza 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] );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;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;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
Kapcsolódó tartalom
*Microsoft Fabric Data Warehouse *
Áttekintés: Microsoft Fabric Data Warehouse
A következőkre vonatkozik: Fabric Data Warehouse
Létrehoz egy külső adatforrást.
Transact-SQL szintaxis konvenciók
Szemantika
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( LOCATION = '<prefix>://<path>[:<port>]' )
[ ; ]
Érvek
data_source_name
Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az adatbázisban.
LOCATION = '<prefix>://<path[:p ort]>'
Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.
| Külső adatforrás | Helyelőtag | Hely elérési út |
|---|---|---|
| Azure Blob Storage | https |
https://<storage_account>.blob.core.windows.net/<container>/<path> |
| Azure Data Lake Service Gen2 | abfss |
abfss://<container>@<storage_account>.dfs.core.windows.net/<path> |
Az adatbázismotor nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor.
Ne adjon hozzá záró /, fájlnevet vagy közös hozzáférésű jogosultságkód-paramétereket az LOCATION URL-cím végén, amikor külső adatforrást konfigurál tömeges műveletekhez.
Engedélyek
Ha a céltárfiók privát, az egyszerű felhasználónak is rendelkeznie kell az olvasásra hivatkozott fájlok engedélyével.
- Az Azure Data Lake Storage és az Azure Blob Storage esetében az egyszerűnek a tároló vagy a tárfiók szintjén kell hozzárendelnie a Storage Blob Data Reader szerepkört (vagy annál magasabbat).
- A Fabric One Lake Storage esetében az egyszerű felhasználónak "ReadAll" engedélyekkel kell rendelkeznie.
Zárolás
Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.
Példák
Egy. Külső adatok lekérdezése OPENROWSET vagy külső tábla használatával
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' );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' );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;
Kapcsolódó tartalom
* Fabric SQL adatbázis *
Áttekintés: SQL adatbázis a Microsoft Fabric-ben
Alkalmazható:SQL adatbázis a Microsoft Fabric-ben
Külső adatforrást hoz létre az adatok virtualizációjához SQL adatbázisban a Fabric-ben.
Transact-SQL szintaxis konvenciók
Szemantika
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ ; ]
Érvek
data_source_name
Megadja az adatforrás felhasználó által definiált nevét. A névnek egyedinek kell lennie az adatbázisban.
LOCATION = '<prefix>://<path[:p ort]>'
Megadja a kapcsolati protokollt és a külső adatforrás elérési útját.
A Fabric SQL adatbázis csak a OneLake (abfss) adatforrást támogatja.
| Külső adatforrás | Csatlakozó helyének előtagja | Hely elérési út | Elérhetőség |
|---|---|---|---|
| OneLake | abfss |
abfss://<workspaceid>@<tenant>.dfs.fabric.microsoft.com/ |
Fabric SQL-adatbázis |
További megjegyzések és útmutatás a hely beállításához:
- Az adatbázismotor nem ellenőrzi a külső adatforrás meglétét az objektum létrehozásakor. Az ellenőrzéshez hozzon létre egy külső táblát a külső adatforrás használatával.
Engedélyek
Engedély szükséges CONTROL az Azure SQL Database adatbázisához.
Zárolás
Megosztott zárolást hoz létre az EXTERNAL DATA SOURCE objektumon.
Példák
Egy. Hozzon létre külső adatforrást egy Lakehouse fájlmappába
Ez a példa egy külső adatforrás nevű MyLakeHouse Lakehouse-hoz kötését jelenti, hogy hozzáférjen a feltöltött Parquet és CSV fájlokhoz. Ezek a fájlok ebben a mintában a mappa alatt lévő Files könyvtárban Contoso találhatók.
Fabric Lakehouse adatforrás létrehozásához meg kell adnia a munkaterület azonosítóját, a bérlőt és a Lakehouse ID-t. Az ABFSS fájl helyszínének megtalálásához egy tóház esetében menj a Fabric portálra. Navigálj a Lakehouse-odhoz, menj a kívánt mappáhelyre, válaszd ...ki a Tulajdonságokat. Másold ki az ABFS útvonalat, ami valami ilyesmiben néz ki: abfss://<WorkSpaceID>@<Tenant>.dfs.fabric.microsoft.com/<LakehouseID>/Files/Contoso.
Mivel a Fabric SQL adatbázis csak az Entra ID átengedett hitelesítést támogatja, nem szükséges adatbázis-keretű hitelesítést megadni, a kapcsolat mindig a felhasználó bejelentkezési adatait használja a helyszín eléréséhez.
CREATE EXTERNAL DATA SOURCE MyLakeHouse
WITH (
LOCATION = 'abfss://<workspace id>@<tenant>.dfs.fabric.microsoft.com/<lakehouseid>/Files/Contoso'
);