Adatok csatlakoztatása, lekérdezése és exportálása a PolyBase használatával

Vonatkozik a következőkre: SQL Server 2016 (13.x) és későbbi verziók Azure SQL DatabaseAzure SQL Managed InstanceSQL 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 a BULK INSERT kö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

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 INSERT vagy OPENROWSET(BULK ...) elemet a INSERT ... SELECT paranccsal 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 és FORMAT = '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 TABLE PolyBase csatlakozókat, például sqlserver://, oracle://, teradata://, mongodb://, és odbc://. OPENROWSET nem 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 ... SELECT elemet 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 = DeltaLakeFileFormat Az 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>
    1. 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.
    1. Hozzon létre egy adatbázis-hatókörű hitelesítő adatot a célként megadott bejelentkezéshez a CREATE DATABASE SCOPED CREDENTIAL használatával, hogy az adatbázismotor hitelesíthesse magát a távoli kiszolgálón.
    1. 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>')
    1. 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.
    1. A külső táblát a(z) SELECT * FROM <external_table> használatával kérdezheti le.

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

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-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 Transact-SQL objektumokat és azok kapcsolatait bemutató diagram.

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

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ék Titkos 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.
    • 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.
  • A DMK nem szükséges (nincs titkos kulcs tárolva):

    Hitelesítési típus IDENTITY érték Titkos 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' vagy IDENTITY = 'Managed Identity' használ, és nem tárol titkos adatot, ezért nincs szükség adatbázis-főkulcsra.

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 TABLE elemet a(z) CREATE EXTERNAL DATA SOURCE elemmel, valamint a(z) sqlserver://, oracle://, teradata://, mongodb:// vagy odbc:// 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 OPENROWSET gyors, egyszeri ad hoc lekérdezésekhez anélkül, hogy tartós objektumokat hoznának létre.
  • Használd az OLE DB-t OPENROWSET Microsoft 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 OPENROWSET haszná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 TABLE PolyBase 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 TABLE olyan termelési feladatokhoz, amelyek statisztikát és lekérdezési terv optimalizálást igényelnek.
  • Használj PolyBase csatlakozókat CREATE EXTERNAL TABLE a pushdown számításhoz távoli forrásokhoz, mint az Oracle és az SQL Server.
  • Használj PolyBase csatlakozókat CREATE EXTERNAL TABLE a megosztott irányítás és biztonság érdekében; a tábla létrehozása után a felhasználóknak csak SELECT engedélyük van.
  • Használj PolyBase csatlakozókat a(z) CREATE EXTERNAL TABLE haszná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 a WITH záradékban határozza meg, míg egy külső tábla a sémát explicit módon a CREATE EXTERNAL TABLE utasításban definiálja.
  • OPENROWSET(BULK ...) megköveteli a(z) ADMINISTER BULK OPERATIONS vagy ADMINISTER DATABASE BULK OPERATIONS elemet, míg a meglévő külső táblát azok a felhasználók is lekérdezhetik, akiknek csak normál SELECT engedélyre van szükségük.
  • OPENROWSET(BULK ...) támogatja a lekérdezésben kiszámított oszlopokat, valamint metaadat-függvényeket, mint filename() és filepath(), 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 Instance sys.sp_create_openrowset_statistics haszná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ális OPENROWSET statisztiká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 teljes CREATE STATISTICS ké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 INSERT közvetlenül betölti az adatokat egy fájlból egy céltáblába, miközben OPENROWSET(BULK ...) egy sorhalmazt ad vissza, amit egy SELECT vagy INSERT ... SELECT utasításban használhatsz.
  • BULK INSERT önálló állítás, míg OPENROWSET(BULK ...) olyan lekérdezésen belül kell használni, mint SELECT * FROM OPENROWSET(BULK ...) például vagy INSERT INTO <table> SELECT * FROM OPENROWSET(BULK ...).
  • BULK INSERT mindig közvetlenül egy céltáblába ír, míg OPENROWSET(BULK ...) a fájlból SELECT is írhat anélkül, hogy bárhová behelyezné, vagy bármely táblapba vagy ideiglenes táblába illeszten.
  • BULK INSERT korlá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, a CAST elemeket, a WHERE szűrőket, a(z) JOIN elemeket és a számított oszlopokat a környező SELECT-ben.
  • BULK INSERT egy WITH záradékot használ CHECK_CONSTRAINTS, BATCHSIZE, FIRE_TRIGGERS, KEEPIDENTITY, KEEPNULLS, TABLOCK és egyéb jelzésekhez. OPENROWSET(BULK ...) a táblahinták használatát a INSERT ... SELECT * FROM OPENROWSET(BULK ...) WITH (TABLOCK, IGNORE_CONSTRAINTS, ...) révén támogatja.
  • BULK INSERT nem támogatja a nagy objektum egyértékű importálást. OPENROWSET(BULK ...) támogatja a(z) SINGLE_BLOB, SINGLE_CLOB és SINGLE_NCLOB haszná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 a OPENROWSET(BULK ...) is támogatja az XML- és nem XML-formátumú fájlokat.
  • A(z) BULK INSERT használatával történő felhőfájl-hozzáféréshez a DATA_SOURCE paramé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, de BULK INSERT nem támogatják az S3-kompatibilis tárolást. A OPENROWSET(BULK ...), DATA_SOURCE tá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 INSERT nem 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' és FORMAT = '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 nem FORMAT = 'DELTA'. További információ: OPENROWSET BULK (Transact-SQL).
  • BULK INSERT használatához a céltáblához ADMINISTER BULK OPERATIONS vagy INSERT, valamint OPENROWSET(BULK ...) engedély szükséges, míg ADMINISTER DATABASE BULK OPERATIONS használatához ADMINISTER BULK OPERATIONS vagy ADMINISTER DATABASE BULK OPERATIONS engedély szükséges.
  • BULK INSERT tá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) TABLOCK használatával. OPENROWSET(BULK ...) támogatja a minimális naplózást, ha TABLOCK és INSERT ... SELECT együ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 a BULK INSERT nem 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, vagy SINGLE_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:

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