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.
Vonatkozik a következőkre: SQL Server 2016 (13.x) és későbbi verziók
Azure SQL Database
Azure SQL Managed Instance
SQL database in Microsoft Fabric
Az adatvirtualizálással Transact-SQL (T-SQL) lekérdezéseket futtathat külső adatokon anélkül, hogy betöltenél az adatbázisba. Definiálhat külső adatforrást, választható fájlformátumot és külső táblát, majd lekérdezheti a külső táblát a többi táblához SELECT hasonlóan.
Ez az útmutató a következőkben nyújt segítséget:
- Ismerje meg, hogy mely PolyBase-funkciókat támogatja az SQL-platform és a verzió.
- Válasszon a
OPENROWSET, a külső táblák és aBULK INSERTközött az adatok lekérdezéséhez vagy beviteléhez. - Kövesse a gyakori forgatókönyvek részletes hivatkozásait.
- Vizsgálja meg a termelési munkaterhelések teljesítményét, hibaelhárítását és legjobb gyakorlatát.
Platformtámogatás
- A PolyBase egy Microsoft SQL Database Engine funkció, amely adatvirtualizációt valósít meg.
- A PolyBase támogatott az SQL Server 2016 és későbbi Windows-os verzióiban, valamint az SQL Server 2019-ben és a későbbi verziókban Linuxon.
- A PolyBase nem támogatott az SQL Server 2017-ben Linuxon.
- A PolyBase nem támogatja az Azure SQL Database-t, de az Azure SQL Database kapcsolódó adatvirtualizációs lehetőségeket kínál külső táblákon
OPENROWSETkeresztül. További információ: Adatvirtualizálás az Azure SQL Database-lel (előzetes verzió). - A PolyBase név szerint nem egy funkció az Azure SQL Managed Instance-ban, de az Azure SQL Managed Instance adatvirtualizációs funkciókat kínál, amelyek hasonlóan működnek. További információ: Adatvirtualizálás felügyelt Azure SQL-példányokkal.
- A PolyBase nem támogatott az SQL adatbázisban a Fabric-ben, de az SQL adatbázis a Fabric-ben saját adatvirtualizációs képességeket kínál az OneLake-ben lévő adatokhoz. További információért lásd: Data virtualization in SQL database in Fabric.
- A PolyBase nem jellemző a Fabric Data Warehouse-ben. Fabric Data Warehouse-es adatvirtualizációhoz Fabric OneLake Shortcuts-ot érdemes megfontolni. A Fabric Data Warehouse adatbetöltésről szóló cikkeiért lásd: Adatbetöltés T-SQL használatával és Dimenzionális modellezés: Táblák betöltése.
Gyakori használati esetek
Az alábbi táblázat a lehetséges használati forgatókönyveket ismerteti.
| Scenario | Használd |
|---|---|
| Alkalmi fájlfeltárás | OPENROWSET(BULK ...) |
| Újrahasználható fájllekérdezés BI vagy jelentés esetén | Külső táblák fájlok felett |
| Adatbázisközi lekérdezés (SQL Server, Oracle, Teradata, MongoDB, ODBC) | PolyBase-összekötők külső táblákkal |
| Lekérdezési eredmények exportálása fájlokba |
CREATE EXTERNAL TABLE AS SELECT (CETAS) |
| Tömeges betöltés táblákba |
BULK INSERTvagy OPENROWSET(BULK ...)INSERT ... SELECT |
- Fájlok eseti feltérképezéséhez használja a(z)
OPENROWSET(BULK ...)elemet a fájlok vizsgálatához anélkül, hogy újra felhasználható táblát hozna létre. - Újrahasználható fájllekérdezésekhez BI vagy jelentési helyzetekben külső táblákat használj fájlok felett, hogy megőrizze a sémát és ossza meg az eredményeket lekérdezések között.
- A keresztadatbázis-lekérdezéshez használj PolyBase csatlakozókat külső táblákkal az SQL Server, Oracle, Teradata, MongoDB vagy ODBC források eléréséhez.
- A lekérdezési eredmények fájlokba történő exportálásához használja a
CREATE EXTERNAL TABLE AS SELECT(CETAS) parancsot, hogy Parquet- vagy CSV-kimenetet írjon az adatbázison kívülre. - Táblákba történő tömeges betöltéshez használja a
BULK INSERTvagyOPENROWSET(BULK ...)elemet aINSERT ... SELECTparanccsal a fájladatok adatbázistáblákba való betöltéséhez.
Mely funkciók érhetők el hol?
Az alábbi táblázat bemutatja, hogy mely alapvető PolyBase és adatvirtualizációs funkciók állnak rendelkezésre az egyes SQL platformokon, kezdve az SQL Server 2019-től. Az SQL Server 2016 és SQL Server 2017 Windows-os funkciók elérhetőségéről lásd a PolyBase funkciókat és korlátokat. Ez a táblázat a részletes útmutatók használata előtt határozza meg, hogy mit tehet a platformon.
| Funkció | SQL Server 2019 | SQL Server 2022 | SQL Server 2025 | Azure SQL Database | Azure SQL Managed Instance | SQL-adatbázis a Microsoft Fabricben |
|---|---|---|---|---|---|---|
| külső táblák | Igen | Igen | Igen | Igen | Igen | Igen |
| OPENROWSET (NAGY MENNYISÉGŰ) | Igen 1 | Igen | Igen | Igen | Igen | Igen |
| CETAS (exportálás) | No | Igen | Igen | No | Igen | No |
| CSV/tagolt fájlok | Igen 2 | Igen | Igen | Igen | Igen | Igen |
| Parquet-fájlok | No | Igen | Igen | Igen | Igen | Igen |
| Delta Lake-táblák | No | Igen | Igen | No | No | No |
| Csatlakozás másik SQL Serverhez | Igen | Igen | Igen | No | No | No |
| Csatlakozás az Azure SQL Database-hez vagy a felügyelt Azure SQL-példányhoz | Igen 3 | Igen 3 | Igen 3 | No | No | No |
| Csatlakozás az Oracle/Teradata/MongoDB szolgáltatáshoz | Igen | Igen | Igen | No | No | No |
| Csatlakozás az Azure Blob Storage-hoz | Igen | Igen | Igen | Igen | Igen | No |
| Csatlakozás az ADLS Gen2-hez | Igen 5 | Igen | Igen | Igen | Igen | No |
| Csatlakozás S3-kompatibilis tárolóhoz | No | Igen | Igen | No | No | No |
| Csatlakozás a OneLake (Fabric)-hez | No | No | No | No | No | Igen |
| Leküldéses számítás | Igen | Igen | Igen | No | No | No |
| Felügyelt identitás hitelesítése | No | No | Igen 4 | Igen | Igen | No |
Az 1 SQL Server 2019 (15.x) támogatja OPENROWSET(BULK...) a helyi és a hálózati fájl elérési útját. Az SQL Server 2022 (16.x) és újabb verzióiban OPENROWSET(BULK...) a felhőbeli tárolóból való olvasást támogatja FORMAT = 'PARQUET'-val, FORMAT = DELTA-vel és FORMAT = 'CSV'-vel.
SQL Server 2019 (15.x) CSV-támogatása a Hadoop-ot igényelte. Az SQL Server 2022 (16.x) és újabb verzióiban a CSV natív módon támogatott a Hadoop nélkül.
3 Az SQL Server-összekötőt használja (sqlserver://). Az adatbázis-alapú hitelesítés az SQL végpontot célozza meg. Használd ugyanazokat a lépéseket, mint egy másik SQL Server instance-hoz való csatlakozásnál.
4 A felügyelt identitás hitelesítése támogatott az Azure Blob Storage-hoz (ABS) és az ADLS Gen2-hez való csatlakozáshoz. Az Azure Arc-kompatibilis SQL Server vagy az Azure platformon futó SQL Server szükséges a helyszíni SQL Serverhez. Natívan elérhető az Azure SQL Database-ben és az Azure SQL Managed Instance-ben.
5 Az SQL Server 2019 CU11 és újabb verziók támogatják az Azure Data Lake Storage Gen2-t a abfs vagy abfss előtaggal. Az SQL Server 2022 és újabb verziókban használd az adls előtagot.
- A külső táblák az SQL Server 2019-ben, az SQL Server 2022-ben, az SQL Server 2025-ben, az Azure SQL Database-ben, az Azure SQL Managed Instance-ben és a Microsoft Fabric SQL-adatbázisában támogatottak.
- A(z)
OPENROWSET (BULK)támogatott a következőkben: SQL Server 2019, SQL Server 2022, SQL Server 2025, Azure SQL Database, Azure SQL Managed Instance és a Microsoft Fabric SQL-adatbázisában. Az SQL Server 2019 támogatja a helyi és hálózati fájlútvonalakat, míg az SQL Server 2022 és az újabb verziók a(z)FORMAT = 'PARQUET',FORMAT = DELTAésFORMAT = 'CSV'használatával a felhőalapú tárolóból való olvasást is támogatják. - A CETAS export nem támogatott az SQL Server 2019-ben, az Azure SQL Database-ben vagy a Microsoft Fabric-ben található SQL adatbázisban. A CETAS-exportálás támogatott az SQL Server 2022-ben, az SQL Server 2025-ben és az Azure SQL Managed Instance-ben.
- A CSV- és más tagolt fájlok támogatottak a következőkben: SQL Server 2019, SQL Server 2022, SQL Server 2025, Azure SQL Database, Azure SQL Managed Instance és SQL-adatbázis a Microsoft Fabricben. Az SQL Server 2019 Hadoopot igényel a CSV támogatáshoz, míg az SQL Server 2022 és újabb verziók Natoop nélkül támogatja a CSV-t.
- A Parquet fájlok nem támogatottak az SQL Server 2019-ben. A Parquet-fájlokat a következők támogatják: SQL Server 2022, SQL Server 2025, Azure SQL Database, Azure SQL Managed Instance és a Microsoft Fabric SQL-adatbázisa.
- A Delta Lake táblák nem támogatottak az SQL Server 2019-ben, Azure SQL Database-ben, Azure SQL Managed Instance-ban vagy a Microsoft Fabric-ben SQL adatbázisban. A Delta Lake táblák támogatottak az SQL Server 2022-ben és az SQL Server 2025-ben.
- Egy másik SQL Server példányhoz való csatlakozás támogatott az SQL Server 2019, SQL Server 2022 és SQL Server 2025 verziókban. Egy másik SQL Server példányhoz való csatlakozás nem támogatott az Azure SQL Database, Azure SQL Managed Instance vagy a Microsoft Fabric SQL adatbázisában.
- Az Azure SQL Database vagy Azure SQL Managed Instance csatlakoztatása támogatott az SQL Server 2019, SQL Server 2022 és SQL Server 2025 alkalmazásokból az SQL Server connector használatával. Az adatbázis-hatókörű hitelesítő adat az Azure SQL Database vagy az Azure SQL Managed Instance végpontjára irányul, és a konfiguráció lépései ugyanazok, mint egy másik SQL Server-példányhoz való csatlakozás esetén. Ezek a kapcsolatok nem támogatottak az Azure SQL Database-ből, Azure SQL Managed Instance-ból vagy az Microsoft Fabric-ben található SQL adatbázisból.
- Az Oracle, Teradata vagy MongoDB csatlakozás az SQL Server 2019, SQL Server 2022 és SQL Server 2025 támogatásával érhető el. Ezek a kapcsolatok nem támogatottak az Azure SQL Database-ből, Azure SQL Managed Instance-ból vagy az Microsoft Fabric-ben található SQL adatbázisból.
- Az Azure Blob Storage-hoz való csatlakozás a következő termékekben támogatott: SQL Server 2019, SQL Server 2022, SQL Server 2025, Azure SQL Database és Azure SQL Managed Instance. Az Azure Blob Storage-hoz való csatlakozás nem támogatott az SQL adatbázisból a Microsoft Fabric-ben.
- Az ADLS Gen2-hez való csatlakozás nem támogatott az SQL Server 2019 kiadásokban a CU11 előtt, sem az SQL adatbázisból a Microsoft Fabric-ben. Az ADLS Gen2-hez való csatlakozás támogatott az SQL Server 2019 CU11-től kezdve, majd az SQL Server 2022, SQL Server 2025, Azure SQL Database és Azure SQL Managed Instance alkalmazásokban.
- Az S3-kompatibilis tárolóhoz való csatlakozás nem támogatott az SQL Server 2019-ben, az Azure SQL Database-ben, Azure SQL Managed Instance-ban vagy a Microsoft Fabric-ben található SQL adatbázisban. Az S3-kompatibilis tárolóhoz való csatlakozás az SQL Server 2022 és az SQL Server 2025 támogatásával érhető el.
- A OneLake-hez való csatlakozás az SQL adatbázisból támogatható a Microsoft Fabric-ben. Az OneLake-hez való csatlakozás nem támogatott az SQL Server 2019, SQL Server 2022, SQL Server 2025, Azure SQL Database vagy Azure SQL Managed Instance.
- A pushdown számítást támogatják az SQL Server 2019, SQL Server 2022 és SQL Server 2025. A pushdown számítás nem támogatott az Azure SQL Database-ben, Azure SQL Managed Instance-ban vagy az SQL Database-ben a Microsoft Fabric-ben.
- A menedzselt identitáshitelesítés nem támogatott az SQL Server 2019-ben és az SQL Server 2022-ben. A Managed Identity hitelesítés támogatott az SQL Server 2025-ben az Azure Blob Storage és ADLS Gen2 csatlakozásokhoz, és ehhez Azure Arc-kompatibilis SQL Server vagy SQL Server szükséges egy Azure virtuális gépen. A Managed Identity hitelesítést az Azure SQL Database és az Azure SQL Managed Instance is támogatja, de az SQL adatbázisban a Microsoft Fabric-ben nem támogatott.
Megjegyzés:
Az SQL Server 2025 -től (17.x) kezdődően az adatfájlok (CSV, Parquet és Delta) lekérdezése az Azure Blob Storage, az ADLS Gen2 vagy az S3-kompatibilis tárolón natív motorképesség, és már nem igényel PolyBase-szolgáltatások telepítését vagy futtatását. Az RDBMS-összekötőknek (SQL Server, Oracle, Teradata, MongoDB, ODBC) továbbra is polyBase-szolgáltatásokat kell telepíteniük és futtatniuk. Az SQL Server 2025 (17.x) linuxos támogatást is biztosít ezekhez az összekötőkhöz, amelyek korábban csak Windows rendszeren voltak elérhetők.
Külső adatok lekérdezése
Egy adott forgatókönyv kiválasztása előtt ismerje meg a külső adatok lekérdezésének három módját:
| Megközelítés | Szemantika | Használat: | Authentication | PolyBase telepítés szükséges |
|---|---|---|---|---|
| OLE DB alkalmi lekérdezések | OPENROWSET(provider, connection, query) |
Gyors egyszeri lekérdezést szeretne állandó objektumok nélkül, vagy Microsoft Entra ID-hitelesítésre van szüksége | SQL-hitelesítés, Windows-hitelesítés, Microsoft Entra ID (MSOLEDBSQL) | No |
| Ad hoc lekérdezések fájlokon | OPENROWSET(BULK ...) |
A tábla létrehozása előtt gyorsan meg szeretné vizsgálni a fájladatokat, vagy tesztelni szeretné a sémákat | SAS-jogkivonat, hozzáférési kulcs, felügyelt identitás, Microsoft Entra-azonosító | SQL Server 2022: Igen 1 SQL Server 2025 és újabb verziók: Nincs Azure SQL Database, Azure SQL Managed Instance és a Fabricbeli SQL-adatbázis: Beépített |
| Állandó adatösszekötők |
CREATE EXTERNAL TABLE a sqlserver://, oracle://, teradata://stb. |
Ismétlődő hozzáférésre, irányításra, statisztikákra és leküldéses számításokra van szükség a termelési környezetben | Csak SQL-hitelesítés | Igen |
1 Az SQL Server 2022 (16.x) felhőfájl-hozzáféréséhez telepítened kell a PolyBase funkciót, de az Azure Blob Storage, ADLS Gen2 és S3-kompatibilis tároló csatlakozók nem függnek a PolyBase szolgáltatásoktól. Az SQL Server 2025 (17.x) és újabb verziók natív támogatást nyújtanak CSV-hez, Parquet-hez és Delta-hoz anélkül, hogy telepítenék vagy futtatnák a PolyBase szolgáltatásokat.
- Az OLE DB ad hoc lekérdezései gyors, egyszeri hozzáférést biztosítanak egy távoli adatforráshoz anélkül,
OPENROWSET(provider, connection, query)hogy állandó objektumokat hoznának létre. Használhatják SQL authenticationt, Windows authentication-t vagy Microsoft Entra ID-t MSOLEDBSQL-lel. Ez a helyzet nem igényel PolyBase telepítést. - A fájlokon végzett ad hoc lekérdezésekhez a(z)
OPENROWSET(BULK ...)szolgál a fájladatok gyors feltárására, illetve egy séma tesztelésére, mielőtt táblát hozna létre. Használhatnak SAS tokeneket, hozzáférési kulcsokat, Managed Identity-t vagy Microsoft Entra ID-t. Az SQL Server 2022 felhőfájlok esetén PolyBase funkció telepítését igényli, de PolyBase szolgáltatásokat nem igényel. Az SQL Server 2025 és újabb verziókban nem kell PolyBase felhőfájlokhoz. A fájl ad hoc lekérdezések beépítettek az Azure SQL Database-be, az Azure SQL Managed Instance-ba és az SQL database in Fabric-be. - A tartós adatcsatlakozók
CREATE EXTERNAL TABLEsqlserver://,oracle://,teradata://, és hasonló helyeket használnak visszatérő hozzáféréshez, kormányzáshoz, statisztikához és pushdown számításhoz a termelési terhelésekben. SQL hitelesítésre és PolyBase szolgáltatásokra van szükségük.
Útmutató döntésekhez
| Scenario | Ajánlás |
|---|---|
| Távoli SQL-hez Microsoft Entra ID hitelesítésre van szükséged, vagy kerüld el a PolyBase szolgáltatásokat. | Használja a OPENROWSET(MSOLEDBSQL, ...) elemet (ad hoc, perzisztens objektumok nélkül). |
| Szükséged van állandó táblákra, statisztikákra vagy pushdown számításra távoli adatbázisokhoz. | Használja a CREATE EXTERNAL TABLE PolyBase-összekötőkkel (sqlserver://, oracle://, teradata://, mongodb://, odbc://).
OPENROWSET Nem támogatja a csatlakozókat. |
| Egy új fájlt kutatsz vagy egy sémát tesztelsz. | Használd OPENROWSET(BULK ...) (gyors iteráció, nincs állandó objektum). |
| Fájladatokat viszel be egy táblázatba, ahol transzformációk vannak. | Használja INSERT ... SELECTOPENROWSET(BULK ...)-ből. |
| Sok felhasználó vagy alkalmazás számára szükség van irányításra vagy megosztott hozzáférésre. | Használd CREATE EXTERNAL TABLE , hogy a jogosultságok és a metaadatok központosítva legyenek. |
| SQL adatbázisban dolgozol Fabric-ben. | Ad hoc OneLake lekérdezésekhez vagy külső táblákhoz való OPENROWSET(BULK ...) használat újrahasználható hozzáféréshez; külső tároláshoz használjuk a OneLake gyorsbillentyűket. |
- Ha Microsoft Entra ID hitelesítésre van szükséged távoli SQL-hez, vagy el akarod kerülni a PolyBase szolgáltatásokat, használj
OPENROWSET(MSOLEDBSQL, ...)ad hoc távoli lekérdezésekhez állandó objektumok nélkül. - Ha tartós táblázatokra, statisztikákra vagy pushdown számításra van szükséged távoli adatbázisokhoz, használj
CREATE EXTERNAL TABLEPolyBase csatlakozókat, példáulsqlserver://,oracle://,teradata://,mongodb://, ésodbc://.OPENROWSETnem támogatja ezeket a csatlakozókat. - Ha új fájlt fedezel fel vagy sémát tesztelsz, használd
OPENROWSET(BULK ...)gyors iterációt és állandó objektumok nélkül. - Ha fájladatokat töltesz be egy transzformációkat tartalmazó táblába, használd a(z)
INSERT ... SELECTelemet a(z)OPENROWSET(BULK ...)közül. - Ha sok felhasználó vagy alkalmazás számára irányításra vagy megosztott hozzáférésre van szükséged, használd
CREATE EXTERNAL TABLEúgy, hogy a jogosultságok és metaadatok központosítsanak legyenek. - Ha SQL adatbázisban dolgozol Fabric-ben,
OPENROWSET(BULK ...)használj ad hoc OneLake lekérdezéseket vagy külső táblákat az újrahasználható hozzáféréshez, és OneLake gyorsutakat használj külső tároláshoz.
Válassza ki a forgatókönyvet
Most, hogy megismerte a három módszert, használja az alábbi útmutatók egyikét az adott használati eset implementálásához.
Lekérdezésfájlok (Parquet, CSV vagy Delta)
Ha az adatok Parquet-, CSV- vagy Delta-fájlokban találhatók az Azure Blob Storage-on, az ADLS Gen2-ben, az S3-kompatibilis tárolóban vagy a OneLake-ben, kövesse az alábbi útmutatók egyikét:
| Scenario | Ajánlott útmutató | Platformok |
|---|---|---|
| Gyors ad hoc lekérdezés Parquet- vagy CSV-fájlon | Használja a OPENROWSET. Nincs szükség külső táblára |
SQL Server 2022 (16.x) és újabb verziók, Azure SQL Database, Felügyelt Azure SQL-példány, SQL Database a Fabricben |
| Ismétlődő lekérdezések parquet-fájlokon állandó sémával | Külső tábla létrehozása Parqueten keresztül | SQL Server 2022 (16.x) és újabb verziók, Azure SQL Database, Felügyelt Azure SQL-példány, SQL Database a Fabricben |
| CSV-fájlok lekérdezése külső táblával | Külső táblázat létrehozása fájlformátummal tagolt szöveghez | SQL Server 2019 (15.x) és újabb verziók, Azure SQL Database, Azure SQL Managed Instance, SQL Database a Fabric környezetben |
| Delta Lake-táblák lekérdezése | Külső táblát hozzon létre FILE_FORMAT = DeltaLakeFileFormat |
SQL Server 2022 (16.x) és újabb verziók |
| Lekérdezési eredmények exportálása Parquet- vagy CSV-fájlokba (CETAS) | Használja a CREATE EXTERNAL TABLE AS SELECT-t |
SQL Server 2022 (16.x) és újabb verziók, Felügyelt Azure SQL-példány |
- Gyors ad hoc lekérdezéshez egy Parquet vagy CSV fájlon használd
OPENROWSET. Ez a módszer nem igényel külső táblát. Az SQL Server 2022 (16.x) és későbbi verziók, Azure SQL Database, Azure SQL Managed Instance és SQL database in Fabric ezt a mintát támogatják. - A Parquet fájlok ismétlődő lekérdezéseihez tartós sémával külső táblát használjon a Parquet felett. Az SQL Server 2022 (16.x) és későbbi verziók, Azure SQL Database, Azure SQL Managed Instance és SQL database in Fabric ezt a mintát támogatják.
- CSV-fájlok lekérdezéséhez használjon külső táblát tagolt szöveghez való fájlformátummal. Az SQL Server 2019 (15.x) és későbbi verziók, Azure SQL Database, Azure SQL Managed Instance és SQL database in Fabric ezt a mintát támogatják.
- Delta Lake táblákon végzett lekérdezéshez használj egy külső táblát .
FILE_FORMAT = DeltaLakeFileFormatAz SQL Server 2022 (16.x) és későbbi verziók ezt a mintát támogatják. - Lekérdezési eredmények exportálásához Parquet vagy CSV fájlokba használd
CREATE EXTERNAL TABLE AS SELECT. Az SQL Server 2022 (16.x) és későbbi verziók, valamint az Azure SQL Managed Instance ezt a mintát támogatják.
Az alábbi lépésenkénti oktatóanyagok egyikét is követheti:
| Oktatóanyag | Leírás |
|---|---|
| A PolyBase használatának első lépései az SQL Server 2022-ben | Lefedi a Parquet OPENROWSET és CSV-adatokat, külső táblákat és mappanavigációt. |
| Parquet-fájl virtualizálása S3-kompatibilis objektumtárolóban PolyBase használatával | Oktatóanyag az SQL Server 2022 (16.x) és újabb verzióihoz. |
| CSV-fájl virtualizálása a PolyBase használatával | Oktatóanyag az SQL Server 2022 (16.x) és újabb verzióihoz. |
| Delta-tábla virtualizálása a PolyBase használatával | Oktatóanyag az SQL Server 2022 (16.x) és újabb verzióihoz. |
| Adatvirtualizálás az Azure SQL Database-lel (előzetes verzió) | Azure SQL Database-útmutató Parquethez és CSV-hez. |
| Adatvirtualizálás felügyelt Azure SQL-példánysal | Felügyelt Azure SQL-példányok útmutatója a Parquethez, a CSV-hez és a CETAS-hez. |
| Adatvirtualizáció SQL adatbázisban a Fabric-ben | SQL-adatbázis a Fabric útmutatóban OneLake fájlokhoz. |
Csatlakozás másik SQL Server-példányhoz, Azure SQL Database-hez vagy felügyelt SQL-példányhoz
Az SQL Server 2019 (15.x) és újabb verzióiban a PolyBase a csatolt kiszolgálók használata nélkül is lekérdezhet táblákat egy másik SQL Server-példányban, az Azure SQL Database-ben vagy az Azure SQL Managed Instance-ben.
Fontos
Az sqlserver:// összekötő nem támogatott az SQL Database-ben a Fabricben. A PolyBase RDBMS-összekötők SQL-hitelesítést használnak a CREATE DATABASE SCOPED CREDENTIAL segítségével, és nem támogatják Microsoft Entra-azonosítót, felügyelt identitást vagy szolgáltatás elsődleges hitelesítést. Mivel a Fabric sql-adatbázisához Microsoft Entra-hitelesítés szükséges, a PolyBase használatával nem csatlakozhat hozzá.
| Lépés | Teendők |
|---|---|
| 1. A PolyBase telepítése | A PolyBase telepítése Windows rendszeren vagy a PolyBase telepítése Linuxon |
| 2. Hitelesítő adatok létrehozása |
CREATE DATABASE SCOPED CREDENTIAL célzott bejelentkezéssel |
| 3. Külső adatforrás létrehozása | CREATE EXTERNAL DATA SOURCE ... WITH (LOCATION = 'sqlserver://<server>') |
| 4. Külső tábla létrehozása | CREATE EXTERNAL TABLE ... WITH (LOCATION = '<db>.<schema>.<table>') |
| 5. Lekérdezés | SELECT * FROM <external_table> |
-
- Telepítsd a PolyBase-et Windows-ra vagy Linuxra a Install PolyBase Windows-on vagy Install PolyBase on Linux segítségével, mielőtt konfigurálnád a külső SQL adatokhoz való hozzáférést.
-
- Hozzon létre egy adatbázis-hatókörű hitelesítő adatot a célként megadott bejelentkezéshez a
CREATE DATABASE SCOPED CREDENTIALhasználatával, hogy az adatbázismotor hitelesíthesse magát a távoli kiszolgálón.
- Hozzon létre egy adatbázis-hatókörű hitelesítő adatot a célként megadott bejelentkezéshez a
-
- Hozzon létre külső adatforrást a távoli SQL Server számára a használatával.
CREATE EXTERNAL DATA SOURCE ... WITH (LOCATION = 'sqlserver://<server>')
- Hozzon létre külső adatforrást a távoli SQL Server számára a használatával.
-
- Hozzon létre egy külső táblát a
CREATE EXTERNAL TABLE ... WITH (LOCATION = '<db>.<schema>.<table>')használatával a távoli tábla reprezentálására.
- Hozzon létre egy külső táblát a
-
- A külső táblát a(z)
SELECT * FROM <external_table>használatával kérdezheti le.
- A külső táblát a(z)
Jótanács
Az SQL Server-összekötő (sqlserver://) az Azure SQL Database és az Azure SQL Managed Instance esetében is működik. Használd ugyanazokat a lépéseket, és állítsd LOCATION be az Azure SQL Database vagy az Azure SQL Managed Instance végpontot (például, sqlserver://myserver.database.windows.net).
Részletes útmutató: A PolyBase konfigurálása külső adatokhoz való hozzáféréshez az SQL Serveren.
Csatlakozás Oracle-hez, Teradata-hoz vagy MongoDB-hez
Az SQL Server 2019 (15.x) és újabb verziói Az Oracle, a Teradata, a MongoDB és a Cosmos DB lekérdezése PolyBase ODBC-összekötőken keresztül történik.
| Adatforrás | Guide | Követelmények |
|---|---|---|
| Oracle | A PolyBase konfigurálása külső adatokhoz való hozzáféréshez az Oracle-ben | SQL Server 2019 (15.x) és újabb verziók, Oracle-ügyfélillesztők |
| Teradata | A PolyBase konfigurálása külső adatok eléréséhez a Teradata-ban | SQL Server 2019 (15.x) és újabb verziók, Teradata ODBC-illesztő |
| MongoDB / Cosmos DB | A PolyBase konfigurálása külső adatok eléréséhez a MongoDB-ben | SQL Server 2019 (15.x) és újabb verziók, MongoDB ODBC-illesztő |
| Bármely ODBC-forrás | A PolyBase konfigurálása külső adatok ODBC általános típusokkal való eléréséhez | SQL Server 2019 (15.x) és újabb verziók (Windows) (Linux az SQL Server 2025-től kezdve (17.x)) |
- Az Oracle adatforrások a Configure PolyBase (Konfigurál PolyBase) eszközt használják az Oracle útmutató külső adataihoz való hozzáféréshez, és SQL Server 2019 (15.x) és újabb verziókat, valamint Oracle kliens-illezőprogramokat igényelnek.
- A Teradata adatforrások a Configure PolyBase segítségével hozzáférnek a Teradata útmutatóban lévő külső adatokhoz, és az SQL Server 2019 (15.x) és újabb verziókat, valamint a Teradata ODBC illezőprogramot igénylik.
- A MongoDB vagy a Cosmos DB adatforrások a Configure PolyBase segítségével érhetik el külső adatokat a MongoDB útmutatóban, és az SQL Server 2019 (15.x) és újabb verziókat, valamint a MongoDB ODBC illezőprogramot igénylik.
- Bármely ODBC-forrás használhatja a PolyBase konfigurálása külső adatok ODBC általános típusokkal való eléréséhez útmutatót, és ehhez Windowson SQL Server 2019 (15.x) vagy újabb, Linuxon pedig SQL Server 2025 (17.x) vagy újabb verzió szükséges.
Csatlakozás az Azure Blob Storage-hoz vagy az ADLS Gen2-hez
| SQL-platform | Hitelesítési lehetőségek | Guide |
|---|---|---|
| SQL Server 2022 (16.x) és újabb verziók | SAS-jogkivonat, hozzáférési kulcs, felügyelt identitás (az SQL Server 2025-től kezdve (17.x)) | A PolyBase konfigurálása külső adatok elérésére az Azure Blob Storage-ban |
| SQL Server 2019 (15.x) | Hozzáférési kulcs (Hadoop-összekötőn keresztül) | A PolyBase konfigurálása külső adatok elérésére az Azure Blob Storage-ban |
| Azure SQL Database | SAS-jogkivonat, felügyelt identitás, Microsoft Entra-átengedés | Adatvirtualizálás az Azure SQL Database-lel (előzetes verzió) |
| Azure SQL Managed Instance | SAS-jogkivonat, felügyelt identitás | Adatvirtualizálás felügyelt Azure SQL-példánysal |
- Az SQL Server 2022 és újabb verziók támogatják az Azure Blob Storage vagy ADLS Gen2 hitelesítést SAS tokenek, hozzáférési kulcsok vagy Managed Identity használatával, amely az SQL Server 2025 (17.x) verzióval kezdődik. További információ: A PolyBase konfigurálása külső adatokhoz való hozzáféréshez az Azure Blob Storage-ban.
- Az SQL Server 2019 támogatja az Azure Blob Storage-t vagy az ADLS Gen2-t egy hozzáférési kulcs használatával a Hadoop csatlakozón keresztül. További információ: A PolyBase konfigurálása külső adatokhoz való hozzáféréshez az Azure Blob Storage-ban.
- Azure SQL Database támogatja Azure Blob Storage vagy ADLS Gen2 SAS tokens, Managed Identity vagy Microsoft Entra pass-through authentication használatával. További információ: Adatvirtualizálás az Azure SQL Database-lel (előzetes verzió).
- Az Azure SQL Managed Instance támogatja az Azure Blob Storage-t vagy az ADLS Gen2-t SAS tokenek vagy Managed Identity használatával. További információ: Adatvirtualizálás felügyelt Azure SQL-példányokkal.
Az SQL Server 2022-ben (16.x) az URI-előtagok módosultak. Az SQL Server 2019 (15.x) vagy korábbi verzióiból való migráláskor:
-
Azure Blob Storage: Váltás a következőre
wasb[s]://:abs:// -
ADLS Gen2: Váltás a következőre
abfs[s]://:adls://
További információ: A PolyBase konfigurálása külső adatokhoz való hozzáféréshez az Azure Blob Storage-ban.
Csatlakozás S3-kompatibilis objektumtárolóhoz
Az SQL Server 2022 (16.x) és újabb verziói támogatják az S3-kompatibilis tárolókat, például az Amazon S3-at, a MinIO-t és a Ceph-t.
További információ: A PolyBase konfigurálása külső adatok S3-kompatibilis objektumtárolóban való eléréséhez.
Adatok exportálása a (CETAS) használatával CREATE EXTERNAL TABLE AS SELECT
A CETAS külső fájlokba (Parquet vagy CSV) exportálja a lekérdezési eredményeket az Azure Blob Storage, az ADLS Gen2 vagy az S3-kompatibilis tárolóban.
| SQL-platform | Támogatott | Exportformátumok | Jegyzetek |
|---|---|---|---|
| SQL Server 2022 (16.x) és újabb verziók. Az ADLS Gen2-re történő exportáláshoz CETAS-szal SQL Server 2022 CU5 vagy újabb verzió szükséges. | Igen | Parquet, CSV | Szerver konfigurációt igényel: engedélyezi a polybase exportot. |
| Azure SQL Managed Instance | Igen | Parquet, CSV | Alapértelmezés szerint letiltva |
| Azure SQL Database | No | Nincs | Nem elérhető |
| SQL-adatbázis a Fabricben | No | Nincs | Nem elérhető |
- Az SQL Server 2022 és újabb verziók támogatják a CETAS-t, valamint exportálják a Parquet és CSV fájlokat. A Szerverkonfiguráció: PolyBase-exportálás engedélyezése beállítás megadása kötelező. A CETAS exportálás ADLS Gen2-be nem érhető el az SQL Server 2022 kiadásaiban, amelyek a CU5 előtt elérhetők.
- Azure SQL Managed Instance támogatja a CETAS-t, és exportálja a Parquet és CSV fájlokat. A Alapértelmezés szerint letiltva útmutatás az alapértelmezett állapotot írja le.
- Azure SQL Database nem támogatja a CETAS-t.
- Az SQL adatbázis a Fabric-ben nem támogatja a CETAS-t.
A Transact-SQL-referenciával kapcsolatban lásd: CREATE EXTERNAL TABLE AS SELECT (CETAS).
Gyors üzembe helyezési példák
1. példa: Alkalmi lekérdezés parquet-fájlon (OPENROWSET)
Nincs szükség külső táblára. Az SQL Server 2022 (16.x) és újabb verzióin, az Azure SQL Database-en, az Azure SQL Managed Instance-en és az SQL Database-en működik a Fabricben.
SELECT TOP 10 *
FROM OPENROWSET (
BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*.parquet',
FORMAT = 'PARQUET'
) AS [result];
2. példa: Külső tábla CSV-n keresztül az Azure Blob Storage-ban
Ez a példa minden SQL platformon működik, amelyek külső táblákat támogatnak CSV fájlokon keresztül.
1. lépés: Adatbázis-főkulcs (DMK) létrehozása. Erre a lépésre azért van szükség, mert a hitelesítő adatok egy SAS-jogkivonat titkot tárolnak. Azonban ezt a lépést kihagyhatod, ha Managed Identity vagy Microsoft Entra hitelesítést használsz.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';2. lépés: Hitelesítő adatok létrehozása SAS-jogkivonattal. Kihagyja a bevezetőt
?.CREATE DATABASE SCOPED CREDENTIAL MyStorageCred WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<your_SAS_token>'; -- omit the leading '?'3. lépés: Külső adatforrás létrehozása.
CREATE EXTERNAL DATA SOURCE MyAzureStorage WITH ( LOCATION = 'abs://mycontainer@mystorageaccount.blob.core.windows.net', CREDENTIAL = MyStorageCred );4. lépés: Fájlformátum létrehozása a CSV-hez.
CREATE EXTERNAL FILE FORMAT CsvFormat WITH ( FORMAT_TYPE = DELIMITEDTEXT, FORMAT_OPTIONS ( FIELD_TERMINATOR = ',', STRING_DELIMITER = '"', FIRST_ROW = 2 ) );5. lépés: A külső tábla létrehozása.
CREATE EXTERNAL TABLE dbo.SalesExternal ( OrderId INT, OrderDate DATE, Amount DECIMAL (18, 2), Customer NVARCHAR (100) ) WITH ( DATA_SOURCE = MyAzureStorage, LOCATION = '/data/sales/', FILE_FORMAT = CsvFormat );6. lépés: A külső tábla lekérdezése.
SELECT * FROM dbo.SalesExternal WHERE OrderDate >= '2025-01-01';
3. példa: Tábla lekérdezése egy másik SQL Serveren
Ez a példa az SQL Server 2019 (15.x) és újabb verzióin működik.
1. lépés: Adatbázis főkulcsának létrehozása (ez azért szükséges, mert a hitelesítő adatok egy jelszót tárolnak).
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';2. lépés: Hitelesítő adatok létrehozása a távoli SQL Server-példányhoz.
CREATE DATABASE SCOPED CREDENTIAL RemoteSqlCred WITH IDENTITY = 'remote_user', SECRET = '<password>';3. lépés: A külső adatforrás létrehozása.
CREATE EXTERNAL DATA SOURCE RemoteSqlServer WITH ( LOCATION = 'sqlserver://remote-server.contoso.com', PUSHDOWN = ON, CREDENTIAL = RemoteSqlCred );4. lépés: A külső tábla létrehozása (háromrészes név a következőben
LOCATION: ).CREATE EXTERNAL TABLE dbo.RemoteCustomers ( CustomerId INT, CustomerName NVARCHAR (200) COLLATE SQL_Latin1_General_CP1_CI_AS ) WITH ( DATA_SOURCE = RemoteSqlServer, LOCATION = 'SalesDB.dbo.Customers' );5. lépés: Lekérdezés kiszolgálók között.
SELECT c.CustomerName, s.Amount FROM dbo.RemoteCustomers AS c INNER JOIN dbo.LocalSales AS s ON c.CustomerId = s.CustomerId;
4. példa: Eredmények exportálása Parquetbe a CETAS használatával
Az SQL Server 2022 (16.x) és újabb verzióin, a felügyelt Azure SQL-példányon működik.
1. lépés: CETAS engedélyezése (csak SQL Serveren).
EXECUTE sp_configure 'allow polybase export', 1; RECONFIGURE;2. lépés: Hitelesítő adatok és adatforrás létrehozása (a korábbi példákból származó újrafelhasználás).
3. lépés: Fájlformátum létrehozása a Parquet-exportáláshoz.
CREATE EXTERNAL FILE FORMAT ParquetFormat WITH ( FORMAT_TYPE = PARQUET );4. lépés: Lekérdezési eredmények exportálása.
CREATE EXTERNAL TABLE dbo.Sales2025Export WITH ( DATA_SOURCE = MyAzureStorage, LOCATION = '/exports/sales_2025.parquet', FILE_FORMAT = ParquetFormat ) AS SELECT * FROM Sales.Orders WHERE OrderDate >= '2025-01-01';
A PolyBase T-SQL építőelemei
A forgatókönyvek implementálása előtt ismerje meg a PolyBase által használt alapvető T-SQL-objektumokat, és hogy azok hogyan illeszkednek egymáshoz:
A PolyBase T-SQL-objektumokat és azok kapcsolatait ábrázoló diagram a hitelesítéstől (adatbázis főkulcsa, hitelesítő adatai) az adatforrásokon és fájlformátumokon át a lekérdezési módszerekig (Külső tábla, OPENROWSET, BULK INSERTCETAS).
- Külső adatforrás szintaxisért lásd CREATE EXTERNAL DATA SOURCE.
- Külső fájlformátum szintaxisáért lásd CREATE EXTERNAL FILE FORMAT.
- Külső táblaszintaxisért lásd CREATE EXTERNAL TABLE.
- Az ad hoc adathozzáférési szintaxisért lásd az OPENROWSET.
- A CETAS szintaxisért lásd:CREATE EXTERNAL TABLE AS SELECT (CETAS).
Az összes objektum teljes Transact-SQL hivatkozását a PolyBase Transact-SQL hivatkozásában talál.
Fontos
Ellenőrizze a külső fájlformátum adattípus-társítását. Amikor külső fájlformátumot hoz létre, vagy fájlokat kérdez le a használatával OPENROWSET, a PolyBase automatikusan leképezi a forrásadattípusokat (Parquet, CSV, Delta, Oracle, Teradata, MongoDB) az SQL Server-adattípusokra. Az eltérő típusok csendes csonkolást, pontosságvesztést vagy lekérdezési hibákat okozhatnak. Egy Parquet DECIMAL(38,18) például a következőre képez le: DECIMAL(18,0). Tekintse át a leképezési táblákat, mielőtt külső táblaoszlopokat vagy egy WITH feltételt határoz meg. A teljes referenciaért tekintse meg a PolyBase típusleképezését.
Mikor van szüksége a(z) CREATE MASTER KEY elemre?
Az adatbázis-mesterkulcsot (DMK) a CREATE MASTER KEY szintaxissal hozzák létre. A DMK titkosítja az adatbázis hatókörébe tartozó hitelesítő adatokban tárolt titkos kulcsokat. Erre csak akkor van szükség, ha a hitelesítő adat titkos értéket tartalmaz, vagyis amikor jelszót, jogkivonatot vagy hozzáférési kulcsot tárol.
DMK szükséges (a hitelesítő adatok titkos kulcsokat tárolnak):
Hitelesítési típus IDENTITYértékTitkos DMK SAS-jogkivonat 'SHARED ACCESS SIGNATURE'Igen Szükséges S3 hozzáférési kulcs 'S3 ACCESS KEY'Igen Szükséges SQL-bejelentkezés / alapszintű hitelesítés '<username>'Igen Szükséges Tárfiók hozzáférési kulcsa '<storage_account_name>'Igen Szükséges - Egy SAS token hitelesítő érték titkos értéket használ
IDENTITY = 'SHARED ACCESS SIGNATURE'és tárol, ezért ehhez adatbázis mesterkulcs szükséges. - Az S3 hozzáférési kulcs hitelesítése titkos értéket használ
IDENTITY = 'S3 ACCESS KEY'és tárol, ezért ehhez adatbázis master kulcs szükséges.- Az SQL bejelentkezési vagy alapvető hitelesítési hitelesítő adatok titkos értéket használnak
IDENTITY = '<username>'és tárolnak, ezért ehhez adatbázis mesterkulcs szükséges.
- Az SQL bejelentkezési vagy alapvető hitelesítési hitelesítő adatok titkos értéket használnak
- A tárolófiókhoz szükséges hozzáférési kulcs hitelesítése titkos értéket használ
IDENTITY = '<storage_account_name>'és tárol, ezért ehhez adatbázis mesterkulcs szükséges.
- Egy SAS token hitelesítő érték titkos értéket használ
A DMK nem szükséges (nincs titkos kulcs tárolva):
Hitelesítési típus IDENTITYértékTitkos DMK Felügyelt identitás 'Managed Identity'No Nem kötelező Microsoft Entra ID 'User Identity'vagy'Managed Identity'No Nem kötelező - Egy Managed Identity credential nem használ
IDENTITY = 'Managed Identity'és tárol semmilyen titkot, így nem igényel adatbázis mesterkulcsot. - A Microsoft Entra ID hitelesítő adat
IDENTITY = 'User Identity'vagyIDENTITY = 'Managed Identity'használ, és nem tárol titkos adatot, ezért nincs szükség adatbázis-főkulcsra.
- Egy Managed Identity credential nem használ
Jótanács
Ha a nyilatkozatod CREATE DATABASE SCOPED CREDENTIAL nem tartalmaz titokot, nincs szükség DMK-ra. A felügyelt identitás és a Microsoft Entra ID-hitelesítés megbízhatóságot delegál a platformra. Az adatbázis nem tárol jelszavakat vagy jogkivonatokat.
Példák:
Ebben a példában a DMK-ra van szükség (a hitelesítő adatok SAS-jogkivonatot tárolnak).
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL SasCred
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<your_SAS_token>';
Ebben a példában a lekérdezésben nincs szükség a DMK-ra (felügyelt identitás, titkos kulcs nélkül).
CREATE DATABASE SCOPED CREDENTIAL ManagedIdentityCred
WITH IDENTITY = 'Managed Identity';
Ebben a példában a DMK-ra nincs szükség (Microsoft Entra átengedése, nincs titkos kód).
CREATE DATABASE SCOPED CREDENTIAL EntraIdCred
WITH IDENTITY = 'User Identity';
Távoli adathozzáférés OPENROWSET és külső táblák használatával
Az SQL Server három különböző módszert kínál a távoli adatok lekérdezésére. A szintaxis, a hitelesítés és az architektúra különbségeinek megértése esetén kiválaszthatja a megfelelő megközelítést.
| Megközelítés | Szemantika | Csatlakozik ehhez | Authentication | PolyBase-szolgáltatások | Platformok |
|---|---|---|---|---|---|
| OLE DB-lekérdezések | OPENROWSET(provider, connection, query) |
Bármely OLE DB-forrás MSOLEDBSQL-en, SQLOLEDB-en vagy más szolgáltatókon keresztül | SQL-hitelesítés, Windows-hitelesítés, Microsoft Entra ID (MSOLEDBSQL) | No | SQL Server (minden támogatott verzió) |
| Fájllekérdezések az SQL Server 2022 (16.x) és az SQL Server 2019 (15.x) verziókban | OPENROWSET(BULK ...) |
Fájlok helyi lemezen, hálózaton vagy felhőben (Azure Blob, ADLS, S3, OneLake) | SAS-jogkivonat, hozzáférési kulcs, felügyelt identitás, Microsoft Entra-azonosító | Igen a felhő 1-re; Nem, a helyi megoldásra | SQL Server 2022 (16.x) és SQL Server 2019 (15.x) |
| Fájllekérdezések az SQL Server 2025 (17.x) és későbbi verziókban | OPENROWSET(BULK ...) |
Fájlok helyi lemezen, hálózaton vagy felhőben (Azure Blob, ADLS, S3, OneLake) | SAS-jogkivonat, hozzáférési kulcs, felügyelt identitás, Microsoft Entra-azonosító | No | SQL Server 2022 (16.x) és újabb verziók, Azure SQL Database, Felügyelt Azure SQL-példány, SQL Database a Fabricben |
| PolyBase-összekötők |
CREATE EXTERNAL TABLE a CREATE EXTERNAL DATA SOURCE használatával sqlserver://, oracle://, teradata://, mongodb://, odbc:// |
Távoli SQL Server, Oracle, Teradata, MongoDB, ODBC-források | Csak SQL-hitelesítés | Igen | SQL Server 2019 (15.x) és újabb verziók (Windows); SQL Server 2025 (17.x) és újabb verziók (Linux) |
1 Az SQL Server 2022 (16.x) felhőfájl-hozzáféréséhez a PolyBase funkciót kell telepíteni.
- Az OLE DB lekérdezések a
OPENROWSET(provider, connection, query)használatával csatlakoznak bármely OLE DB-forráshoz az SQL Server összes támogatott verzióján, MSOLEDBSQL, SQLOLEDB vagy más szolgáltató használatával. Támogatják az SQL hitelesítést, a Windows authentication-t és a Microsoft Entra ID-t MSOLEDBSQL-lel, és nem igényelnek PolyBase szolgáltatások telepítését. - A fájllekérdezések a
OPENROWSET(BULK ...)használatával helyi lemezeken, hálózati megosztásokon vagy felhőalapú tárolókban, például az Azure Blob Storage-ben, az ADLS-ben, az S3-ban vagy a OneLake-ben található fájlok olvasására szolgálnak SAS-token, hozzáférési kulcs, Managed Identity vagy Microsoft Entra ID használatával. Támogatják a helyi és hálózati fájlokat az SQL Server 2005 és újabb verziókban, a SQL Server 2022 (16.x) és későbbi verziókban található felhőfájlokat, valamint az Azure SQL Database-ben, Azure SQL Managed Instance-ban és SQL adatbázisban a Fabric-ben. A fájllekérdezésekhez nem szükséges PolyBase szolgáltatások helyi fájlokhoz vagy felhőfájlokhoz az SQL Server 2022 (16.x) és későbbi verziókban. - A PolyBase-összekötők a(z)
CREATE EXTERNAL TABLEelemet a(z)CREATE EXTERNAL DATA SOURCEelemmel, valamint a(z)sqlserver://,oracle://,teradata://,mongodb://vagyodbc://hely használatával használják a távoli SQL Server-, Oracle-, Teradata-, MongoDB- vagy ODBC-forrásokhoz való csatlakozáshoz. Megkövetelik SQL hitelesítést és PolyBase szolgáltatásokat az SQL Server 2019 (15.x) verzióban, valamint a későbbi verziókban a Windows és az SQL Server 2025 (17.x), valamint a későbbi verziókban Linuxon. További információ: CREATE EXTERNAL DATA SOURCE (Transact-SQL).
Mikor érdemes használni az egyes megközelítéseket?
Az OLE DB OPENROWSET használata a következőhöz:
- Használj OLE DB-t
OPENROWSETgyors, egyszeri ad hoc lekérdezésekhez anélkül, hogy tartós objektumokat hoznának létre. - Használd az OLE DB-t
OPENROWSETMicrosoft Entra ID-hez vagy Managed Identity hitelesítéshez MSOLEDBSQL-en keresztül. - Használd az OLE DB-t
OPENROWSET, hogy elkerüld a PolyBase szolgáltatásfüggőséget. - Az OLE DB
OPENROWSEThasználatával bármely olyan adatforráshoz csatlakozhat, amely OLE DB-szolgáltatóval rendelkezik.
Az OPENROWSET(BULK) fájl használata a következőhöz:
- Használj fájlt
OPENROWSET(BULK ...)ad hoc fájlfeltáráshoz és sémák felfedezéséhez. - Használd a fájlt
OPENROWSET(BULK ...)gyors átalakuláshoz és előnézetekhez, mielőtt elkötelezed magad egy tábladefiníció mellett. - Használd a(z)
OPENROWSET(BULK ...)fájlt rugalmas inline oszloptranszformációkhoz, például típusátalakításhoz, szűréshez és számított oszlopokhoz. - Használj fájlt
OPENROWSET(BULK ...)olyan adatokhoz, amelyek nem változnak gyakran, és nem igényelnek tartós metaadatokat.
PolyBase-összekötők CREATE EXTERNAL TABLE használata a következőkkel:
- Használj
CREATE EXTERNAL TABLEPolyBase csatlakozókat tartós, újrahasználható tábladefiníciókhoz, amelyekhez több felhasználó vagy alkalmazás hozzáférhet. - Használj PolyBase csatlakozókat
CREATE EXTERNAL TABLEolyan termelési feladatokhoz, amelyek statisztikát és lekérdezési terv optimalizálást igényelnek. - Használj PolyBase csatlakozókat
CREATE EXTERNAL TABLEa pushdown számításhoz távoli forrásokhoz, mint az Oracle és az SQL Server. - Használj PolyBase csatlakozókat
CREATE EXTERNAL TABLEa megosztott irányítás és biztonság érdekében; a tábla létrehozása után a felhasználóknak csakSELECTengedélyük van. - Használj PolyBase csatlakozókat a(z)
CREATE EXTERNAL TABLEhasználatával, ha SQL-hitelesítés érhető el a távoli forráshoz.
OPENROWSET (OLE DB) – alkalmi távoli lekérdezések (nincs szükség PolyBase-szolgáltatásokra)
Az OLE DB-űrlap OPENROWSET egy távoli adatforráshoz csatlakozik egy OLE DB-szolgáltatón keresztül, végrehajt egy átmenő lekérdezést, és sorhalmazként adja vissza az eredményeket. Egy összekapcsolt kiszolgáló egyszeri, alkalmi alternatívája. Nem jönnek létre állandó metaadatok. Ez a szintaxis nem igényel PolyBase-szolgáltatásokat, és nem támogatja a felhőfájlokat és a külső adatforrásokat.
Ez a példalekérdezés egy távoli SQL Serverhez csatlakozik OLE DB-n keresztül (nem PolyBase).
SELECT *
FROM OPENROWSET (
'MSOLEDBSQL',
'Server=remote-server;Database=AdventureWorks;Trusted_Connection=yes;',
'SELECT TOP 10 * FROM AdventureWorks.Sales.SalesOrderHeader'
);
OPENROWSET(BULK) – fájlalapú lekérdezések (PolyBase)
A BULK formája OPENROWSET közvetlenül olvassa az adatokat fájlokból. Az SQL Server 2019 (15.x) és korábbi verziói helyi vagy UNC fájlelérési utakról olvas, és formátumfájlt igényel. Az SQL Server 2022 (16.x) és újabb verzióiban a felhőbeli tárolóból olvashat a paraméterek és DATA_SOURCE a FORMAT paraméterek használatával. Ez a megközelítés az adatvirtualizáláshoz használt PolyBase-integrált verzió.
A PolyBase és az adatvirtualizálás kontextusában, amikor az útmutató erre hivatkozik OPENROWSET , a OPENROWSET(BULK ...) külső fájlok lekérdezésére szolgáló záradékkal ellátott FORMAT szintaxist jelenti.
Példák:
Ez a példa lekérdezés egy Parquet-fájlt olvas be az Azure Blob Storage-ból (SQL Server 2022 és újabb verziók).
SELECT TOP 10 *
FROM OPENROWSET (
BULK 'data/sales/*.parquet',
DATA_SOURCE = 'MyAzureStorage',
FORMAT = 'PARQUET'
) AS [result];
Ez a példa lekérdezés beolvassa a beágyazott elérési úttal rendelkező Parquet-fájlokat (Azure SQL Database, Felügyelt Azure SQL-példány).
SELECT TOP 10 *
FROM OPENROWSET (
BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*.parquet',
FORMAT = 'PARQUET'
) AS [result];
Mikor érdemes az OPENROWSET-et és a külső táblákat használni?
Mind OPENROWSET(BULK ...) a külső táblák lehetővé teszik a külső adatok lekérdezését a T-SQL használatával, de különböző használati esetekhez vannak kialakítva. Az alábbi táblázat összefoglalja a főbb különbségeket, amelyek segítenek eldönteni, hogy melyik megközelítés felel meg a forgatókönyvnek.
| Képesség | OPENROWSET(BULK ...) |
Külső tábla |
|---|---|---|
| Purpose | Alkalmi feltárás és egyszeri lekérdezések | Állandó, újrafelhasználható tábladefiníció |
| Az adatbázisban tárolt metaadatok | Nem. A lekérdezés futtatása után semmi sem lesz mentve | Igen. A tábladefiníció, az adatforrás és a fájlformátum adatbázis-objektumként van tárolva |
| Sémadefiníció | Automatikusan kikövetkeztetett a fájlból (Parquet) vagy egy záradékkal WITH beágyazottan megadva |
Explicit módon definiálva az CREATE EXTERNAL TABLE utasításban |
| Permissions | Megköveteli ADMINISTER BULK OPERATIONS vagy ADMINISTER DATABASE BULK OPERATIONS |
A létrehozás után a táblán lévő szabványos SELECT engedély elegendő |
| Számított oszlopok | Igen. Adjon hozzá kifejezéseket és számított oszlopokat a listában; a SELECT metaadat-függvények csak filename()filepath() itt érhetők el. |
Nem. Rögzített oszloplista; átalakítások végrehajtása egy nézetben vagy a külső táblát beolvasó lekérdezésben |
| Statisztika | Azure SQL Managed Instance: manuális egyoszlopos statisztikák sys.sp_create_openrowset_statistics-n keresztül. Lásd az OPENROWSET manuális statisztikáit. SQL Server 2022 (16.x) és újabb verziók, Azure SQL Database, SQL-adatbázis a Fabricben: statisztikák automatikus létrehozása predikátumokon. A manuális OPENROWSET statisztikák nem támogatottak az SQL Server-en. |
Teljes CREATE STATISTICS körű támogatás minden platformon, valamint az SQL Server 2022 (16.x) és újabb verzióinak automatikus létrehozása. Lásd: Külső tábla manuális statisztikáinak létrehozása. |
| Veremalapú | Korlátozott támogatás. Előfordulhat, hogy a motor leküldi a szűrőket a fájlvizsgálathoz, de nincs leküldés a távoli RDBMS-forrásokhoz | Igen. Támogatja az RDBMS-csatlakozók számítási folyamatának áttolását (SQL Server, Oracle, Teradata, MongoDB) |
| a legjobb számára | Adatfeltárás, sémafelderítés, prototípus-lekérdezések, egyszeri adatbetöltések, rugalmas átalakítások | Éles számítási feladatok, ismétlődő lekérdezések, felhasználók közötti megosztott hozzáférés, irányítópultok és jelentéskészítés |
-
OPENROWSET(BULK ...)inkább alkalmas eseti feltáráshoz és egyszeri lekérdezésekhez, míg a külső tábla alkalmasabb az állandó, újra felhasználható tábladefiníciókhoz. -
OPENROWSET(BULK ...)a lekérdezés után nem tárolja a metaadatokat az adatbázisban, míg egy külső tábla adatbázis definícióját, adatforrását és fájlformátumát adatbázis objektumként tárolja. -
OPENROWSET(BULK ...)automatikusan kikövetkezteti a sémát egy Parquet-fájlból, vagy a sémát közvetlenül aWITHzáradékban határozza meg, míg egy külső tábla a sémát explicit módon aCREATE EXTERNAL TABLEutasításban definiálja. -
OPENROWSET(BULK ...)megköveteli a(z)ADMINISTER BULK OPERATIONSvagyADMINISTER DATABASE BULK OPERATIONSelemet, míg a meglévő külső táblát azok a felhasználók is lekérdezhetik, akiknek csak normálSELECTengedélyre van szükségük. -
OPENROWSET(BULK ...)támogatja a lekérdezésben kiszámított oszlopokat, valamint metaadat-függvényeket, mintfilename()ésfilepath(), míg egy külső táblának fix oszloplistája van, és átalakulást igényel egy nézetben vagy a lekérdezésben, amely a külső táblát olvassa. -
OPENROWSET(BULK ...)korlátozott statisztikai támogatással rendelkezik: az Azure SQL Managed Instancesys.sp_create_openrowset_statisticshasználható egyoszlopos statisztikákhoz, de az SQL Server 2022 (16.x) és későbbi verziók, az Azure SQL Database, valamint az SQL database in Fabric automatikusan generálnak statisztikákat predikátumokon. A manuálisOPENROWSETstatisztikák nem támogatottak az SQL Server-en, Azure SQL Database-en és az SQL adatbázisban a Fabric-ben. Egy külső tábla támogatja a teljesCREATE STATISTICSképességet minden platformon, valamint automatikus statisztikákat az SQL Server 2022 (16.x) és későbbi verziókban, az Azure SQL Database-ben, valamint az SQL adatbázisban a Fabric-ben. Lásd az OPENROWSET kézikönyv statisztikát és Külső táblázat kézikönyv statisztikák létrehozását. -
OPENROWSET(BULK ...)korlátozott leküldést tesz lehetővé, és nem támogatja a távoli RDBMS-forrásokba történő leküldést, míg egy külső tábla támogatja a számítások leküldését az RDBMS-összekötők esetében. -
OPENROWSET(BULK ...)Adatfeltárásra, sémafeltárásra, prototípusozásra, egyszeri betöltésekre és rugalmas transzformációkra a legjobb, míg a külső tábla a legjobb gyártási munkaterhelésekhez, ismétlődő lekérdezésekhez, megosztott hozzáféréshez, dashboardokhoz és jelentésekhez.
Ha rugalmasságra van szüksége, használja az OPENROWSET-et
Segítségével OPENROWSET megvizsgálhat egy fájlt, tesztelhet különböző sémákat, vagy számítási oszlopokat és átalakításokat adhat hozzá állandó objektumok létrehozása nélkül. Kinyerheti például a fájl elérési útját oszlopként, adattípusokat ágyazhat be, vagy egyetlen lekérdezésben szűrhet számítási kifejezésekre.
Ez a példa lekérdezés számított oszlopokat és átalakításokat tartalmaz:
SELECT result.filename() AS [FileName],
result.filepath(1) AS [Year],
result.filepath(2) AS [Month],
CAST (OrderDate AS DATE) AS OrderDate,
Amount,
OrderDate
FROM OPENROWSET (
BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*/*/*/*.parquet',
FORMAT = 'PARQUET'
) AS result
WHERE result.filepath(1) = '2025';
Jótanács
Az filepath() és filename() függvények elérhetők az Azure SQL Database, az Azure SQL Managed Instance, valamint az SQL Server 2022 (16.x) és újabb verzióiban. Lehetővé teszik a fájl elérési útjának egyes részeire való szűrést (partíciók eltávolítását), és a forrásfájl nevét oszlopként teszi elérhetővé, ami külső táblák esetében nem lehetséges közvetlenül.
Külső táblák használata, ha adatmegőrzésre és szabályozásra van szüksége
Külső táblákat akkor használjon, ha több felhasználónak vagy alkalmazásnak újra le kell kérdeznie ugyanazokat a külső adatokat. Egyszer definiálhatja a sémát, az adatforrást és a hitelesítő adatokat, és tárolhatja őket az adatbázisban. A felhasználóknak csak a táblára vonatkozó engedélyre van szükségük SELECT .
A külső táblák a statisztikákat is támogatják, amelyeket a lekérdezésoptimalizáló a jobb végrehajtási tervek létrehozásához használ. Létrehozhat statisztikákat manuálisan, vagy engedélyezheti a motor automatikus létrehozását (SQL Server 2022 (16.x) és újabb verziók).
Ez a példa lekérdezés statisztikákat hoz létre egy külső táblán a jobb lekérdezési tervek érdekében.
CREATE STATISTICS Stats_OrderDate
ON dbo.SalesExternal(OrderDate)
WITH FULLSCAN;
A két megközelítés statisztikáiról további információt a PolyBase teljesítményével kapcsolatos szempontok – Statisztika című témakörben talál.
BULK INSERT vs. OPENROWSET(BULK): Melyiket érdemes használni?
Mind BULK INSERT és OPENROWSET(BULK ...) adatok importálása fájlokból az SQL Serverbe ugyanazt a bulkload motort használja. Ezek azonban eltérnek a szintaxistól, a rugalmasságtól és az eredményektől. Az alábbi táblázat összefoglalja a főbb különbségeket:
Megjegyzés:
Az önálló BULK INSERT utasítás nem támogatott az SQL adatbázisban a Fabric-ben. Adatok betöltéséhez használd a INSERT ... SELECT és a OPENROWSET(BULK ...) elemeket a OneLake-kel.
| Képesség | BULK INSERT |
OPENROWSET(BULK ...) |
|---|---|---|
| Alapszintű cél | Adatok betöltése közvetlenül egy fájlból egy céltáblába | Egy sorhalmazt ad vissza, amelyet egy SELECT vagy INSERT ... SELECT utasításban használ. |
| Használati minta | Önálló utasítás: BULK INSERT <table> FROM '<file>' |
Egy lekérdezésen belül kell használni: SELECT * FROM OPENROWSET(BULK ...) vagy INSERT INTO <table> SELECT * FROM OPENROWSET(BULK ...) |
| Céltáblát igényel? | Igen. Mindig közvetlenül egy táblába ír | Nem. Innen adatokat lehet kinyerni anélkül, hogy bárhova beszúrná őket, vagy beszúrhatja bármelyik táblázatba vagy ideiglenes táblába. |
| Oszlopátalakítások a betöltés során | Korlátozott támogatás. Az adatfolyamok a fájlból a táblába változatlanul kerülnek (a leképezést a formátumfájl vagy az oszlopsorrend szabályozza) | Teljes körű támogatás. Kifejezéseket, szűrőket, CASTWHEREJOIN egyéb táblákat és számított oszlopokat vehet fel a környezetbeSELECT |
| Táblázat tippek | A WITH záradék támogatja a BATCHSIZE, CHECK_CONSTRAINTS, FIRE_TRIGGERS, KEEPIDENTITY, KEEPNULLS, TABLOCKstb. |
Támogatja a táblázatos tippeket a INSERT ... SELECT * FROM OPENROWSET(BULK ...) WITH (TABLOCK, IGNORE_CONSTRAINTS, ...) szintaxison keresztül |
| Nagyméretű objektum (LOB) egyértékű importálása | Nem támogatott | Igen. Támogatja SINGLE_BLOB, SINGLE_CLOB, SINGLE_NCLOB a teljes fájl importálását mint egy varbinary(max), varchar(max), vagy nvarchar(max) érték |
| Fájlok formázása | Igen. Támogatott XML és nem XML formátumokkal | Igen. Támogatott (XML és nem XML) |
| Felhőfájl-hozzáférés |
DATA_SOURCEtámogatja az Azure Blob Storage-t az SQL Server 2017 (14.x) és későbbi verziókban, Azure SQL Database-ben és Azure SQL Managed Instance-ban. Az SQL Server 2019 CU11 és későbbi frissítések is támogatják az ADLS Gen2-t. Az S3-kompatibilis tárolás nem támogatott. |
DATA_SOURCEtámogatja az Azure Blob Storage-t az SQL Server 2017 (14.x) és későbbi verziókban, ADLS Gen2-t az SQL Server 2019 CU11 és újabb verziókban, valamint S3-kompatibilis tárolást az SQL Server 2022 (16.x) és későbbi verziókban. Az Azure SQL Database és az Azure SQL Managed Instance támogatja az Azure Blob Storage-ot és az ADLS Gen2-t. Az SQL adatbázis a Fabric-ben támogatja a OneLake-et és a külső tárolást OneLake gyorsítványokon keresztül. |
| Parquet- vagy Delta-fájlok | Nem támogatott. Csak CSV/tagolt szöveg | Igen. Az SQL Server 2022 (16.x) és újabb verziói, az Azure SQL Managed Instance és az Azure SQL Database támogatja a(z) FORMAT = 'PARQUET' és a(z) FORMAT = 'DELTA' elemet; a Fabric SQL-adatbázisa támogatja a(z) FORMAT = 'PARQUET' elemet, de a(z) DELTA elemet nem. További információ: OPENROWSET BULK (Transact-SQL). |
| Engedély szükséges |
ADMINISTER BULK OPERATIONS vagy ADMINISTER DATABASE BULK OPERATIONS, plusz INSERT a céltáblán |
ADMINISTER BULK OPERATIONS vagy ADMINISTER DATABASE BULK OPERATIONS |
| Minimális naplózás | Igen. Egyszerű vagy tömegesen naplózott helyreállítási modellekben támogatott TABLOCK |
Igen. Támogatott, ha INSERT ... SELECT és TABLOCK együtt használják |
-
BULK INSERTközvetlenül betölti az adatokat egy fájlból egy céltáblába, miközbenOPENROWSET(BULK ...)egy sorhalmazt ad vissza, amit egySELECTvagyINSERT ... SELECTutasításban használhatsz. -
BULK INSERTönálló állítás, mígOPENROWSET(BULK ...)olyan lekérdezésen belül kell használni, mintSELECT * FROM OPENROWSET(BULK ...)például vagyINSERT INTO <table> SELECT * FROM OPENROWSET(BULK ...). -
BULK INSERTmindig közvetlenül egy céltáblába ír, mígOPENROWSET(BULK ...)a fájlbólSELECTis írhat anélkül, hogy bárhová behelyezné, vagy bármely táblapba vagy ideiglenes táblába illeszten. -
BULK INSERTkorlátozott támogatással rendelkezik az oszloptranszformációknak, mivel az adatok a fájlból a táblába áramlik as-is, ahol a leképezést formátumos fájl vagy oszlopsorrend irányítja.OPENROWSET(BULK ...)támogatja a kifejezéseket, aCASTelemeket, aWHEREszűrőket, a(z)JOINelemeket és a számított oszlopokat a környezőSELECT-ben. -
BULK INSERTegyWITHzáradékot használCHECK_CONSTRAINTS,BATCHSIZE,FIRE_TRIGGERS,KEEPIDENTITY,KEEPNULLS,TABLOCKés egyéb jelzésekhez.OPENROWSET(BULK ...)a táblahinták használatát aINSERT ... SELECT * FROM OPENROWSET(BULK ...) WITH (TABLOCK, IGNORE_CONSTRAINTS, ...)révén támogatja. -
BULK INSERTnem támogatja a nagy objektum egyértékű importálást.OPENROWSET(BULK ...)támogatja a(z)SINGLE_BLOB,SINGLE_CLOBésSINGLE_NCLOBhasználatát egy teljes fájl egyetlen varbinary(max), varchar(max) vagy nvarchar(max) értékként történő importálásához. - A
BULK INSERTés aOPENROWSET(BULK ...)is támogatja az XML- és nem XML-formátumú fájlokat. - A(z)
BULK INSERThasználatával történő felhőfájl-hozzáféréshez aDATA_SOURCEparaméter az Azure Blob Storage használatát támogatja a SQL Server 2017 (14.x) és újabb verzióiban, az Azure SQL Database-ben és az Azure SQL Managed Instance-ben. Az SQL Server 2019 CU11 és későbbi frissítések is támogatják az ADLS Gen2-t, deBULK INSERTnem támogatják az S3-kompatibilis tárolást. AOPENROWSET(BULK ...),DATA_SOURCEtámogatja az Azure Blob Storage-t az SQL Server 2017 (14.x) és későbbi verziókban, ADLS Gen2-t az SQL Server 2019 CU11 és újabb verziókban, valamint S3-kompatibilis tárolót az SQL Server 2022 (16.x) és későbbi verziókban. Az Azure SQL Database és az Azure SQL Managed Instance támogatja az Azure Blob Storage-ot és az ADLS Gen2-t. Az SQL adatbázis a Fabric-ben támogatja a OneLake-et és a külső tárolást OneLake gyorsítványokon keresztül. -
BULK INSERTnem támogatja a Parquet vagy Delta fájlokat, csak CSV-t vagy departált szöveget támogat.OPENROWSET(BULK ...)támogatja a(z)FORMAT = 'PARQUET'ésFORMAT = 'DELTA'elemet a SQL Server 2022-ben (16.x) és újabb verziókban, az Azure SQL Database-ben, valamint az Azure SQL Managed Instance-ben. Az SQL adatbázis a Fabric-ben támogatjaFORMAT = 'PARQUET', de nemFORMAT = 'DELTA'. További információ: OPENROWSET BULK (Transact-SQL). -
BULK INSERThasználatához a céltábláhozADMINISTER BULK OPERATIONSvagyINSERT, valamintOPENROWSET(BULK ...)engedély szükséges, mígADMINISTER DATABASE BULK OPERATIONShasználatáhozADMINISTER BULK OPERATIONSvagyADMINISTER DATABASE BULK OPERATIONSengedély szükséges. -
BULK INSERTtámogatja a minimális naplózást az egyszerű vagy a tömeges naplózású helyreállítási modell használata esetén a(z)TABLOCKhasználatával.OPENROWSET(BULK ...)támogatja a minimális naplózást, haTABLOCKésINSERT ... SELECTegyütt használják.
Mikor érdemes választani? BULK INSERT
Akkor használható BULK INSERT , ha egyszerű fájl–táblázat terheléssel rendelkezik, és nem kell adatokat átalakítania, szűrnie vagy összekapcsolnia az importálás során. Egyszerűbb szintaxist használ a CSV-hez vagy más tagolt fájlokhoz:
Ez a példa lekérdezés egy CSV-fájlt tölt be az Azure Blob Storage-ból közvetlenül egy táblába.
BULK INSERT Sales.Invoices
FROM 'invoices/inv-2025-01.csv'
WITH (
DATA_SOURCE = 'MyAzureBlobStorage',
FORMAT = 'CSV',
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);
Ez a példalekérdezés betölt egy helyi fájlt egy formátumfájllal az oszlopleképezéshez.
BULK INSERT dbo.Products
FROM 'C:\Data\products.csv'
WITH (
FORMATFILE = 'C:\Data\products.fmt',
FIRSTROW = 2,
TABLOCK
);
Mikor válassza az OPENROWSET(BULK) elemet?
Akkor használja OPENROWSET(BULK ...) , ha az alábbi feltételek közül legalább egyre van szüksége:
- Használd
OPENROWSET(BULK ...)a fájladatok lekérdezésére vagy előnézetére anélkül, hogy először táblázatot hoznék létre. - Használd
OPENROWSET(BULK ...)az adatok átalakítására, szűrésére vagy összekapcsolására importáláskor. - A Parquet- vagy Delta-fájlok betöltéséhez használja a
OPENROWSET(BULK ...)elemet, mert aBULK INSERTnem támogatja ezeket a formátumokat. - Használd
OPENROWSET(BULK ...)egy egész fájl importálására egyetlen LOB értékként ,SINGLE_BLOBSINGLE_CLOB, vagySINGLE_NCLOB.
Ez a példa lekérdezés egy CSV-fájlt tekint meg az Azure Blob Storage-ból anélkül, hogy bárhol beszúrja az adatokat.
SELECT TOP 10 *
FROM OPENROWSET (
BULK 'invoices/inv-2025-01.csv',
DATA_SOURCE = 'MyAzureBlobStorage',
FORMAT = 'CSV',
FIRSTROW = 2,
FIELDTERMINATOR = ','
) AS src;
Ez a példa lekérdezés transzformációval és szűréssel szúr be adatokat.
INSERT INTO Sales.Invoices (InvoiceDate, Amount, Customer)
SELECT CAST (InvoiceDate AS DATE),
Amount * 1.1, -- Apply a 10% markup
UPPER(Customer)
FROM OPENROWSET (
BULK 'invoices/inv-2025-01.csv',
DATA_SOURCE = 'MyAzureBlobStorage',
FORMAT = 'CSV',
FIRSTROW = 2
) WITH (
InvoiceDate VARCHAR (10),
Amount DECIMAL (18, 2),
Customer VARCHAR (100)
) AS src
WHERE Amount IS NOT NULL;
Ez a példa lekérdezés betölt egy Parquet-fájlt (nem lehetséges BULK INSERT-vel).
INSERT INTO Sales.Invoices
SELECT *
FROM OPENROWSET (
BULK 'data/invoices/*.parquet',
DATA_SOURCE = 'MyAzureStorage',
FORMAT = 'PARQUET') AS src;
Ez a példa lekérdezés egy teljes XML-fájlt importál egyetlen varbinary(max) értékként.
INSERT INTO dbo.XmlDocuments (DocContent)
SELECT BulkColumn
FROM OPENROWSET (
BULK 'C:\Data\catalog.xml',
SINGLE_BLOB
) AS x;
Jótanács
Az egyik módszer az, hogy a OPENROWSET(BULK ...) segítségével egy SELECT feltározza és ellenőrzi a fájlokat, majd a végső produkciós terhelésre vált BULK INSERT , ha nincs szükség átalakításokra. Ha Parquet- vagy Delta-támogatásra vagy beágyazott szűrésre van szüksége, maradjon ezzelOPENROWSET.
További információkért tekintse meg a következő kapcsolódó útmutatókat:
- A(z) Az adatok SQL Serverbe történő importálása a(z) BULK INSERT vagy az OPENROWSET(BULK...) használatával című cikk részletes, egymás melletti összehasonlító útmutatót nyújt, és a biztonsági szempontokat is ismerteti.
-
Az Adat tömeges importálása és exportálása (SQL Server) cikk áttekintést nyújt az összes tömeges adatmozgási módszerről, beleértve a bcp-t,
BULK INSERT, ésOPENROWSET. - A BULK INSERT (Transact-SQL) cikk
BULK INSERTteljes T-SQL-referenciáját tartalmazza. - A OPENROWSET BULK (Transact-SQL) című cikk a
OPENROWSET(BULK ...)teljes T-SQL-referenciáját tartalmazza. - A példák az Azure Blob Storage-ban tárolt adatok tömeges elérésére című cikk egymás melletti példákon keresztül mutatja be mindkét módszert az Azure Storage használatával.
- A Nagyméretű objektumadatok tömeges importálása az OPENROWSET Bulk Rowset Providerrel (SQL Server) című cikk
SINGLE_CLOB,SINGLE_NCLOBésSINGLE_BLOBpéldákat mutat be. -
A "Használj egy formátumfájlt adat tömeges importálásához (SQL Server") cikk mindkét módszerrel bemutatja a formátumfájl használatát.
- A tömeges import során a NULL értékek megőrzésével vagy az alapértelmezett értékek alkalmazásával kapcsolatos útmutatásért lásd: NULL értékek vagy alapértelmezett értékek megőrzése tömeges import során (SQL Server).
- Az identitásértékek tömeges importálás közbeni megőrzéséhez vonatkozó útmutatásért lásd: Azonosító értékek megőrzése adatimportáláskor (SQL Server) címet.
Hasznos metaadat-függvények
Amikor külső fájlokat OPENROWSET vagy külső táblákat használsz, használd a beépített funkciókat és eljárásokat a fájladatok vizsgálatára, sémák felfedezésére és partíciós lekérdezések megvalósítására.
filepath() és filename()
A filepath() függvények filename() a fájl elérési útjának részeit vagy az eredményhalmaz egyes sorainak fájlnevét adják vissza. Különösen hasznosak a következő esetekben:
Partíciók megszüntetése: Szűrjön a mappaszegmensekre (például év/hónap/nap partíciókra), hogy a motor csak a megfelelő fájlokat olvassa be ahelyett, hogy mindent beolvasana.
Forrás metaadatainak felfedése: Adja meg a forrásfájl nevét vagy elérési útját oszlopként a lekérdezés eredményei között, ami hasznos lehet a naplózáshoz vagy a hibakereséshez.
| Funkció | Visszatérítések | Example |
|---|---|---|
filename() |
A forrásfájl fájlneve (a kiterjesztést is beleértve) az egyes sorokhoz | sales_2025_01.parquet |
filepath(N) |
Az N mappaszegmens a helyettesítő karaktert követően (*) az elérési útvonalban, ahol BULK 1-nél kezdődik |
Az sales/2025/01/*.parquet elérési útnál a filepath(1) visszaadja a 2025-t, a filepath(2) visszaadja a 01-t. |
A következőkre vonatkozik: Azure SQL Database, Felügyelt Azure SQL-példány, SQL Server 2022 (16.x) és újabb verziók, SQL Database a Fabricben.
Ez a példalekérdezés filepath() használja partíciók eliminációjára és filename() a forrásfájlok azonosítására. Csak a /2025/ mappa alatti fájlokat olvassa be, és csak az /06/ almappában lévő fájlokat olvassa be.
SELECT result.filename() AS SourceFile,
result.filepath(1) AS [Year],
result.filepath(2) AS [Month],
*
FROM OPENROWSET (
BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*/*/*.parquet',
FORMAT = 'PARQUET'
) AS result
WHERE result.filepath(1) = '2025'
AND result.filepath(2) = '06';
Jótanács
Helyezzen filepath() szűrőket a WHERE záradékba, nem pedig egy albekérdezésbe vagy egy CTE-be. Ha a szűrő szerepel a WHERE záradékban, a motor a partíciók eltávolítását a fájlvizsgálat szintjén hajthatja végre, ami jelentősen csökkenti az I/O-t.
sp_describe_first_result_set – OPENROWSET-oszloptípusok felderítése
Parquet-fájlok használatakor a OPENROWSET automatikusan következteti az oszlopadattípusokat (sémakövetkeztetés). A következtetett típusok a szükségesnél nagyobbak lehetnek. A karakteroszlopok például gyakran varchar(8000) néven vannak kikövetkeztetve, mivel a parquet metaadatai nem tartalmazzák a maximális hosszt. Ez a választás csökkentheti a teljesítményt, és több memóriát használhat fel.
A sp_describe_first_result_set lekérdezés véglegesítése előtt ellenőrizze a kikövetkeztetett sémát. A kikövetkeztetett típusok megjelenítése után adjon meg szűkebb típusokat egy WITH záradékban a teljesítmény javítása érdekében.
1. lépés: Vizsgálja meg a következtetett sémát.
EXECUTE sp_describe_first_result_set N' SELECT * FROM OPENROWSET( BULK ''abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*.parquet'', FORMAT = ''PARQUET'' ) AS result';A kimenet az egyes oszlopok nevét, a kikövetkeztetett adattípust, a maximális hosszt, a pontosságot és a skálázást jeleníti meg. Ha azt látod, hogy varchar(8000) van ott, ahol egy varchar(100) is elegendő lenne, bíráld felül.
2. lépés: Explicit típusokat használjon a jobb teljesítmény érdekében.
SELECT TOP 100 * FROM OPENROWSET ( BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*.parquet', FORMAT = 'PARQUET' ) WITH ( OrderId INT, OrderDate DATE, Amount DECIMAL (18, 2), Customer VARCHAR (100) -- much narrower than the inferred varchar(8000) ) AS result;
A sémakövetkeztetés csak Parquet-fájlokkal működik. CSV-fájlok esetén mindig adjon meg oszlopdefiníciókat egy WITH záradékban (for OPENROWSET) vagy az CREATE EXTERNAL TABLE utasításban.
sp_describe_first_result_set egy általánosan használható eljárás az SQL Serverhez, az Azure SQL Database-hez, az Azure SQL Managed Instance-hez és a Fabric SQL-adatbázisához, de különösen hasznos a OPENROWSET lekérdezésekhez. További információért lásd a sp_describe_first_result_set dokumentációt.
Teljesítmény, hibaelhárítás és ajánlott eljárások
Az adatvirtualizálás implementálása után az alábbi útmutatók segítségével optimalizálhatja a teljesítményt, diagnosztizálhatja a problémákat, és biztosíthatja az éles üzemkészséget:
| Terület | Cikk | Részletek |
|---|---|---|
| PolyBase-teljesítmény | Teljesítményre vonatkozó szempontok az SQL Server PolyBase-ben | Statisztika, leküldés, párhuzamosság és memóriakezelés |
| Leküldéses számítás | Szerveroldali számítások a PolyBase-ben | Annak meghatározása, hogy mely műveletek kerülnek a távoli forrásba tolásra |
| Hogyan állapíthatja meg, hogy történt-e pushdown | Hogyan ismerheti fel, hogy külső nyomás-leadás történt-e | Lekérdezési tervek és DMV-k |
| Hibaelhárítás | PolyBase- monitorozása és hibaelhárítása | Gyakori hibák és megoldások |
| Kerberos-kapcsolat | PolyBase Kerberos-kapcsolat hibaelhárítása | |
| Gyakori kérdések | PolyBase – gyakori kérdések | |
| Hibák és megoldások | PolyBase-hibák és lehetséges megoldások |