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. A PolyBase az adatbázismotor funkciója, amely adatvirtualizálást valósít meg az SQL Server és az Azure SQL között. 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.
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ájl lekérdezése BI-hoz/jelentéskészítéshez | 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 |
Mely funkciók érhetők el hol?
Az alábbi táblázat bemutatja, hogy mely alapvető PolyBase- és adatvirtualizálási funkciók érhetők el az egyes SQL-platformokon. 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 | No | 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 hatókörébe tartozó hitelesítő adatok az Azure SQL-végpontra irányulnak, ugyanazokkal a lépésekkel, mint egy másik SQL Serverhez való csatlakozás.
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.
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 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 kezelése | 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ó | Igen az Azure SQL Database-hez és a felügyelt Azure SQL-példányhoz Nem SQL Server példányok esetén |
| Á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 |
Az SQL Server 2019 (15.x) és az SQL Server 2022 (16.x) felhőbeli fájlhozzáféréshez PolyBase-szolgáltatások szükségesek. Az SQL Server 2025 (17.x) és újabb verziói natív támogatást nyújtanak a CSV, a Parquet és a Delta polyBase nélküli verziójához.
Útmutató döntésekhez
| Scenario | Ajánlás |
|---|---|
| Távoli SQL-hez Microsoft Entra ID-hitelesítésre van szükségem, vagy el szeretném kerülni a PolyBase-szolgáltatásokat | Használat OPENROWSET(MSOLEDBSQL, ...) (alkalmi, állandó objektumok nélkül) |
| Állandó táblákra, statisztikákra vagy leküldéses számításokra van szükségem a távoli adatbázisokban | Használja a CREATE EXTERNAL TABLE PolyBase-összekötőkkel (sqlserver://, oracle://, teradata://, mongodb://, odbc://).
OPENROWSET
nem támogatja az összekötőket |
| Új fájl felfedezése vagy séma tesztelése | Használat OPENROWSET(BULK ...) (gyors iteráció, állandó objektumok nélkül) |
| Fájladatokat ömlesztek egy táblázatba átalakításokkal | Használd INSERT ... SELECT a OPENROWSET(BULK ...) |
| Irányításra vagy megosztott hozzáférésre van szükségem számos felhasználó vagy alkalmazás számára | Használja a CREATE EXTERNAL TABLE, hogy az engedélyek és a metaadatok központosítva legyenek. |
| Sql Database-ben dolgozom a Fabricben | Ad hoc OPENROWSET(BULK ...) OneLake-lekérdezésekhez vagy ismételt elérésre alkalmas külső táblákhoz; külső tárolókhoz a OneLake-parancsikonok használata |
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 későbbi verziók, Azure SQL Database, Felügyelt Azure SQL-példány, SQL-adatbázis 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 |
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> |
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álja ugyanazokat a lépéseket, és állítsa be LOCATION az Azure SQL-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 CREATE EXTERNAL TABLE AS SELECT (CETAS) használatával
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 | Igen | Parquet, CSV | Kiszolgálókonfigurációt igényel: a polybase exportálásának engedélyezése |
| 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ő |
A Transact-SQL hivatkozásért lásd a CREATE EXTERNAL TABLE AS SELECT (CETAS) című témakört.
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 Olyan SQL-platformon működik, amely támogatja a PolyBase-t.
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. Ezt a lépést azonban akkor teheti meg, ha felügyelt identitást vagy Microsoft Entra-hitelesítést használ.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong_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 = '<strong_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 bemutató 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áblázat, OPENROWSET, BULK INSERT, CETAS).
Ezekről a T-SQL-utasításokról a következő témakörben olvashat bővebben:
- HOZZÁ EGY KÜLSŐ ADATFORRÁST
- KÜLSŐ FÁJLFORMÁTUM LÉTREHOZÁSA
- KÜLSŐ TÁBLA LÉTREHOZÁSA
- OPENROWSET
- KÜLSŐ TÁBLA LÉTREHOZÁSA KIVÁLASZTÁSKÉNT (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ég a CREATE MASTER KEY-ra?
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 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ő
Jótanács
Ha nincs titok a CREATE DATABASE SCOPED CREDENTIAL nyilatkozatában, nincs szüksége 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 = '<strong_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ájl-lekérdezések | 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őhöz*; Nem helyi | SQL Server 2005; SQL Server 2022 (16.x) és újabb verziók (felhő); Azure SQL |
| 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) |
Az SQL Server 2019 (15.x) és az SQL Server 2022 (16.x) felhőbeli fájlhozzáféréshez PolyBase-szolgáltatások szükségesek. Az SQL Server 2025 (17.x) és újabb verziói natív felhőalapú fájltámogatással rendelkeznek, és már nincs szükség PolyBase-ra a CSV, a Parquet vagy a Delta használatához.
Mikor érdemes használni az egyes megközelítéseket?
Az OLE DB OPENROWSET használata a következőhöz:
- Gyors, egyszeri alkalmi lekérdezések állandó objektumok létrehozása nélkül
- Microsoft Entra-azonosító vagy felügyelt identitás hitelesítése (MSOLEDBSQL-en keresztül)
- A PolyBase szolgáltatásfüggőségeinek elkerülése
- Csatlakozás bármely adatforráshoz egy OLE DB-szolgáltatóval
Az OPENROWSET(BULK) fájl használata a következőhöz:
- Alkalmi fájlfeltárás és sémafelderítés
- Gyors átalakítások és előnézetek a tábladefiníció véglegesítése előtt
- Rugalmas oszlopátalakítások beágyazottan (öntés, szűrés, számított oszlopok)
- Olyan adatok, amelyek nem változnak gyakran, és nem igényelnek állandó metaadatokat
PolyBase-összekötők használata a CREATE EXTERNAL TABLE használatával a következő célokra:
- Több felhasználó vagy alkalmazás által elért állandó, újrafelhasználható tábladefiníciók
- Termelési számítási feladatok, amelyek statisztikákat és lekérdezésterv-optimalizálást igényelnek
- Leküldési számítások távoli forrásokhoz (leküldési szűrők Oracle-re, SQL Szerverre stb.)
- Megosztott irányítás és biztonság (létrehozás után a felhasználóknak csak engedélyre van szükségük
SELECT) - Ha sql-hitelesítés érhető el a távoli forrás számára
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: manuális egyoszlopos statisztikák az sys.sp_create_openrowset_statistics; SQL Server 2022 (16.x) és újabb verziók: statisztikák automatikus létrehozása predikátumokon (nincsenek manuális statisztikák az SQL Serveren). Lásd az OPENROWSET manuális statisztikáit. |
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 |
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:
BULK INSERT nem áll rendelkezésre a Fabric SQL adatbázisban. Fabric esetén használja OPENROWSET(BULK ...) a OneLake-hez.
| 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őbeli fájlhozzáférés (Azure Blob Storage, ADLS Gen2, S3) | Igen. Paraméterrel DATA_SOURCE támogatott (SQL Server 2017 (14.x) és újabb verziók, Azure SQL) |
Igen. Támogatva a DATA_SOURCE paraméterrel vagy a beágyazott URL-címmel a FORMAT záradék segítségével (SQL Server 2022 (16.x) és újabb verziók, Azure SQL) |
| Parquet- vagy Delta-fájlok | Nem támogatott. Csak CSV/tagolt szöveg | Igen. A FORMAT = 'PARQUET' vagy FORMAT = 'DELTA' támogatása (SQL Server 2022 (16.x) és újabb verziók, Azure 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 |
Mikor válassza a TÖMEGES BESZÚRÁS lehetőséget?
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:
- Fájladatok lekérdezése vagy előnézete tábla létrehozása nélkül.
- Adatok átalakítása, szűrése vagy csatlakoztatása importáláskor.
-
Parquet- vagy Delta-fájlok betöltése (csak
OPENROWSETezeket a formátumokat támogatja). -
Importáljon egy teljes fájlt egyetlen LOB-értékként (
SINGLE_BLOB,SINGLE_CLOB, ).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:
- A BULK INSERT vagy AZ OPENROWSET(BULK...) használatával adatokat importálhat az SQL Serverre: Részletes, biztonsági szempontokat tartalmazó útmutató.
-
Adatok tömeges importálása és exportálása (SQL Server): Az összes tömeges adatáthelyezési módszer (bcp,
BULK INSERT, ).OPENROWSET - BULK INSERT (Transact-SQL): Teljes T-SQL-referencia.
- OPENROWSET BULK (Transact-SQL): Teljes T-SQL-referencia.
- Példák az Adatok tömeges elérésére az Azure Blob Storage-ban: Egymás melletti példák mindkét módszerrel az Azure Storage-ban.
-
Nagyméretű objektumadatok tömeges importálása az OPENROWSET Bulk Rowset Provider (SQL Server):
SINGLE_BLOB,SINGLE_CLOB, ésSINGLE_NCLOBpéldákkal. - Adatok tömeges importálásához használjon formátumfájlt (SQL Server):: A fájlhasználat formázása mindkét módszerrel.
Hasznos metaadat-függvények
Ha külső fájlokat vagy külső táblákat OPENROWSET kérdez le, számos beépített függvényt és eljárást használhat a fájl metaadatainak vizsgálatához, sémák felderítéséhez és partícióérzékeny lekérdezések implementálásához.
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 N 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 olyan varchar(8000) jelenik meg, ahol a varchar(100) elegendő lenne, felülbírálja azt:
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 Ez egy általános SQL Server- és Azure SQL-eljárás, de lekérdezésekhez OPENROWSET különösen hasznos. 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 |