Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na: SQL Server 2016 (13.x) a novější verze
Azure SQL Database
Azure SQL Managed Instance
SQL database in Microsoft Fabric
Virtualizace dat umožňuje spouštět dotazy Transact-SQL (T-SQL) na externí data, aniž byste je museli načítat do databáze. Definujete externí zdroj dat, volitelný formát souboru a externí tabulku a potom externí tabulku dotazujete stejně SELECT jako jakoukoli jinou tabulku.
Tato příručka vám pomůže:
- Zjistěte, které funkce PolyBase podporují vaši platformu a verzi SQL.
- Můžete si vybrat mezi
OPENROWSET, externími tabulkami aBULK INSERTpro dotazování nebo ingestování dat. - Pro běžné scénáře postupujte podle podrobných odkazů.
- Projděte si výkon, řešení potíží a osvědčené postupy pro produkční úlohy.
Podpora platformy
- PolyBase je funkce Microsoft SQL Database Engine, která implementuje virtualizaci dat.
- PolyBase je podporován ve verzích SQL Server 2016 a novějších na Windows a v SQL Server 2019 a novějších verzích na Linuxu.
- PolyBase není podporován v SQL Server 2017 na Linuxu.
- PolyBase není v Azure SQL Database podporován, ale Azure SQL Database poskytuje související možnosti virtualizace dat prostřednictvím
OPENROWSETa externích tabulek. Další informace najdete v tématu Virtualizace dat se službou Azure SQL Database (Preview). - PolyBase není funkcí v Azure SQL Managed Instance podle jména, ale Azure SQL Managed Instance má podobně funkční funkce virtualizace dat. Další informace najdete v tématu Virtualizace dat se službou Azure SQL Managed Instance.
- PolyBase není podporován v SQL databázích ve Fabric, ale SQL databáze ve Fabric poskytuje vlastní možnosti virtualizace dat v OneLake. Pro více informací viz virtualizace dat v SQL databázi ve Fabric.
- PolyBase není v Fabric Data Warehouse funkcí. Pro virtualizaci dat v Fabric Data Warehouse zvažte Fabric OneLake Shortcuts. Pro články o načítání dat v Fabric Data Warehouse viz Data ingestion with T-SQL a Dimensional modeling: Load Tables.
Běžné případy použití
Následující tabulka popisuje možné scénáře použití.
| Scénář | Využití |
|---|---|
| Ad hoc zkoumání souborů | OPENROWSET(BULK ...) |
| Opakovaně použitelné dotazování souborů pro BI nebo reporting | Externí tabulky nad soubory |
| Dotazování mezi databázemi (SQL Server, Oracle, Teradata, MongoDB, ODBC) | Konektory PolyBase s externími tabulkami |
| Export výsledků dotazu do souborů |
CREATE EXTERNAL TABLE AS SELECT (CETAS) |
| Hromadné vkládání do tabulek |
BULK INSERT nebo OPENROWSET(BULK ...) s INSERT ... SELECT |
- Pro ad hoc průzkum souborů použijte
OPENROWSET(BULK ...)k prozkoumání souborů, aniž byste vytvářeli znovupoužitelnou tabulku. - Pro opakovaně použitelné dotazy na soubory v BI nebo reportovací scénáře použijte externí tabulky místo souborů pro zachování schématu a sdílení výsledků mezi dotazy.
- Pro dotazování napříč databázemi použijte konektory PolyBase s externími tabulkami pro přístup ke zdrojům SQL Server, Oracle, Teradata, MongoDB nebo ODBC.
- Pro export výsledků dotazů do souborů použijte
CREATE EXTERNAL TABLE AS SELECT(CETAS) pro zápis Parquet nebo CSV výstupu mimo databázi. - Pro hromadné načítání do tabulek použijte
OPENROWSET(BULK ...)neboINSERT ... SELECTsBULK INSERTk načtení dat ze souborů do databázových tabulek.
Které funkce jsou k dispozici, kde?
Následující tabulka ukazuje, které základní funkce PolyBase a virtualizace dat jsou dostupné na každé SQL platformě počínaje SQL Server 2019. Pro dostupnost funkcí v SQL Server 2016 a SQL Server 2017 na Windows viz Funkce a omezení PolyBase. Pomocí této tabulky můžete určit, co můžete na platformě dělat, než použijete podrobné příručky.
| funkce | SQL Server 2019 | SQL Server 2022 | SQL Server 2025 | Azure SQL Database | Azure SQL Managed Instance | Databáze SQL v rámci Microsoft Fabric |
|---|---|---|---|---|---|---|
| externí tabulky | Ano | Ano | Ano | Ano | Ano | Ano |
| OPENROWSET (BULK) | Ano 1 | Ano | Ano | Ano | Ano | Ano |
| CETAS (export) | Ne | Ano | Ano | Ne | Ano | Ne |
| Soubory CSV / soubory s oddělovači | Ano 2 | Ano | Ano | Ano | Ano | Ano |
| Soubory Parquet | Ne | Ano | Ano | Ano | Ano | Ano |
| Tabulky Delta Lake | Ne | Ano | Ano | Ne | Ne | Ne |
| Připojení k jinému SQL Serveru | Ano | Ano | Ano | Ne | Ne | Ne |
| Připojení ke službě Azure SQL Database nebo azure SQL Managed Instance | Ano 3 | Ano 3 | Ano 3 | Ne | Ne | Ne |
| Připojení k Oracle / Teradata / MongoDB | Ano | Ano | Ano | Ne | Ne | Ne |
| Připojení ke službě Azure Blob Storage | Ano | Ano | Ano | Ano | Ano | Ne |
| Připojení k ADLS Gen2 | Ano 5 | Ano | Ano | Ano | Ano | Ne |
| Připojení k úložišti kompatibilnímu s S3 | Ne | Ano | Ano | Ne | Ne | Ne |
| Připojení k OneLake (Fabric) | Ne | Ne | Ne | Ne | Ne | Ano |
| Výpočet posunu dolů | Ano | Ano | Ano | Ne | Ne | Ne |
| ověřování spravované identity | Ne | Ne | Ano 4 | Ano | Ano | Ne |
1 SQL Server 2019 (15.x) podporuje OPENROWSET(BULK...) pro místní a síťové cesty k souborům. V SQL Serveru 2022 (16.x) a novějších verzích OPENROWSET(BULK...) podporuje také čtení z cloudového úložiště pomocí FORMAT = 'PARQUET', FORMAT = DELTAa FORMAT = 'CSV'.
Podpora CSV 2 v SQL Serveru 2019 (15.x) vyžadovala Hadoop. V SQL Serveru 2022 (16.x) a v novějších verzích je CSV podporováno nativně bez Hadoopu.
3 Používá konektor SQL Serveru (sqlserver://). Databázově omezené přihlašovací údaje cílí na SQL endpoint. Použijte stejné kroky jako při připojení k jiné instanci SQL Server.
4 Ověřování spravované identity se podporuje pro připojení ke službě Azure Blob Storage (ABS) a ADLS Gen2. Vyžaduje SQL Server s podporou Azure Arc nebo SQL Server na virtuálním počítači Azure pro místní SQL Server. Je nativně dostupná ve službě Azure SQL Database a azure SQL Managed Instance.
5 SQL Server 2019 CU11 a novější verze podporují Azure Data Lake Storage Gen2 s předponou abfs nebo abfss. V SQL Server 2022 a novějších verzích použijte tuto adls předponu.
- Externí tabulky jsou podporovány v SQL Server 2019, SQL Server 2022, SQL Server 2025, Azure SQL Database, Azure SQL Managed Instance a SQL databázi v Microsoft Fabric.
-
OPENROWSET (BULK)je podporován ve službách SQL Server 2019, SQL Server 2022, SQL Server 2025, Azure SQL Database, Azure SQL Managed Instance a SQL databázi v Microsoft Fabric. SQL Server 2019 podporuje lokální a síťové cesty k souborům, zatímco verze SQL Server 2022 a novější také podporují čtení cloudového úložiště sFORMAT = 'PARQUET',FORMAT = DELTA, aFORMAT = 'CSV'. - Export CETAS není podporován v SQL Server 2019, Azure SQL Database ani SQL databázi v Microsoft Fabric. Export CETAS je podporován v SQL Server 2022, SQL Server 2025 a Azure SQL Managed Instance.
- CSV a oddělené soubory jsou podporovány v SQL Server 2019, SQL Server 2022, SQL Server 2025, Azure SQL Database, Azure SQL Managed Instance a SQL databázi v Microsoft Fabric. SQL Server 2019 vyžaduje Hadoop pro podporu CSV, zatímco SQL Server 2022 a pozdější verze podporují CSV nativně bez Hadoopu.
- Soubory Parquet nejsou v SQL Server 2019 podporovány. Soubory Parquet jsou podporovány v SQL Server 2022, SQL Server 2025, Azure SQL Database, Azure SQL Managed Instance a SQL databázi v Microsoft Fabric.
- Tabulky Delta Lake nejsou podporovány v SQL Server 2019, Azure SQL Database, Azure SQL Managed Instance ani SQL databázích v Microsoft Fabric. Tabulky Delta Lake jsou podporovány v SQL Server 2022 a SQL Server 2025.
- Připojení k jiné instanci SQL Server je podporováno v SQL Server 2019, SQL Server 2022 a SQL Server 2025. Připojení k jiné instanci SQL Server není podporováno v Azure SQL Database, Azure SQL Managed Instance ani SQL databázi v Microsoft Fabric.
- Připojení k Azure SQL Database nebo Azure SQL Managed Instance je podporováno v SQL Server 2019, SQL Server 2022 a SQL Server 2025 pomocí konektoru SQL Server. Databázově omezené přihlašovací údaje cílí na endpoint Azure SQL Database nebo Azure SQL Managed Instance a konfigurační kroky jsou stejné jako při připojení k jiné instanci SQL Server. Tato spojení nejsou podporována v Azure SQL Database, Azure SQL Managed Instance ani SQL databázi v Microsoft Fabric.
- Připojení k Oracle, Teradata nebo MongoDB je podporováno ve SQL Server 2019, SQL Server 2022 a SQL Server 2025. Tato spojení nejsou podporována v Azure SQL Database, Azure SQL Managed Instance ani SQL databázi v Microsoft Fabric.
- Připojení k Azure Blob Storage je podporováno z SQL Server 2019, SQL Server 2022, SQL Server 2025, Azure SQL Database a Azure SQL Managed Instance. Připojení k Azure Blob Storage není podporováno ze SQL databáze v Microsoft Fabric.
- Připojení k ADLS Gen2 není podporováno v SQL Server 2019 verzích před CU11 ani ze SQL databáze v Microsoft Fabric. Připojení k ADLS Gen2 je podporováno od SQL Server 2019 CU11 a také v SQL Server 2022, SQL Server 2025, Azure SQL Database a Azure SQL Managed Instance.
- Připojení k úložišti kompatibilnímu se S3 není podporováno v SQL Server 2019, Azure SQL Database, Azure SQL Managed Instance ani SQL databázi v Microsoft Fabric. Připojení k úložišti kompatibilnímu se S3 je podporováno v SQL Server 2022 a SQL Server 2025.
- Připojení k OneLake je podporováno z SQL databáze v Microsoft Fabric. Připojení k OneLake není podporováno ve SQL Server 2019, SQL Server 2022, SQL Server 2025, Azure SQL Database ani Azure SQL Managed Instance.
- Výpočty metodou pushdown jsou podporovány v aplikaci SQL Server 2019, SQL Server 2022 a SQL Server 2025. Výpočet pushdown není podporován v Azure SQL Database, Azure SQL Managed Instance ani v databázi SQL v Microsoft Fabric.
- Autentizace spravované identity není podporována v SQL Server 2019 ani SQL Server 2022. Autentizace spravované identity je podporována v SQL Server 2025 pro připojení k Azure Blob Storage a ADLS Gen2 a vyžaduje SQL Server nebo SQL Server s podporou Azure Arc na Azure virtuálním stroji. Autentizace spravované identity je také podporována v Azure SQL Database a Azure SQL Managed Instance, ale v SQL databázích v Microsoft Fabric není podporována.
Poznámka:
Počínaje SQL Serverem 2025 (17.x) je dotazování datových souborů (CSV, Parquet a Delta) ve službě Azure Blob Storage, ADLS Gen2 nebo S3 nativní funkcí modulu, která už nevyžaduje instalaci nebo spouštění služeb PolyBase. Konektory RDBMS (SQL Server, Oracle, Teradata, MongoDB, ODBC) stále vyžadují instalaci a spuštění služeb PolyBase. SQL Server 2025 (17.x) také přidává podporu Linuxu pro tyto konektory, které byly dříve dostupné jenom ve Windows.
Dotazování externích dat
Než zvolíte konkrétní scénář, seznamte se se třemi způsoby dotazování externích dat:
| Přístup | Syntaxe | Použít, když | Autentizace | Nutná instalace PolyBase |
|---|---|---|---|---|
| Ad hoc dotazy OLE DB | OPENROWSET(provider, connection, query) |
Chcete rychlý jednorázový dotaz bez trvalých objektů nebo potřebujete ověřování Microsoft Entra ID. | Ověřování SQL, ověřování systému Windows, Microsoft Entra ID (MSOLEDBSQL) | Ne |
| Ad hoc dotazy na soubory | OPENROWSET(BULK ...) |
Před vytvořením tabulky chcete rychle prozkoumat data souboru nebo otestovat schémata. | Token SAS, přístupový klíč, spravovaná identita, Microsoft Entra ID | SQL Server 2022: Ano 1 SQL Server 2025 a pozdější verze: Ne Azure SQL Database, Azure SQL Managed Instance a databáze SQL v prostředí Fabric: Integrované |
| Trvalé datové konektory |
CREATE EXTERNAL TABLE s sqlserver://, oracle://, teradata://, atd. |
Potřebujete opakovaný přístup, zásady správného řízení, statistiky a výpočty pushdownu pro produkční prostředí. | Pouze ověřování SQL | Ano |
1 Pro přístup ke cloudovým souborům v SQL Server 2022 (16.x) musíte nainstalovat funkci PolyBase, ale konektory kompatibilní s úložištěm Azure Blob Storage, ADLS Gen2 a S3 nezávisí na službách PolyBase. SQL Server 2025 (17.x) a novější verze mají nativní podporu pro CSV, Parquet a Delta bez nutnosti instalace nebo spuštění služeb PolyBase.
- Ad hoc dotazy v OLE DB slouží
OPENROWSET(provider, connection, query)k rychlému jednorázovému přístupu k vzdálenému datovému zdroji bez vytváření perzistentních objektů. Mohou používat SQL autentizaci, Windows authentication nebo Microsoft Entra ID s MSOLEDBSQL. Tento scénář nevyžaduje instalaci PolyBase. - Ad hoc dotazy na soubory slouží
OPENROWSET(BULK ...)k rychlému prozkoumání datových souborů nebo testování schématu před vytvořením tabulky. Mohou používat SAS tokeny, přístupové klíče, spravovanou identitu nebo Microsoft Entra ID. SQL Server 2022 vyžaduje instalaci funkce PolyBase pro cloudové soubory, ale nevyžaduje služby PolyBase. SQL Server 2025 a novější verze nevyžadují PolyBase pro cloudové soubory. Ad hoc dotazy na soubory jsou integrované do Azure SQL Database, Azure SQL Managed Instance a databáze SQL v prostředí Fabric. - Persistentní datové konektory používají
CREATE EXTERNAL TABLEssqlserver://,oracle://,teradata://, a podobnými místy pro opakovaný přístup, správu, statistiku a výpočty pushdown v produkčních zátěžích. Vyžadují SQL autentizaci a služby PolyBase.
Průvodce rozhodováním
| Scénář | Recommendation |
|---|---|
| Pro vzdálené SQL potřebujete autentizaci Microsoft Entra ID, nebo se chcete vyhnout službám PolyBase. | Použití OPENROWSET(MSOLEDBSQL, ...) (ad hoc, žádné trvalé objekty). |
| Potřebujete trvalé tabulky, statistiky nebo pushdown výpočty do vzdálených databází. | Používá se CREATE EXTERNAL TABLE s konektory PolyBase (sqlserver://, oracle://, teradata://, mongodb://, odbc://).
OPENROWSET Nepodporuje konektory. |
| Zkoumáte nový soubor nebo testujete schéma. | Použití OPENROWSET(BULK ...) (rychlá iterace, žádné perzistentní objekty). |
| Vstupujete data souboru do tabulky s transformacemi. | Použít INSERT ... SELECT z OPENROWSET(BULK ...). |
| Potřebujete správu nebo sdílený přístup pro mnoho uživatelů či aplikací. | Používejte CREATE EXTERNAL TABLE tak, aby byla oprávnění a metadata centralizovaná. |
| Pracujete v SQL databázi v prostředí Fabric. | Použijte OPENROWSET(BULK ...) pro ad hoc dotazy OneLake nebo externí tabulky pro opakované použití; pro externí úložiště použijte zkratky OneLake. |
- Pokud potřebujete autentizaci Microsoft Entra ID pro vzdálené SQL nebo se chcete vyhnout službám PolyBase, použijte je
OPENROWSET(MSOLEDBSQL, ...)pro ad hoc vzdálené dotazy bez persistentních objektů. - Pokud potřebujete trvalé tabulky, statistiky nebo přenesení výpočtů do vzdálených databází, použijte
CREATE EXTERNAL TABLEs konektory PolyBase, jako jsousqlserver://,oracle://,teradata://,mongodb://aodbc://.OPENROWSETtyto konektory nepodporuje. - Pokud prozkoumáváte nový soubor nebo testujete schéma, používejte
OPENROWSET(BULK ...)ho pro rychlou iteraci a žádné trvalé objekty. - Pokud načítáte data ze souboru do tabulky s transformacemi, použijte
INSERT ... SELECTzOPENROWSET(BULK ...). - Pokud potřebujete správu nebo sdílený přístup pro více uživatelů nebo aplikací, použijte
CREATE EXTERNAL TABLEtak, aby byla oprávnění a metadata centralizovaná. - Pokud pracujete se SQL databází ve Fabric, používejte
OPENROWSET(BULK ...)pro ad hoc dotazy OneLake nebo externí tabulky pro znovupoužitelný přístup, a pro externí úložiště používejte zkratky OneLake.
Volba scénáře
Teď, když rozumíte třem přístupům, použijte jeden z následujících průvodců k implementaci vašeho konkrétního případu použití.
Dotazování souborů (Parquet, CSV nebo Delta)
Pokud jsou vaše data v souborech Parquet, CSV nebo Delta ve službě Azure Blob Storage, ADLS Gen2, úložišti kompatibilním s S3 nebo OneLake, postupujte podle jednoho z těchto průvodců:
| Scénář | Doporučená příručka | Platforms |
|---|---|---|
| Rychlý ad hoc dotaz na soubor Parquet nebo CSV | Použijte OPENROWSET. Není potřeba žádná externí tabulka. |
SQL Server 2022 (16.x) a novější verze, Azure SQL Database, Azure SQL Managed Instance, SQL databáze v Microsoft Fabric |
| Opakované dotazy na soubory Parquet s trvalým schématem | Vytvoření externí tabulky přes Parquet | SQL Server 2022 (16.x) a novější verze, Azure SQL Database, Azure SQL Managed Instance, SQL databáze v Microsoft Fabric |
| Dotazování souborů CSV s externí tabulkou | Vytvořte externí tabulku s formátem souboru pro text s oddělovači | SQL Server 2019 (15.x) a novější verze, Azure SQL Database, Azure SQL Managed Instance, SQL databáze v Azure Fabric |
| Dotazování tabulek Delta Lake | Vytvoření externí tabulky pomocí FILE_FORMAT = DeltaLakeFileFormat |
SQL Server 2022 (16.x) a novější verze |
| Export výsledků dotazu do souborů Parquet nebo CSV (CETAS) | Použijte CREATE EXTERNAL TABLE AS SELECT |
SQL Server 2022 (16.x) a novější verze, Azure SQL Managed Instance |
- Pro rychlý ad hoc dotaz na soubor Parquet nebo CSV použijte
OPENROWSET. Tato metoda nevyžaduje externí stůl. SQL Server 2022 (16.x) a novější verze, Azure SQL Database, Azure SQL Managed Instance a SQL database in Fabric tento vzorec podporují. - Pro opakované dotazy na soubory Parquet s trvalým schématem použijte externí tabulku místo Parquet. SQL Server 2022 (16.x) a novější verze, Azure SQL Database, Azure SQL Managed Instance a SQL database in Fabric tento vzorec podporují.
- Pro dotaz na CSV soubory použijte externí tabulku s formátem souboru pro vymezený text. SQL Server 2019 (15.x) a novější verze, Azure SQL Database, Azure SQL Managed Instance a SQL database in Fabric tento vzorec podporují.
- Pro dotaz na tabulky Delta Lake použijte externí tabulku s
FILE_FORMAT = DeltaLakeFileFormat. SQL Server 2022 (16.x) a novější verze tento vzor podporují. - Pro export výsledků dotazů do souborů Parquet nebo CSV použijte
CREATE EXTERNAL TABLE AS SELECT. SQL Server 2022 (16.x) a novější verze a Azure SQL Managed Instance tento vzorec podporují.
Můžete také postupovat podle jednoho z těchto podrobných kurzů:
| Tutoriál | Description |
|---|---|
| Začínáme s PolyBase v SQL Serveru 2022 | Obsahuje OPENROWSET soubory Parquet a CSV, externí tabulky a navigaci ve složkách. |
| Virtualizovat soubor Parquet v úložišti objektů kompatibilním s S3 pomocí PolyBase | Kurz pro SQL Server 2022 (16.x) a novější verze |
| Virtualizace souboru CSV pomocí PolyBase | Kurz pro SQL Server 2022 (16.x) a novější verze |
| Virtualizace tabulky Delta pomocí PolyBase | Kurz pro SQL Server 2022 (16.x) a novější verze |
| Virtualizace dat pomocí Azure SQL Database (Preview) | Návod ke službě Azure SQL Database pro Parquet a CSV. |
| Virtualizace dat s využitím služby Azure SQL Managed Instance | Průvodce službou Azure SQL Managed Instance pro Parquet, CSV a CETAS |
| Virtualizace dat v SQL databázi ve Fabricu | Průvodce databází SQL v platformě Fabric pro soubory OneLake |
Připojení k jiné instanci SQL Serveru, službě Azure SQL Database nebo spravované instanci SQL
V SQL Serveru 2019 (15.x) a novějších verzích může PolyBase dotazovat tabulky v jiné instanci SQL Serveru, Azure SQL Database nebo Azure SQL Managed Instance bez použití propojených serverů.
Důležité
Konektor sqlserver:// není v SQL databázi ve Fabric podporován. Konektory PolyBase RDBMS používají ověřování SQL prostřednictvím CREATE DATABASE SCOPED CREDENTIAL a nepodporují ověřování přes Microsoft Entra ID, spravovanou identitu ani instanční ověřování. Vzhledem k tomu, že SQL databáze ve službě Fabric vyžaduje ověřování Microsoft Entra, nemůžete se k ní připojit pomocí PolyBase.
| Krok | Co dělat |
|---|---|
| 1. Instalace PolyBase | Instalace PolyBase ve Windows nebo instalace PolyBase v Linuxu |
| 2. Vytvoření přihlašovacích údajů |
CREATE DATABASE SCOPED CREDENTIAL s cílovým přihlášením |
| 3. Vytvoření externího zdroje dat | CREATE EXTERNAL DATA SOURCE ... WITH (LOCATION = 'sqlserver://<server>') |
| 4. Vytvoření externí tabulky | CREATE EXTERNAL TABLE ... WITH (LOCATION = '<db>.<schema>.<table>') |
| 5. Dotaz | SELECT * FROM <external_table> |
-
- Nainstalujte PolyBase na Windows nebo Linux pomocí Install PolyBase na Windows nebo Install PolyBase na Linux před nastavením přístupu k externím SQL datům.
-
- Vytvořte přihlašovací údaj s rozsahem databáze pro cílové přihlášení pomocí
CREATE DATABASE SCOPED CREDENTIAL, aby se modul mohl ověřit vůči vzdálenému serveru.
- Vytvořte přihlašovací údaj s rozsahem databáze pro cílové přihlášení pomocí
-
- Vytvořte externí zdroj dat pro vzdálený SQL Server pomocí
CREATE EXTERNAL DATA SOURCE ... WITH (LOCATION = 'sqlserver://<server>').
- Vytvořte externí zdroj dat pro vzdálený SQL Server pomocí
-
- Vytvořte externí tabulku pomocí
CREATE EXTERNAL TABLE ... WITH (LOCATION = '<db>.<schema>.<table>')jako reprezentace vzdálené tabulky.
- Vytvořte externí tabulku pomocí
-
- Dotazujte externí tabulku pomocí
SELECT * FROM <external_table>.
- Dotazujte externí tabulku pomocí
Návod
Konektor SQL Serveru (sqlserver://) funguje také pro Azure SQL Database a Azure SQL Managed Instance. Použijte stejné kroky a nastavte LOCATION na Azure SQL Database nebo Azure SQL Managed Instance endpoint (například sqlserver://myserver.database.windows.net).
Podrobný průvodce najdete v tématu Konfigurace PolyBase pro přístup k externím datům v SQL Serveru.
Připojení k Oracle, Teradata nebo MongoDB
SQL Server 2019 (15.x) a novější verze můžou dotazovat Oracle, Teradata, MongoDB a Cosmos DB prostřednictvím konektorů PolyBase ODBC.
| Zdroj dat | Guide | Požadavky |
|---|---|---|
| Oracle | Konfigurace PolyBase pro přístup k externím datům v Oracle | SQL Server 2019 (15.x) a novější verze, klientské ovladače Oracle |
| Teradata | Konfigurace PolyBase pro přístup k externím datům v Teradata | SQL Server 2019 (15.x) a novější verze, ovladač ODBC Teradata |
| MongoDB / Cosmos DB | Konfigurace PolyBase pro přístup k externím datům v MongoDB | SQL Server 2019 (15.x) a novější verze, ovladač MongoDB ODBC |
| Libovolný zdroj ODBC | Konfigurace PolyBase pro přístup k externím datům pomocí obecných typů ODBC | SQL Server 2019 (15.x) a novější verze (Windows) (Linux od SQL Serveru 2025 (17.x)) |
- Zdroje dat Oracle používají průvodce Konfigurace PolyBase pro přístup k externím datům v Oracle a vyžadují SQL Server 2019 (15.x) nebo novější a ovladače klienta Oracle.
- Zdroje dat Teradata používají Configure PolyBase pro přístup k externím datům v průvodci Teradata a vyžadují verze SQL Server 2019 (15.x) a pozdější a ovladač Teradata ODBC.
- Datové zdroje MongoDB nebo Cosmos DB používají Configure PolyBase pro přístup k externím datům v průvodci MongoDB a vyžadují verze SQL Server 2019 (15.x) a pozdější a ovladač MongoDB ODBC.
- U libovolného zdroje ODBC lze použít příručku Konfigurace PolyBase pro přístup k externím datům pomocí obecných typů ODBC a je vyžadován SQL Server 2019 (15.x) nebo novější ve Windows, případně SQL Server 2025 (17.x) nebo novější v Linuxu.
Připojení ke službě Azure Blob Storage nebo ADLS Gen2
| Platforma SQL | Možnosti ověřování | Guide |
|---|---|---|
| SQL Server 2022 (16.x) a novější verze | Token SAS, přístupový klíč, spravovaná identita (počínaje SQL Serverem 2025 (17.x)) | Konfigurace PolyBase pro přístup k externím datům ve službě Azure Blob Storage |
| SQL Server 2019 (15.x) | Přístupový klíč (přes konektor Hadoop) | Konfigurace PolyBase pro přístup k externím datům ve službě Azure Blob Storage |
| Azure SQL Database | Token SAS, spravovaná identita, průchod Microsoft Entra | Virtualizace dat pomocí Azure SQL Database (Preview) |
| Azure SQL Managed Instance | Token SAS, spravovaná identita | Virtualizace dat s využitím služby Azure SQL Managed Instance |
- SQL Server 2022 a pozdější verze podporují autentizaci Azure Blob Storage nebo ADLS Gen2 pomocí SAS tokenů, přístupových klíčů nebo spravované identity počínaje SQL Server 2025 (17.x). Další informace najdete v tématu Konfigurace PolyBase pro přístup k externím datům ve službě Azure Blob Storage.
- SQL Server 2019 podporuje Azure Blob Storage nebo ADLS Gen2 pomocí přístupového klíče přes Hadoop konektor. Další informace najdete v tématu Konfigurace PolyBase pro přístup k externím datům ve službě Azure Blob Storage.
- Azure SQL Database podporuje Azure Blob Storage nebo ADLS Gen2 pomocí SAS tokenů, Managed Identity nebo Microsoft Entra pass-through autentizace. Další informace najdete v tématu Virtualizace dat se službou Azure SQL Database (Preview).
- Azure SQL Managed Instance podporuje Azure Blob Storage nebo ADLS Gen2 pomocí SAS tokenů nebo Managed Identity. Další informace najdete v tématu Virtualizace dat se službou Azure SQL Managed Instance.
V SQL Serveru 2022 (16.x) se změnily předpony identifikátoru URI. Při migraci z SQL Serveru 2019 (15.x) nebo starších verzí:
-
Azure Blob Storage: Změna
wasb[s]://naabs:// -
ADLS Gen2: Změna
abfs[s]://naadls://
Další informace najdete v tématu Konfigurace PolyBase pro přístup k externím datům ve službě Azure Blob Storage.
Připojení k úložišti objektů kompatibilním s S3
SQL Server 2022 (16.x) a novější verze podporují úložiště kompatibilní s S3, například Amazon S3, MinIO a Ceph.
Další informace naleznete v tématu Konfigurace PolyBase pro přístup k externím datům v úložišti objektů kompatibilním s S3.
Export dat pomocí CREATE EXTERNAL TABLE AS SELECT (CETAS)
CETAS exportuje výsledky dotazů do externích souborů (Parquet nebo CSV) ve službě Azure Blob Storage, ADLS Gen2 nebo úložišti kompatibilním s S3.
| Platforma SQL | Podporováno | Formáty exportu | Poznámky |
|---|---|---|---|
| SQL Server 2022 (16.x) a novější verze. Export do ADLS Gen2 s CETAS vyžaduje verzi SQL Server 2022 CU5 nebo novější. | Ano | Parquet, CSV | Vyžaduje konfiguraci serveru: povolit export polybase. |
| Azure SQL Managed Instance | Ano | Parquet, CSV | Ve výchozím nastavení je zakázáno |
| Azure SQL Database | Ne | None | Není k dispozici |
| SQL databáze v prostředí Fabric | Ne | None | Není k dispozici |
- SQL Server 2022 a novější verze podporují CETAS a exportují soubory Parquet a CSV. Nastavení Konfigurace serveru: povolit export PolyBase je povinné. Export CETAS do ADLS Gen2 není dostupný v SQL Server 2022 verzích před CU5.
- Azure SQL Managed Instance podporuje CETAS a exportuje soubory Parquet a CSV. Doporučení Ve výchozím nastavení zakázáno popisuje výchozí stav.
- Azure SQL Database CETASu nepodporuje.
- SQL databáze ve Fabric CETAS nepodporuje.
Referenční informace k Transact-SQL najdete v tématu CREATE EXTERNAL TABLE AS SELECT (CETAS).
Příklady rychlých startů
Příklad 1: Ad hoc dotaz na soubor Parquet (OPENROWSET)
Není potřeba žádná externí tabulka. Funguje na SQL Serveru 2022 (16.x) a novějších verzích, Azure SQL Database, Azure SQL Managed Instance a SQL database ve službě Fabric.
SELECT TOP 10 *
FROM OPENROWSET (
BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*.parquet',
FORMAT = 'PARQUET'
) AS [result];
Příklad 2: Externí tabulka přes CSV ve službě Azure Blob Storage
Tento příklad funguje na všech SQL platformách, které podporují externí tabulky přes CSV soubory.
Krok 1: Vytvoření hlavního klíče databáze (DMK). Tento krok je povinný, protože přihlašovací údaje ukládají tajný klíč tokenu SAS. Tento krok však můžete přeskočit, pokud používáte Managed Identity nebo Microsoft Entra autentizaci.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';Krok 2: Vytvoření přihlašovacích údajů pomocí tokenu SAS Vynechte počáteční
?.CREATE DATABASE SCOPED CREDENTIAL MyStorageCred WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<your_SAS_token>'; -- omit the leading '?'Krok 3: Vytvoření externího zdroje dat
CREATE EXTERNAL DATA SOURCE MyAzureStorage WITH ( LOCATION = 'abs://mycontainer@mystorageaccount.blob.core.windows.net', CREDENTIAL = MyStorageCred );Krok 4: Vytvoření formátu souboru pro CSV.
CREATE EXTERNAL FILE FORMAT CsvFormat WITH ( FORMAT_TYPE = DELIMITEDTEXT, FORMAT_OPTIONS ( FIELD_TERMINATOR = ',', STRING_DELIMITER = '"', FIRST_ROW = 2 ) );Krok 5: Vytvoření externí tabulky
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 );Krok 6: Dotaz na externí tabulku
SELECT * FROM dbo.SalesExternal WHERE OrderDate >= '2025-01-01';
Příklad 3: Dotazování tabulky na jiném SQL Serveru
Tento příklad funguje na SQL Serveru 2019 (15.x) a novějších verzích.
Krok 1: Vytvoření hlavního klíče databáze (povinné, protože přihlašovací údaje ukládají heslo)
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';Krok 2: Vytvoření přihlašovacích údajů pro vzdálenou instanci SQL Serveru
CREATE DATABASE SCOPED CREDENTIAL RemoteSqlCred WITH IDENTITY = 'remote_user', SECRET = '<password>';Krok 3: Vytvoření externího zdroje dat
CREATE EXTERNAL DATA SOURCE RemoteSqlServer WITH ( LOCATION = 'sqlserver://remote-server.contoso.com', PUSHDOWN = ON, CREDENTIAL = RemoteSqlCred );Krok 4: Vytvoření externí tabulky (název tří částí v
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' );Krok 5: Dotazování napříč servery
SELECT c.CustomerName, s.Amount FROM dbo.RemoteCustomers AS c INNER JOIN dbo.LocalSales AS s ON c.CustomerId = s.CustomerId;
Příklad 4: Export výsledků do Parquet s CETAS
Funguje na SQL Serveru 2022 (16.x) a novějších verzích Azure SQL Managed Instance.
Krok 1: Povolení CETAS (pouze SQL Server)
EXECUTE sp_configure 'allow polybase export', 1; RECONFIGURE;Krok 2: Vytvoření přihlašovacích údajů a zdroje dat (opakované použití z předchozích příkladů)
Krok 3: Vytvoření formátu souboru pro export Parquet
CREATE EXTERNAL FILE FORMAT ParquetFormat WITH ( FORMAT_TYPE = PARQUET );Krok 4: Export výsledků dotazu
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';
Stavební bloky T-SQL pro PolyBase
Před implementací jakéhokoli scénáře porozumíte základním objektům T-SQL, které PolyBase používá a jak se vejdou dohromady:
Diagram znázorňující objekty T-SQL PolyBase a jejich relace od ověřování (hlavní klíč databáze, přihlašovací údaje) prostřednictvím zdrojů dat a formátů souborů k dotazování metod (externí tabulka, OPENROWSET, BULK INSERT, CETAS).
- Pro syntaxi externích datových zdrojů viz CREATE EXTERNAL DATA SOURCE.
- Pro syntaxi externích formátů souboru viz CREATE EXTERNAL FILE FORMAT.
- Pro syntaxi externí tabulky viz CREATE EXTERNAL TABLE.
- Pro ad hoc syntaxi přístupu k datům viz OPENROWSET.
- Pro syntaxi CETAS viz CREATE EXTERNAL TABLE AS SELECT (CETAS).
Úplnou referenční příručku Transact-SQL pro všechny objekty naleznete v PolyBase Transact-SQL reference.
Důležité
Zkontrolujte mapování datových typů pro formát externího souboru. Při vytváření externího formátu souboru nebo dotazování souborů pomocí OPENROWSET, PolyBase automaticky mapuje zdrojové datové typy (Parquet, CSV, Delta, Oracle, Teradata, MongoDB) na datové typy SQL Serveru. Neshodované typy můžou způsobit tiché zkrácení, ztrátu přesnosti nebo chyby dotazů. Například se položka Parquet DECIMAL(38,18) namapuje na DECIMAL(18,0). Než definujete sloupce externí tabulky nebo WITH klauzuli, projděte si tabulky mapování. Úplný odkaz naleznete v tématu Mapování typů pomocí PolyBase.
Kdy potřebujete CREATE MASTER KEY?
Hlavní klíč databáze (DMK) se vytvoří pomocí CREATE MASTER KEY syntaxe. DmK šifruje tajné kódy uložené v přihlašovacích údajích s vymezeným oborem databáze. Vyžaduje se jenom v případě, že přihlašovací údaje obsahují tajnou hodnotu, tj. při uložení hesla, tokenu nebo přístupového klíče.
Vyžaduje se DMK (přihlašovací údaje ukládají tajný kód):
Typ autentizace IDENTITYhodnotaMá tajemství DMK token SAS 'SHARED ACCESS SIGNATURE'Ano Povinné Přístupový klíč S3 'S3 ACCESS KEY'Ano Povinné Přihlášení SQL / základní ověřování '<username>'Ano Povinné Přístupový klíč účtu úložiště '<storage_account_name>'Ano Povinné - Přihlašovací karta SAS tokenu používá
IDENTITY = 'SHARED ACCESS SIGNATURE'a uchovává tajnou hodnotu, takže vyžaduje hlavní klíč databáze. - Přístupový klíč S3 používá
IDENTITY = 'S3 ACCESS KEY'a uchovává hodnotu tajemství, takže vyžaduje hlavní klíč databáze.- SQL přihlášení nebo základní autentizační přihlašovací údaje používají
IDENTITY = '<username>'a ukládají hodnotu tajemství, takže vyžaduje hlavní klíč databáze.
- SQL přihlášení nebo základní autentizační přihlašovací údaje používají
- Přístupový přístup k účtu úložiště používá
IDENTITY = '<storage_account_name>'a ukládá hodnotu tajemství, takže vyžaduje hlavní klíč databáze.
- Přihlašovací karta SAS tokenu používá
DmK se nevyžaduje (neukládá se žádný tajný kód):
Typ autentizace IDENTITYhodnotaMá tajemství DMK Spravovaná identita 'Managed Identity'Ne Nepovinné Microsoft Entra ID 'User Identity'nebo'Managed Identity'Ne Nepovinné - Přihlašovací údaje Managed Identity nepoužívají
IDENTITY = 'Managed Identity'ani neukládají žádné tajemství, takže nepotřebují hlavní klíč databáze. - Přihlašovací karta Microsoft Entra ID nepoužívá
IDENTITY = 'User Identity'aniIDENTITY = 'Managed Identity'neukládá žádné tajemství, takže nevyžaduje hlavní klíč databáze.
- Přihlašovací údaje Managed Identity nepoužívají
Návod
Pokud vaše CREATE DATABASE SCOPED CREDENTIAL prohlášení neobsahuje tajemství, DMK nepotřebujete. Spravovaná identita a ověřování Microsoft Entra ID delegují důvěryhodnost na platformu. Databáze neukládá hesla ani tokeny.
Příklady:
V tomto ukázkovém dotazu se vyžaduje DMK (přihlašovací údaje obsahují token SAS).
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL SasCred
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<your_SAS_token>';
V tomto ukázkovém dotazu není DMK vyžadován (spravovaná identita, bez tajemství).
CREATE DATABASE SCOPED CREDENTIAL ManagedIdentityCred
WITH IDENTITY = 'Managed Identity';
V tomto ukázkovém dotazu není DMK povinný (Microsoft Entra průchozí autentizace, bez tajemství).
CREATE DATABASE SCOPED CREDENTIAL EntraIdCred
WITH IDENTITY = 'User Identity';
Vzdálený přístup k datům pomocí OPENROWSET a externích tabulek
SQL Server nabízí tři různé přístupy k dotazování vzdálených dat. Správný přístup si můžete zvolit, když pochopíte rozdíly v syntaxi, ověřování a architektuře.
| Přístup | Syntaxe | Připojí se k | Autentizace | Služby PolyBase | Platforms |
|---|---|---|---|---|---|
| Dotazy OLE DB | OPENROWSET(provider, connection, query) |
Jakýkoli zdroj OLE DB prostřednictvím MSOLEDBSQL, SQLOLEDB nebo jiných poskytovatelů | Ověřování SQL, ověřování systému Windows, Microsoft Entra ID (MSOLEDBSQL) | Ne | SQL Server (všechny podporované verze) |
| Dotazy na soubory v SQL Server 2022 (16.x) a SQL Server 2019 (15.x) | OPENROWSET(BULK ...) |
Soubory na místním disku, síti nebo cloudu (Azure Blob, ADLS, S3, OneLake) | Token SAS, přístupový klíč, spravovaná identita, Microsoft Entra ID | Ano pro cloud 1; Ne pro lokální | SQL Server 2022 (16.x) a SQL Server 2019 (15.x) |
| Dotazy na soubory v SQL Server 2025 (17.x) a novějších verzích | OPENROWSET(BULK ...) |
Soubory na místním disku, síti nebo cloudu (Azure Blob, ADLS, S3, OneLake) | Token SAS, přístupový klíč, spravovaná identita, Microsoft Entra ID | Ne | SQL Server 2022 (16.x) a novější verze, Azure SQL Database, Azure SQL Managed Instance, SQL databáze v Microsoft Fabric |
| Konektory PolyBase |
CREATE EXTERNAL TABLE s CREATE EXTERNAL DATA SOURCE použitím sqlserver://, oracle://, teradata://, mongodb://, odbc:// |
Vzdálený SQL Server, Oracle, Teradata, MongoDB, zdroje ODBC | Pouze ověřování SQL | Ano | SQL Server 2019 (15.x) a novější verze (Windows); SQL Server 2025 (17.x) a novější verze (Linux) |
1 Pro přístup ke cloudovým souborům v SQL Server 2022 (16.x) musí být funkce PolyBase nainstalována.
- Dotazy OLE DB používají
OPENROWSET(provider, connection, query)pro připojení k libovolnému zdroji OLE DB prostřednictvím MSOLEDBSQL, SQLOLEDB nebo jiného zprostředkovatele ve všech podporovaných verzích SQL Serveru. Podporují SQL autentizaci, Windows authentication a Microsoft Entra ID s MSOLEDBSQL a nevyžadují instalaci služeb PolyBase. - Dotazy na soubory slouží
OPENROWSET(BULK ...)ke čtení souborů na lokálním disku, síťových sdílených prostorách nebo cloudových úložištích, jako je Azure Blob Storage, ADLS, S3 nebo OneLake, pomocí SAS tokenu, přístupového klíče, spravované identity nebo Microsoft Entra ID. Jsou podporovány pro lokální a síťové soubory ve verzích SQL Server 2005 a novějších, pro cloudové soubory v SQL Server 2022 (16.x) a pozdějších verzích, a v Azure SQL Database, Azure SQL Managed Instance a SQL databázích ve Fabric. Dotazy na soubory nevyžadují služby PolyBase pro lokální soubory ani pro cloudové soubory v SQL Server 2022 (16.x) a novějších verzích. - Konektory PolyBase používají
CREATE EXTERNAL TABLEsCREATE EXTERNAL DATA SOURCEa umístěnímoracle://,sqlserver://,teradata://,mongodb://neboodbc://k připojení ke vzdáleným zdrojům SQL Server, Oracle, Teradata, MongoDB nebo ODBC. Vyžadují SQL autentizaci a služby PolyBase ve verzích SQL Server 2019 (15.x) a novějších verzích na Windows a SQL Server 2025 (17.x) a novějších verzích na Linuxu. Další informace najdete v tématu CREATE EXTERNAL DATA SOURCE (Transact-SQL).
Kdy použít jednotlivé přístupy
Použijte OLE DB OPENROWSET pro:
- Používejte OLE DB
OPENROWSETpro rychlé, jednorázové ad hoc dotazy bez vytváření trvalých objektů. - Použijte OLE DB
OPENROWSETpro Microsoft Entra ID nebo autentizaci spravované identity přes MSOLEDBSQL. - Použijte OLE DB
OPENROWSET, abyste se vyhnuli závislostem na službách PolyBase. - Použijte OLE DB
OPENROWSETk připojení k jakémukoli datovému zdroji, který má poskytovatele OLE DB.
Soubor OPENROWSET(BULK) použijte pro:
- Používejte soubor
OPENROWSET(BULK ...)pro ad hoc průzkum souborů a objevování schémat. - Použijte soubor
OPENROWSET(BULK ...)pro rychlé transformace a náhledy, než se rozhodnete pro definici tabulky. - Použijte soubor
OPENROWSET(BULK ...)pro flexibilní inline transformace sloupců, jako je casting, filtrování a výpočty sloupců. - Používejte soubor
OPENROWSET(BULK ...)pro data, která se často nemění, a nepotřebují trvalá metadata.
Použijte konektory PolyBase s CREATE EXTERNAL TABLE pro:
- Používejte s konektory PolyBase
CREATE EXTERNAL TABLEtrvalé definice tabulek, které lze opakovaně používat a k nimž přistupuje více uživatelů nebo aplikací. - Používejte konektory PolyBase s
CREATE EXTERNAL TABLEpro produkční úlohy, které vyžadují statistiky a optimalizaci plánů dotazů. - Používejte konektory PolyBase s
CREATE EXTERNAL TABLEpro výpočty pushdown nad vzdálenými zdroji, jako jsou Oracle a SQL Server. - Používejte konektory PolyBase s
CREATE EXTERNAL TABLEpro sdílenou správu a zabezpečení; po vytvoření tabulky uživatelé potřebují pouze oprávněníSELECT. - Používejte konektory PolyBase s
CREATE EXTERNAL TABLE, pokud je u vzdáleného zdroje k dispozici ověřování SQL Serveru.
OPENROWSET (OLE DB) – ad hoc vzdálené dotazy (nevyžadují se žádné služby PolyBase)
Forma OPENROWSET OLE DB se připojuje ke vzdálenému zdroji dat prostřednictvím zprostředkovatele OLE DB, provede průchozí dotaz a vrátí výsledky jako sada výsledků. Jedná se o jednorázovou ad hoc alternativu k propojenému serveru. Nevytváří se žádná trvalá metadata. Tato syntaxe nevyžaduje služby PolyBase a nepodporuje cloudové soubory ani externí zdroje dat.
Tento ukázkový dotaz se připojí ke vzdálenému SQL Serveru přes OLE DB (nikoli PolyBase).
SELECT *
FROM OPENROWSET (
'MSOLEDBSQL',
'Server=remote-server;Database=AdventureWorks;Trusted_Connection=yes;',
'SELECT TOP 10 * FROM AdventureWorks.Sales.SalesOrderHeader'
);
OPENROWSET(BULK) – dotazy založené na souborech (PolyBase)
Formulář BULKOPENROWSET přímo čte data ze souborů. Na SQL Serveru 2019 (15.x) a starších verzích čte z místních nebo UNC cest k souborům a vyžaduje formátový soubor. V SQL Serveru 2022 (16.x) a novějších verzích můžete číst z cloudového úložiště pomocí DATA_SOURCE parametrů a FORMAT parametrů. Tento přístup je integrovaná verze PolyBase používaná pro virtualizaci dat.
V kontextu PolyBase a virtualizace dat, pokud tato příručka odkazuje na OPENROWSET, má na mysli syntaxe OPENROWSET(BULK ...) s klauzulí FORMAT pro dotazování externích souborů.
Příklady:
Tento ukázkový dotaz načte soubor Parquet ze služby Azure Blob Storage (SQL Server 2022 a novější verze).
SELECT TOP 10 *
FROM OPENROWSET (
BULK 'data/sales/*.parquet',
DATA_SOURCE = 'MyAzureStorage',
FORMAT = 'PARQUET'
) AS [result];
Tento příklad dotazu načte soubor Parquet pomocí vložené definované cesty (Azure SQL Database, Azure SQL Managed Instance).
SELECT TOP 10 *
FROM OPENROWSET (
BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*.parquet',
FORMAT = 'PARQUET'
) AS [result];
Kdy použít OPENROWSET vs. externí tabulky
Obě OPENROWSET(BULK ...) i externí tabulky umožňují dotazovat se na externí data pomocí T-SQL, ale jsou navržené pro různé případy použití. Následující tabulka shrnuje klíčové rozdíly, které vám pomůžou rozhodnout, který přístup odpovídá vašemu scénáři.
| Schopnost | OPENROWSET(BULK ...) |
Externí tabulka |
|---|---|---|
| Purpose | Jednorázové průzkumy a jednorázové dotazy | Trvalá a opakovaně použitelná definice tabulky |
| Metadata uložená v databázi | Ne. Po spuštění dotazu se nic neuloží. | Ano. Definice tabulky, zdroj dat a formát souboru se ukládají jako databázové objekty. |
| Definice schématu | Automaticky odvozeno ze souboru (Parquet) nebo zadaného přímo s klauzulí WITH. |
Explicitně definované v CREATE EXTERNAL TABLE příkazu |
| Permissions | Vyžaduje ADMINISTER BULK OPERATIONS nebo ADMINISTER DATABASE BULK OPERATIONS |
Po vytvoření stačí standardní SELECT oprávnění k tabulce. |
| Počítané sloupce | Ano. Přidání výrazů a počítaných sloupců v SELECT seznamu; funkce metadat, jako jsou filename() a filepath() jsou k dispozici pouze zde. |
Ne. Pevný seznam sloupců; provádí transformace v zobrazení nebo v dotazu, který čte externí tabulku. |
| Statistika | Azure SQL Managed Instance: ruční statistiky v jednotlivých sloupcích přes sys.sp_create_openrowset_statistics. Viz ruční statistika OPENROWSET. SQL Server 2022 (16.x) a novější verze, Azure SQL Database, databáze SQL v prostředí Fabric: automatické vytváření statistik pro predikáty. Manuální OPENROWSET statistiky nejsou na SQL Server podporovány. |
Úplná CREATE STATISTICS podpora na všech platformách a automatické vytváření v SQL Serveru 2022 (16.x) a novějších verzích. Viz Vytvoření ručních statistik externí tabulky. |
| Zásobník | Omezená podpora. Stroj může propagovat filtry na prohledávání souborů, ale nedochází k propagaci na vzdálené zdroje RDBMS. | Ano. Podporuje výpočty pushdownu pro konektory RDBMS (SQL Server, Oracle, Teradata, MongoDB). |
| Nejlepší pro | Zkoumání dat, zjišťování schématu, dotazy na vytváření prototypů, jednorázové načítání dat, flexibilní transformace | Produkční úlohy, opakované dotazy, sdílený přístup mezi uživateli, řídicími panely a generování sestav |
-
OPENROWSET(BULK ...)je nejlepší pro ad hoc průzkum a jednorázové dotazy, zatímco externí tabulka je lepší pro trvalé, znovupoužitelné definice tabulek. -
OPENROWSET(BULK ...)po spuštění dotazu neukládá metadata do databáze, zatímco externí tabulka ukládá definici tabulky, zdroj dat a formát souboru jako databázové objekty. -
OPENROWSET(BULK ...)automaticky odvozuje schéma ze souboru Parquet nebo schéma definuje v souladu s klauzulíWITH, zatímco externí tabulka definuje schéma explicitně veCREATE EXTERNAL TABLEvýroku. -
OPENROWSET(BULK ...)vyžadujeADMINISTER BULK OPERATIONSneboADMINISTER DATABASE BULK OPERATIONS, zatímco externí tabulku mohou po jejím vytvoření dotazovat uživatelé, kteří potřebují pouze standardní oprávněníSELECT. -
OPENROWSET(BULK ...)Podporuje vypočítáné sloupce v dotazovacích a metadatových funkcích jakofilename()a ,filepath()zatímco externí tabulka má pevný seznam sloupců a vyžaduje transformace v pohledu nebo v dotazu, který čte externí tabulku. -
OPENROWSET(BULK ...)má omezenou podporu statistik: Azure SQL Managed Instance může pro statistiky jednoho sloupce používatsys.sp_create_openrowset_statistics, ale SQL Server 2022 (16.x) a novější verze, Azure SQL Database a SQL database ve Fabric automaticky vytvářejí statistiky pro predikáty. ManuálníOPENROWSETstatistiky nejsou podporovány na SQL Server, Azure SQL Database a SQL databázích ve Fabric. Externí tabulka podporuje plnouCREATE STATISTICSfunkci na všech platformách plus automatické statistiky v SQL Server 2022 (16.x) a novějších verzích, Azure SQL Database a SQL databázi ve Fabric. Viz ručně vytvořené statistiky pro OPENROWSET a Vytvoření ručně vytvořených statistik pro externí tabulku. -
OPENROWSET(BULK ...)má omezené možnosti přenesení operací do zdroje a nepodporuje přenesení operací do vzdálených zdrojů RDBMS, zatímco externí tabulka podporuje přenesení výpočtů pro konektory RDBMS. -
OPENROWSET(BULK ...)je nejlepší pro průzkum dat, objevování schémat, prototypování, jednorázové načítání a flexibilní transformace, zatímco externí tabulka je nejlepší pro produkční pracovní zátěže, opakované dotazy, sdílený přístup, dashboardy a reportování.
Použití OPENROWSET v případě, že potřebujete flexibilitu
Použijte OPENROWSET k prozkoumání souboru, testování různých schémat nebo přidávání počítaných sloupců a transformací bez vytváření trvalých objektů. Můžete například extrahovat cestu k souboru jako sloupec, přetypovat datové typy vložené nebo filtrovat vypočítané výrazy v jednom dotazu.
Tento ukázkový dotaz zahrnuje počítané sloupce a transformace:
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';
Návod
Funkce filepath() a filename() jsou dostupné ve službách Azure SQL Database, Azure SQL Managed Instance a v SQL Server 2022 (16.x) a novějších verzích. Umožňují filtrovat části cesty k souboru (eliminace oddílu) a poskytnout název zdrojového souboru jako sloupec, což není přímo možné u externích tabulek.
Použití externích tabulek v případě, že potřebujete trvalost a zásady správného řízení
Externí tabulky použijte, když více uživatelů nebo aplikací potřebuje opakovaně dotazovat stejná externí data. Schéma, zdroj dat a přihlašovací údaje definujete jednou a uložíte je do databáze. Uživatelé potřebují SELECT oprávnění pouze k tabulce.
Externí tabulky také podporují statistiky, které optimalizátor dotazů používá k vytváření lepších plánů provádění. Statistiky můžete vytvořit ručně nebo nechat modul vytvořit automaticky (SQL Server 2022 (16.x) a novější verze).
Tento ukázkový dotaz vytvoří statistiky pro externí tabulku pro lepší plány dotazů.
CREATE STATISTICS Stats_OrderDate
ON dbo.SalesExternal(OrderDate)
WITH FULLSCAN;
Další informace o statistikách pro oba přístupy naleznete v tématu Aspekty výkonu PolyBase – Statistika.
BULK INSERT vs. OPENROWSET(BULK): Který z nich mám použít?
Oba BULK INSERT a OPENROWSET(BULK ...) importují data ze souborů do SQL Serveru pomocí stejného základního modulu pro hromadné načítání. Liší se ale v syntaxi, flexibilitě a tom, co můžete s výsledky dělat. Následující tabulka shrnuje klíčové rozdíly:
Poznámka:
Samostatné příkazy BULK INSERT nejsou v SQL databázi ve Fabric podporovány. Pro vstup dat použijte INSERT ... SELECT proti OPENROWSET(BULK ...) OneLake.
| Schopnost | BULK INSERT |
OPENROWSET(BULK ...) |
|---|---|---|
| Základní účel | Načte data ze souboru přímo do cílové tabulky. | Vrátí sadu řádků, kterou použijete v SELECT nebo INSERT ... SELECT příkazu. |
| Vzor použití | Samostatný příkaz: BULK INSERT <table> FROM '<file>' |
Musí se použít v dotazu: SELECT * FROM OPENROWSET(BULK ...) nebo INSERT INTO <table> SELECT * FROM OPENROWSET(BULK ...) |
| Vyžaduje cílovou tabulku? | Ano. Vždy zapisuje přímo do tabulky. | Ne.
SELECT Můžete z něj bez vložení kamkoli nebo vložení do libovolné tabulky nebo dočasné tabulky. |
| Transformace sloupců během načítání | Omezená podpora. Tok dat proudí ze souboru do tabulky tak, jak jsou (mapování řízené souborem formátu nebo pořadím sloupců) | Úplná podpora. V okolí můžete přidávat výrazy, CASTWHERE filtry, JOIN další tabulky a počítané sloupce.SELECT |
| Nápovědy k tabulce | Tato WITH klauzule zahrnuje podporu pro BATCHSIZE, , CHECK_CONSTRAINTSFIRE_TRIGGERSKEEPIDENTITY, KEEPNULLS, , , TABLOCKa další |
Podporuje hinty tabulek prostřednictvím syntaxe INSERT ... SELECT * FROM OPENROWSET(BULK ...) WITH (TABLOCK, IGNORE_CONSTRAINTS, ...). |
| Import jedné hodnoty velkého objektu (LOB) | Nepodporováno | Ano. Podporuje SINGLE_BLOB, SINGLE_CLOB a SINGLE_NCLOB import celého souboru jako jednu hodnotu varbinary(max), varchar(max), nebo nvarchar(max) |
| Formátování souborů | Ano. Podporováno prostřednictvím (XML a ne-XML) | Ano. Podporované (XML a jiné než XML) |
| Přístup k souborům v cloudu |
DATA_SOURCEpodporuje Azure Blob Storage v SQL Server 2017 (14.x) a novějších verzích, Azure SQL Database a Azure SQL Managed Instance. SQL Server 2019 CU11 a pozdější aktualizace také podporují ADLS Gen2. Úložiště kompatibilní se S3 není podporováno. |
DATA_SOURCEpodporuje Azure Blob Storage v SQL Server 2017 (14.x) a novějších verzích, ADLS Gen2 v SQL Server 2019 CU11 a novějších verzích a S3-kompatibilní úložiště v SQL Server 2022 (16.x) a novějších verzích. Azure SQL Database a Azure SQL Managed Instance podporují Azure Blob Storage a ADLS Gen2. SQL databáze ve Fabric podporuje OneLake a externí úložiště prostřednictvím zkratek OneLake. |
| Soubory Parquet nebo Delta | Nepodporováno. Pouze csv nebo text s oddělovači | Ano. SQL Server 2022 (16.x) a novější verze, Azure SQL Managed Instance a Azure SQL Database podporují FORMAT = 'PARQUET' a FORMAT = 'PARQUET'; databáze SQL ve Fabric podporuje DELTA, ale ne FORMAT = 'DELTA'. Další informace naleznete v tématu OPENROWSET BULK (Transact-SQL). |
| Požadovaná oprávnění |
ADMINISTER BULK OPERATIONS nebo ADMINISTER DATABASE BULK OPERATIONS, plus INSERT v cílové tabulce |
ADMINISTER BULK OPERATIONS nebo ADMINISTER DATABASE BULK OPERATIONS |
| Minimální protokolování | Ano. Podporováno v rámci jednoduchých nebo hromadně protokolovaných modelů obnovení s využitím TABLOCK |
Ano. Podporováno při použití s INSERT ... SELECTTABLOCK |
-
BULK INSERTNačítá data ze souboru přímo do cílové tabulky aOPENROWSET(BULK ...)vrací řádkovou sadu, kterou můžete použít v příkazuSELECTORINSERT ... SELECT. -
BULK INSERTje samostatný příkaz, zatímcoOPENROWSET(BULK ...)musí být použit uvnitř dotazu, napříkladSELECT * FROM OPENROWSET(BULK ...)neboINSERT INTO <table> SELECT * FROM OPENROWSET(BULK ...). -
BULK INSERTvždy zapisuje přímo do cílové tabulky, zatímcoOPENROWSET(BULK ...)můžeSELECTze souboru, aniž by cokoli vkládal do jakékoli tabulky ani do dočasné tabulky. -
BULK INSERTmá omezenou podporu pro transformace sloupců, protože data proudí ze souboru do tabulky as-is, přičemž mapování je řízeno formátovým souborem nebo pořadím sloupců.OPENROWSET(BULK ...)podporuje výrazy,CAST, filtryWHERE,JOINa vypočítané sloupce v rámci nadřazenéhoSELECT. -
BULK INSERTpoužívá klauzuliWITHproBATCHSIZE,CHECK_CONSTRAINTS,FIRE_TRIGGERS,KEEPIDENTITY,KEEPNULLS, ,TABLOCK, a další nápovědy.OPENROWSET(BULK ...)podporuje hinty tabulek prostřednictvímINSERT ... SELECT * FROM OPENROWSET(BULK ...) WITH (TABLOCK, IGNORE_CONSTRAINTS, ...). -
BULK INSERTnepodporuje import velkých objektů s jednou hodnotou.OPENROWSET(BULK ...)podporujeSINGLE_BLOB,SINGLE_CLOBaSINGLE_NCLOBpro import celého souboru jako jediné hodnoty varbinary(max), varchar(max) nebo nvarchar(max) v uvedeném pořadí. -
BULK INSERTiOPENROWSET(BULK ...)podporují soubory ve formátu XML i jiném než XML. - Pro přístup ke cloudovým souborům s
BULK INSERT, parametrDATA_SOURCEpodporuje Azure Blob Storage v SQL Server 2017 (14.x) a novějších verzích, Azure SQL Database a Azure SQL Managed Instance. Aktualizace SQL Server 2019 CU11 a pozdější také podporují ADLS Gen2, aleBULK INSERTnepodporují úložiště kompatibilní se S3. ProOPENROWSET(BULK ...),DATA_SOURCEpodporuje Azure Blob Storage v SQL Server 2017 (14.x) a novějších verzích, ADLS Gen2 v SQL Server 2019 CU11 a novějších verzích a S3-kompatibilní úložiště v SQL Server 2022 (16.x) a novějších verzích. Azure SQL Database a Azure SQL Managed Instance podporují Azure Blob Storage a ADLS Gen2. SQL databáze ve Fabric podporuje OneLake a externí úložiště prostřednictvím zkratek OneLake. -
BULK INSERTnepodporuje soubory Parquet ani Delta a podporuje pouze CSV nebo oddělený text.OPENROWSET(BULK ...)podporujeFORMAT = 'PARQUET'aFORMAT = 'DELTA'v SQL Server 2022 (16.x) a novějších verzích, Azure SQL Database a Azure SQL Managed Instance. SQL databáze ve Fabric podporujeFORMAT = 'PARQUET', ale nepodporujeFORMAT = 'DELTA'. Další informace naleznete v tématu OPENROWSET BULK (Transact-SQL). -
BULK INSERTvyžadujeADMINISTER BULK OPERATIONSneboADMINISTER DATABASE BULK OPERATIONSplus oprávněníINSERTk cílové tabulce, zatímcoOPENROWSET(BULK ...)vyžadujeADMINISTER BULK OPERATIONSneboADMINISTER DATABASE BULK OPERATIONS. -
BULK INSERTPodporuje minimální logování v rámci jednoduchého nebo hromadně logovaného modelu obnovy sTABLOCK.OPENROWSET(BULK ...)podporuje minimální logování, když se používá sINSERT ... SELECTaTABLOCK.
Kdy zvolit BULK INSERT
Použijte BULK INSERT, když máte při importu přímé načtení souboru do tabulky a nemusíte během importu transformovat, filtrovat ani spojovat data. Používá jednodušší syntaxi pro csv nebo jiné soubory s oddělovači:
Tento příklad dotazu načte soubor CSV ze služby Azure Blob Storage přímo do tabulky.
BULK INSERT Sales.Invoices
FROM 'invoices/inv-2025-01.csv'
WITH (
DATA_SOURCE = 'MyAzureBlobStorage',
FORMAT = 'CSV',
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);
Tento příklad dotazu načte místní soubor s formátovým souborem pro mapování sloupců.
BULK INSERT dbo.Products
FROM 'C:\Data\products.csv'
WITH (
FORMATFILE = 'C:\Data\products.fmt',
FIRSTROW = 2,
TABLOCK
);
Kdy zvolit OPENROWSET(BULK)
Použijte OPENROWSET(BULK ...) , když potřebujete jednu nebo více následujících podmínek:
- Použijte
OPENROWSET(BULK ...)k dotazování nebo náhledu dat souborů bez vytvoření tabulky. - Použijte
OPENROWSET(BULK ...)k transformaci, filtrování nebo spojení dat během importu. - Použijte
OPENROWSET(BULK ...)k načítání souborů Parquet nebo Delta, protožeBULK INSERTtyto formáty nepodporuje. - Použijte
OPENROWSET(BULK ...)k importu celého souboru jako jedné hodnoty LOB sSINGLE_BLOB,SINGLE_CLOB, neboSINGLE_NCLOB.
Tento příklad dotazu zobrazí náhled souboru CSV ze služby Azure Blob Storage bez vložení dat kamkoli.
SELECT TOP 10 *
FROM OPENROWSET (
BULK 'invoices/inv-2025-01.csv',
DATA_SOURCE = 'MyAzureBlobStorage',
FORMAT = 'CSV',
FIRSTROW = 2,
FIELDTERMINATOR = ','
) AS src;
Tento ukázkový dotaz vloží data s transformací a filtrováním.
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;
Tento příklad dotazu načte soubor Parquet (to není možné provést s BULK INSERT).
INSERT INTO Sales.Invoices
SELECT *
FROM OPENROWSET (
BULK 'data/invoices/*.parquet',
DATA_SOURCE = 'MyAzureStorage',
FORMAT = 'PARQUET') AS src;
Tento příklad dotazu naimportuje celý soubor XML jako jednu hodnotu varbinary(max).
INSERT INTO dbo.XmlDocuments (DocContent)
SELECT BulkColumn
FROM OPENROWSET (
BULK 'C:\Data\catalog.xml',
SINGLE_BLOB
) AS x;
Návod
Jedním z přístupů je začít s OPENROWSET(BULK ...) v SELECT, když prozkoumáte a ověříte data souborů, a pak přejít na BULK INSERT pro konečné produkční zatížení, jestliže nejsou potřeba transformace. Pokud potřebujete podporu pro Parquet a/nebo Delta nebo vložené filtrování, zůstaňte u OPENROWSET.
Další informace najdete v následujících souvisejících příručkách:
- Článek Použití BULK INSERT nebo OPENROWSET(BULK...) k importu dat do SQL Serveru poskytuje podrobný srovnávací návod s bezpečnostními aspekty.
- Článek Hromadný import a export dat (SQL Server) poskytuje přehled všech metod hromadného přesunu dat, včetně bcp,
BULK INSERT, aOPENROWSET. - Článek BULK INSERT (Transact-SQL) poskytuje kompletní T-SQL referenci pro
BULK INSERT. - Článek OPENROWSET BULK (Transact-SQL) poskytuje kompletní T-SQL referenci pro
OPENROWSET(BULK ...). - Článek Příklady hromadného přístupu k datům v Azure Blob Storage poskytuje příklady vedle sebe, které využívají obě metody s Azure Storage.
- Článek Bulk import velkých objektových dat pomocí OPENROWSET Bulk Rowset Provider (SQL Server) poskytuje
SINGLE_BLOB,SINGLE_CLOB, aSINGLE_NCLOBpříklady. - Článek o použití formátovaného souboru pro hromadný import dat (SQL Server) vysvětluje použití formátovacích souborů oběma metodami.
- Pro rady ohledně zachování nullů nebo aplikace výchozích hodnot při hromadném importu viz Uchování nul nebo výchozích hodnot při hromadném importu (SQL Server).
- Pro návod k zachování identitních hodnot při hromadném importu viz Zachování identitních hodnot při hromadném importu dat (SQL Server).
Užitečné funkce metadat
Když dotazujete externí soubory pomocí OPENROWSET nebo externích tabulek, použijte vestavěné funkce a postupy k inspekci metadat souborů, objevování schémat a implementaci dotazů s vědomím oddílů.
filepath() a název_souboru()
filepath() Funkce filename() vrací části cesty k souboru nebo název souboru pro každý řádek v sadě výsledků. Jsou užitečné zejména pro:
Odstranění oddílu: Filtrujte segmenty složek (například oddíly roku/měsíce/dne), aby modul místo prohledávání všeho četl pouze odpovídající soubory.
Zveřejnění zdrojových metadat: Do výsledků dotazu zahrňte název nebo cestu původního souboru jako sloupec, což je užitečné pro auditování nebo ladění.
| Funkce | Návraty | Příklad |
|---|---|---|
filename() |
Název souboru (včetně přípony) zdrojového souboru pro každý řádek | sales_2025_01.parquet |
filepath(N) |
N-tý segment složky ze zástupného znaku (*) v BULK cestě, kde N začíná na 1 |
Pro cestu sales/2025/01/*.parquet, filepath(1) vrátí 2025, filepath(2) vrátí 01 |
Platí pro: Azure SQL Database, Azure SQL Managed Instance, SQL Server 2022 (16.x) a novější verze, SQL databáze ve Fabricu.
Tento ukázkový dotaz používá filepath() k odstranění oddílů a filename() k identifikaci zdrojových souborů. Čte jenom soubory ve /2025/ složce a jen čte soubory v podsložce /06/ .
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';
Návod
Místo poddotazů nebo CTE umístěte filepath() filtry do WHERE klauzule. Pokud je filtr v WHERE klauzuli, modul může provést odstranění oddílů na úrovni prohledávání souborů, což výrazně snižuje vstupně-výstupní operace.
sp_describe_first_result_set – zjištění typů sloupců OPENROWSET
Při použití OPENROWSET se soubory Parquet modul odvodí datové typy sloupců automaticky (odvozování schématu). Odvozené typy můžou být větší, než je potřeba. Například sloupce znaků se často odvozují jako varchar(8000), protože metadata Parquet neobsahují maximální délku. Tato volba může snížit výkon a spotřebovat více paměti.
Slouží sp_describe_first_result_set ke kontrole odvozeného schématu před dokončením dotazu. Jakmile se zobrazí odvozené typy, zadejte v klauzuli užší typy WITH pro zlepšení výkonu.
Krok 1: Zkontrolujte odvozené schéma.
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';Výstup zobrazuje název každého sloupce, odvozený datový typ, maximální délku, přesnost a měřítko. Pokud vidíte varchar(8000), kde by stačil varchar(100), nahraďte jej.
Krok 2: Pro lepší výkon použijte explicitní typy.
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;
Odvození schématu funguje jenom se soubory Parquet. U souborů CSV vždy zadejte definice sloupců buď v WITH klauzuli (for OPENROWSET), nebo v CREATE EXTERNAL TABLE příkazu.
sp_describe_first_result_set je obecná procedura pro SQL Server, Azure SQL Database, Azure SQL Managed Instance a databázi SQL ve Fabric, ale je obzvlášť užitečná pro dotazy OPENROWSET. Pro více informací viz sp_describe_first_result_set.
Výkon, řešení potíží a osvědčené postupy
Po implementaci virtualizace dat využijte tyto příručky k optimalizaci výkonu, diagnostice problémů a zajištění provozní připravenosti:
| Plocha | Článek | Podrobnosti |
|---|---|---|
| Výkon PolyBase | Aspekty výkonu v PolyBase pro SQL Server | Statistika, zasouvání, paralelismus a správa paměti |
| Výpočet posunu dolů | Posun výpočtů v PolyBase | Určuje, které operace se odesílají do vzdáleného zdroje. |
| Jak zjistit, jestli došlo k pushdownu | Jak zjistit, jestli došlo k externímu prosazení | Plány dotazů a zobrazení dynamické správy |
| Troubleshooting | Sledování a řešení potíží s PolyBase | Běžné chyby a jejich řešení |
| Připojení protokolu Kerberos | Odstraňování problémů s připojením PolyBase Kerberos | |
| Nejčastější dotazy | Nejčastější dotazy k PolyBase | |
| Chyby a řešení | chyby PolyBase a možná řešení |