Sdílet prostřednictvím


Transact-SQL funkce podporované v Azure Synapse SQL

Azure Synapse SQL je analytická služba pro velké objemy dat, která umožňuje dotazovat a analyzovat data pomocí jazyka T-SQL. Pro analýzu dat můžete použít standardní dialekt kompatibilní s ANSI jazyka SQL, který se používá na SQL Serveru a azure SQL Database.

Transact-SQL jazyk se používá v bezserverovém fondu SQL a vyhrazený model může odkazovat na různé objekty a má určité rozdíly v sadě podporovaných funkcí. Na této stránce najdete základní Transact-SQL rozdíly mezi modely spotřeby Synapse SQL.

Databázové objekty

Modely consumption v Synapse SQL umožňují používat různé databázové objekty. Porovnání podporovaných typů objektů je znázorněno v následující tabulce:

Object Dedicated Serverless
Tables Yes Ne, tabulky v databázi nejsou podporované. Serverless SQL pool může dotazovat pouze externí tabulky, které odkazují na data uložená ve službě Azure Data Lake Storage nebo Dataverse.
Views Yes. Zobrazení můžou používat elementy dotazovacího jazyka , které jsou k dispozici ve vyhrazeném modelu. Ano, můžete vytvářet zobrazení přes externí tabulky, dotazy pomocí funkce OPENROWSET a dalších zobrazení. Zobrazení můžou používat elementy dotazovacího jazyka , které jsou k dispozici v bezserverovém modelu.
Schemas Yes Ano, schémata jsou podporovaná. Pomocí schémat můžete izolovat různé tenanty a umístit jejich tabulky do schémat.
Dočasné tabulky Yes Dočasné tabulky se můžou použít jenom k uložení některých informací ze systémových zobrazení, literálů nebo jiných dočasných tabulek. Podporuje se také funkce UPDATE/DELETE v dočasné tabulce. Dočasné tabulky můžete spojit se systémovými zobrazeními. Data z externí tabulky nelze vybrat, pokud je chcete vložit do dočasné tabulky, nebo připojit dočasnou tabulku s externí tabulkou – tyto operace selžou, protože externí data a dočasné tabulky nelze ve stejném dotazu kombinovat.
Uživatelem definované procedury Yes Ano, uložené procedury lze umístit do jakékoli uživatelské databáze (ne master databáze). Procedury můžou jenom číst externí data a používat elementy dotazovacího jazyka , které jsou dostupné v bezserverovém fondu.
Uživatelem definované funkce Yes Ano, podporují se jenom vložené funkce hodnotné tabulkou. Skalární uživatelem definované funkce nejsou podporovány.
Triggers No Ne, bezserverové fondy SQL neumožňují změnu dat, takže triggery nemůžou reagovat na změny dat.
externí tabulky Yes. Viz podporované formáty dat. Ano, externí tabulky jsou k dispozici a lze je použít ke čtení dat ze služby Azure Data Lake Storage nebo Dataverse. Podívejte se na podporované formáty dat.
Ukládání dotazů do mezipaměti Ano, více formulářů (ukládání do mezipaměti založené na SSD, ukládání do paměti, ukládání do mezipaměti sady výsledků). Kromě toho se podporuje materializované zobrazení. Ne, ukládají se do mezipaměti jenom statistiky souborů.
Ukládání sady výsledků do mezipaměti Yes Ne, výsledky dotazu se neukládají do mezipaměti. Do mezipaměti se ukládají pouze statistiky souborů.
Materializovaná zobrazení Yes Ne, materializovaná zobrazení nejsou podporována v bezserverových fondech SQL.
Proměnné tabulky Ne, používejte dočasné tabulky. Ne, proměnné tabulky nejsou podporovány.
Distribuce tabulek Yes Ne, distribuce tabulek nejsou podporovány.
Indexy tabulek Yes Ne, indexy se nepodporují.
Dělení tabulek Yes. Externí tabulky nepodporují dělení. Soubory můžete rozdělit pomocí struktury složek Hive-partition a vytvořit dělené tabulky ve Sparku. Rozdělení Sparku bude synchronizováno s fondem bez serverů. Pokud Spark nepoužíváte, můžete rozdělit soubory do struktury složek a vytvořit dělené zobrazení ve struktuře oddílů složek, ale externí tabulky nelze vytvořit v dělených složkách.
Statistics Yes Ano, statistiky se vytvářejí u externích souborů.
Správa úloh, třídy prostředků a řízení souběžnosti Ano, podívejte se na správu úloh, třídy prostředků a řízení souběžnosti. Ne, nemůžete spravovat prostředky, které jsou přiřazeny k dotazům. Bezserverový fond SQL automaticky spravuje prostředky.
Řízení nákladů Ano, pomocí akcí škálování nahoru a dolů. Ano, pomocí webu Azure Portal nebo postupu T-SQL můžete omezit denní, týdenní nebo měsíční využití bezserverového fondu.

Dotazovací jazyk

Dotazovací jazyky používané v Synapse SQL můžou mít různé podporované funkce v závislosti na modelu spotřeby. Následující tabulka popisuje nejdůležitější rozdíly dotazovacího jazyka v Transact-SQL dialektech:

Statement Dedicated Serverless
Příkaz SELECT Yes. SELECT příkaz je podporovaný, ale některé klauzule Transact-SQL dotazů, jako jsou FOR XML/FOR JSON, MATCH, OFFSET/FETCH, se nepodporují. Ano, SELECT příkaz je podporován, ale některé Transact-SQL klauzule dotazu, jako FOR XML, MATCH, PREDICT, GROUPING SETS a nápověda dotazu, nejsou podporovány.
Příkaz INSERT Yes No. Nahrajte nová data do Data Lake pomocí Sparku nebo jiných nástrojů. Azure Cosmos DB můžete použít s analytickým úložištěm pro vysoce transakční úlohy. Pomocí CETAS můžete vytvořit externí tabulku a vložit data.
Příkaz UPDATE Yes Ne, aktualizujte data Parquet/CSV pomocí Sparku a změny budou automaticky dostupné v bezserverovém fondu. Azure Cosmos DB můžete použít s analytickým úložištěm pro vysoce transakční úlohy.
Příkaz DELETE Yes Ne, odstraňte data Parquet/CSV pomocí Sparku a změny budou automaticky dostupné v bezserverovém fondu. Azure Cosmos DB můžete použít s analytickým úložištěm pro vysoce transakční úlohy.
Příkaz MERGE Ano (Preview) Ne, použijte Spark ke sloučení dat Parquet/CSV a změny budou automaticky dostupné v serverless poolu.
Příkaz CTAS Yes Ne, příkaz CREATE TABLE AS SELECT není podporován v bezserverovém fondu SQL.
Příkaz CETAS Ano, můžete provést počáteční načtení do externí tabulky pomocí CETAS. Ano, můžete provést počáteční načtení do externí tabulky pomocí CETAS. CETAS podporuje formáty výstupu Parquet a CSV.
Transactions Yes Ano, transakce platí pouze pro objekty meta-data.
Labels Yes Ne, popisky nejsou podporovány v bezserverových fondech SQL.
Načtení dat Yes. Upřednostňovaným nástrojem je příkaz COPY , ale systém podporuje pro načítání dat jak bulk load (BCP), tak CETAS . Ne, nemůžete načíst data do bezserverového fondu SQL, protože data jsou uložená v externím úložišti. Data můžete zpočátku načíst do externí tabulky pomocí příkazu CETAS.
Export dat Yes. Pomocí CETAS. Yes. Data z externího úložiště (Azure Data Lake, Dataverse, Azure Cosmos DB) můžete exportovat do Azure Data Lake pomocí CETAS.
Types Ano, všechny typy Transact-SQL kromě kurzoru, hierarchyid, ntextu, textu a obrázku, rowversion, prostorové typy, sql_variant a xml Ano, podporují se všechny typy Transact-SQL s výjimkou kurzoru, hierarchyid, ntextu, textu a obrázku, rowversion, prostorových typů, sql_variant, xml a typu tabulka. Tady se dozvíte, jak mapovat typy sloupců Parquet na typy SQL.
dotazy mezi databázemi No Ano, dotazy napříč databázemi a odkazy na názvy 3 částí jsou podporované včetně příkazu USE . Dotazy můžou odkazovat na bezserverové databáze SQL nebo databáze Lake ve stejném pracovním prostoru. Dotazy mezi pracovními prostory nejsou podporovány.
Integrované/systémové funkce (analýza) Ano, všechny Transact-SQL analýzy, převodu, data a času, logické, matematické funkce s výjimkou funkce CHOOSE a PARSE Ano, podporují se všechny Transact-SQL analytické funkce, převod, datum a čas, logické a matematické funkce.
Předdefinované nebo systémové funkce (řetězec) Yes. Všechny funkce Transact-SQL String, JSON a Collation s výjimkou funkcí STRING_ESCAPE a TRANSLATE Yes. Podporují se všechny funkce Transact-SQL String, JSON a Collation.
Integrované/systémové funkce (kryptografické) Some HASHBYTES je jediná podporovaná kryptografická funkce v bezserverových fondech SQL.
Předdefinované nebo systémové funkce pro hodnoty tabulek Ano, Transact-SQL funkce sady řádků kromě OPENXML, OPENDATASOURCE, OPENQUERY a OPENROWSET Ano, všechny Transact-SQL funkce sady řádků jsou podporované s výjimkou OPENXML, OPENDATASOURCE a OPENQUERY.
Předdefinované a systémové agregace Transact-SQL předdefinované agregace s výjimkou CHECKSUM_AGG a GROUPING_ID Ano, podporují se všechny Transact-SQL předdefinované agregace .
Operators Ano, všechny Transact-SQL operátory s výjimkou !> a !< Ano, podporují se všechny operátoryTransact-SQL .
Řízení toku Yes. Všechny řídicí příkazy Transact-SQL s výjimkou CONTINUE, GOTO, RETURN, USE a WAITFOR Yes. Podporují se všechny Transact-SQL příkazy control-of-flow . Dotaz SELECT v WHILE (...) podmínce není podporován.
Příkazy DDL (CREATE, ALTER, DROP) Yes. Všechny příkazy DDL Transact-SQL použitelné pro podporované typy objektů Ano, podporují se všechny příkazy DDL Transact-SQL použitelné pro podporované typy objektů.

Zabezpečení

Fondy Synapse SQL umožňují používat integrované funkce zabezpečení k zabezpečení dat a řízení přístupu. Následující tabulka porovnává základní rozdíly mezi modely spotřeby Synapse SQL.

Feature Dedicated Serverless
Logins Není k dispozici (pouze uživatelé obsažení v databázích jsou podporováni) Ano, podporuje se ID Microsoft Entra a přihlášení SQL na úrovni serveru.
Users Není k dispozici (v databázích se podporují jenom uživatelé s omezením) Ano, uživatelé databáze jsou podporováni.
Uživatelé s omezením Yes. Poznámka: Neomezený správce může být pouze jeden uživatel Microsoft Entra. Ne, uživatelé s omezením nejsou podporováni.
Ověřování pomocí uživatelského jména a hesla SQL Yes Ano, uživatelé mají přístup k bezserverovém fondu SQL pomocí uživatelských jmen a hesel.
Ověřování Microsoft Entra Ano, uživatelé Microsoft Entra Ano, uživatelé a přihlašovací údaje Microsoft Entra mohou přistupovat k bezserverovým fondům SQL pomocí svých identit Microsoft Entra.
Passthrough autentizace Microsoft Entra pro úložiště Yes Ano, passthrough ověřování Microsoft Entra se vztahuje na přihlášení Microsoft Entra. Identita uživatele Microsoft Entra se předává do úložiště, pokud není zadán přihlašovací údaje. Ověřování microsoft Entra passthrough není pro uživatele SQL k dispozici.
Ověřování SAS tokenu pro sdílený přístup k úložišti No Ano, použití PŘIHLAŠOVACÍCH ÚDAJŮ OBORU DATABÁZE s tokenem sdíleného přístupového podpisu v EXTERNÍM ZDROJI DAT nebo PŘIHLAŠOVACÍ ÚDAJE na úrovni instance se sdíleným přístupovým podpisem.
Ověřování přístupového klíče úložiště Ano, použití CREDENTIALŮ DATABÁZE v rámci EXTERNÍHO ZDROJE DAT Ne, místo přístupového klíče k úložišti použijte token SAS .
Ověřování úložiště spravované identity Ano, s využitím Managed Service Identity Credential Ano, dotaz má přístup k úložišti pomocí přihlašovacích údajů pracovního prostoru Managed Identity.
Ověřování identity aplikace úložiště/principálu služby (SPN) Yes Ano, můžete vytvořit přihlašovací údaje s aplikačním ID principála služby, které bude použito k autentizaci ve skladu.
Role serveru No Ano, správce systému, veřejné a další role serveru jsou podporované.
Pověření na úrovni serveru No Ano, přihlašovací údaje na úrovni serveru používají OPENROWSET funkce, která nepoužívá explicitní zdroj dat.
Oprávnění – úroveň serveru No Ano, například CONNECT ANY DATABASE umožňuje SELECT ALL USER SECURABLES uživateli číst data z jakékoli databáze.
Databázové role Yes Ano, můžete použít db_ownerdb_datareader a db_ddladmin role.
PŘIHLAŠOVACÍ ÚDAJE S ROZSAHEM DATABÁZE Ano, používá se v externích zdrojích dat. Ano, přihlašovací údaje s vymezeným oborem databáze je možné použít v externích zdrojích dat k definování metody ověřování úložiště.
Oprávnění – úroveň databáze Yes Ano, u databázových objektů můžete udělit, odepřít nebo odvolat oprávnění.
Oprávnění – úroveň schématu Ano, včetně možnosti UDĚLIT, ODEPŘÍT a ODVOLAT oprávnění uživatelům nebo přihlášením ve schématu Ano, můžete zadat oprávnění na úrovni schématu, včetně možnosti UDĚLIT, ODEPŘÍT a ODVOLAT oprávnění pro uživatele nebo přihlášení ve schématu.
Oprávnění – úroveň objektu Ano, včetně možnosti UDĚLIT, ODEPŘÍT a ODVOLAT oprávnění uživatelům Ano, můžete udělit, odepřít a ODVOLAT oprávnění uživatelům nebo přihlášením v podporovaných systémových objektech.
Oprávnění – zabezpečení na úrovni sloupců Yes Zabezpečení na úrovni sloupců je podporováno v bezserverových fondech SQL pro zobrazení a ne pro externí tabulky. V případě externích tabulek můžete vytvořit logické zobrazení nad externí tabulkou a pak použít zabezpečení na úrovni sloupce.
Zabezpečení na úrovni řádků Yes Ne, neexistuje žádná integrovaná podpora zabezpečení na úrovni řádků. Použijte vlastní zobrazení jako alternativní řešení.
Maskování dat Yes Ne, integrované maskování dat není podporováno v bezserverových fondech SQL. Použijte zobrazení SQL obálky, která explicitně maskuje některé sloupce jako alternativní řešení.
Integrované funkce zabezpečení a identit systému Některé funkce zabezpečení a operátory Transact-SQL: CURRENT_USER, HAS_DBACCESS, IS_MEMBER, IS_ROLEMEMBER, SESSION_USER, SUSER_NAME, SUSER_SNAME, SYSTEM_USER, USER, USER_NAME, EXECUTE AS, OPEN/CLOSE MASTER KEY Některé funkce zabezpečení a operátory Transact-SQL jsou podporované: CURRENT_USER, HAS_DBACCESS, HAS_PERMS_BY_NAME, IS_MEMBER, IS_ROLEMEMBER, IS_SRVROLEMEMBER, SESSION_USER, SESSION_CONTEXT, SUSER_NAME, SUSER_SNAME, SYSTEM_USER, USER, USER_NAME, EXECUTE AS a REVERT. Funkce zabezpečení nelze použít k dotazování externích dat (uložte výsledek do proměnné, kterou lze použít v dotazu).
Transparentní šifrování dat Yes Ne, transparentní šifrování dat se nepodporuje.
Zjišťování a klasifikace dat Yes Ne, zjišťování a klasifikace dat není podporována.
Posouzení zranitelností Yes Ne, posouzení ohrožení zabezpečení není k dispozici.
Pokročilá ochrana před hrozbami Yes Ne, Rozšířená ochrana před internetovými útoky není podporovaná.
Auditing Yes Ano, auditování se podporuje v bezserverových fondech SQL.
Pravidla brány firewall Yes Ano, pravidla brány firewall je možné nastavit na bezserverovém koncovém bodu SQL.
Privátní koncový bod Yes Ano, privátní koncový bod je možné nastavit v bezserverovém fondu SQL.

Vyhrazený fond SQL a bezserverový fond SQL používají k dotazování dat standardní jazyk Transact-SQL. Podrobné rozdíly najdete v referenčních informacích k jazykuTransact-SQL.

Funkce platformy

Feature Dedicated Serverless
Scaling Yes Bezserverový fond SQL se automaticky škáluje v závislosti na úloze.
Pause/resume Yes Serverless fond SQL se deaktivuje automaticky, když se nepoužívá, a aktivuje se, když je třeba. Akce uživatele není nutná.
Zálohování databází Yes No. Data jsou uložená v externích systémech (ADLS, Cosmos DB), proto se ujistěte, že provádíte zálohování dat ve zdroji. Ujistěte se, že ve správě zdrojového kódu používáte uložená metadata SQL (tabulka, zobrazení, definice procedur a uživatelská oprávnění). Definice tabulek v databázi Lake jsou uloženy v metadatech Sparku, proto se ujistěte, že jsou také definice tabulek Sparku ve správě zdrojového kódu.
Obnovení databáze Yes No. Data jsou uložená v externích systémech (ADLS, Cosmos DB), takže potřebujete obnovit zdrojové systémy, abyste mohli přenést data. Ujistěte se, že metadata SQL (tabulka, zobrazení, definice procedur a uživatelská oprávnění) jsou ve správě zdrojového kódu, abyste mohli znovu vytvořit objekty SQL. Definice tabulek v databázi Lake jsou uloženy v metadatech Sparku, proto se ujistěte, že jsou také definice tabulek Sparku ve správě zdrojového kódu.

Tools

K dotazování dat můžete použít různé nástroje pro připojení k Synapse SQL.

Tool Dedicated Serverless
Synapse Studio Ano, skripty SQL Ano, skripty SQL je možné použít v nástroji Synapse Studio. Pokud v důsledku toho vracíte velké množství dat, použijte SSMS nebo Visual Studio Code místo nástroje Synapse Studio.
Power BI Yes Ano, můžete použít Power BI k vytváření sestav v bezserverovém fondu SQL. Režim importu se doporučuje pro vytváření sestav.
Azure Analysis Service Yes Ano, ve službě Azure Analysis Service můžete načíst data pomocí bezserverového fondu SQL.
SQL Server Management Studio (SSMS) Yes Ano, můžete použít SQL Server Management Studio k dotazování bezserverového fondu SQL. SSMS zobrazuje pouze objekty, které jsou k dispozici v bezserverových fondech SQL.
rozšíření MSSQL pro Visual Studio Code Yes Ano, k dotazování bezserverového fondu SQL můžete použít Visual Studio Code . Podporují se skripty SQL a poznámkové bloky SQL. Visual Studio Code zobrazuje pouze objekty, které jsou k dispozici v bezserverových fondech SQL.

Note

SSMS můžete použít k připojení k bezserverovém fondu SQL a dotazování. Částečně se podporuje od verze 18.5, kterou můžete použít pouze pro připojení a dotazování.

Většina aplikací používajících standardní jazyk Transact-SQL může dotazovat jak vyhrazené, tak i bezserverové modely spotřeby Synapse SQL.

Přístup k datům

Analyzovaná data mohou být uložena v různých typech úložiště. V následující tabulce jsou uvedeny všechny dostupné možnosti úložiště:

Typ úložiště Dedicated Serverless
Interní úložiště Yes Ne, data se umístí do analytického úložiště Azure Data Lake nebo Azure Cosmos DB.
Azure Data Lake v2 Yes Ano, ke čtení dat z ADLS můžete použít externí tabulky a OPENROWSET funkci. Tady se dozvíte, jak nastavit řízení přístupu.
Azure Blob Storage Yes Ano, ke čtení dat ze služby Azure Blob Storage můžete použít externí tabulky a OPENROWSET funkci. Tady se dozvíte, jak nastavit řízení přístupu.
Azure SQL/SQL Server (vzdálené) No Ne, serverless SQL pool nemůže odkazovat na Azure SQL databázi. Bezserverové fondy SQL můžete v Azure SQL odkazovat pomocí elastických dotazů nebo propojených serverů.
Dataverse Ne, data Azure Cosmos DB můžete načíst do vyhrazeného fondu pomocí Azure Synapse Linku v bezserverovém fondu SQL (prostřednictvím ADLS) nebo Sparku. Ano, tabulky Dataverse můžete číst pomocí Azure Synapse Linku pro Dataverse s Azure Data Lake.
Transakční úložiště Azure Cosmos DB No Ne, nemáte přístup ke kontejnerům Azure Cosmos DB pro aktualizaci dat nebo čtení dat z transakčního úložiště Azure Cosmos DB. Fondy Sparku slouží k aktualizaci transakčního úložiště Azure Cosmos DB .
Analytické úložiště Azure Cosmos DB Ne, data Azure Cosmos DB můžete načíst do vyhrazeného fondu pomocí Azure Synapse Linku v bezserverovém fondu SQL (prostřednictvím ADLS), ADF, Sparku nebo jiného nástroje pro načtení. Ano, analytické úložiště Azure Cosmos DB můžete dotazovat pomocí Azure Synapse Linku.
Tabulky Apache Sparku (v pracovním prostoru) No Ano, bezserverový fond může číst tabulky PARQUET a CSV pomocí synchronizace metadat.
Tabulky Apache Spark (vzdálené) No Ne, bezserverový fond má přístup pouze k tabulkám PARQUET a CSV vytvořeným ve fondech Apache Spark ve stejném pracovním prostoru Synapse. Můžete ale ručně vytvořit externí tabulku, která odkazuje na umístění externí tabulky Sparku.
Tabulky Databricks (vzdálené) No Ne, bezserverový fond má přístup pouze k tabulkám PARQUET a CSV vytvořeným ve fondech Apache Spark ve stejném pracovním prostoru Synapse. Můžete ale ručně vytvořit externí tabulku, která odkazuje na umístění tabulky Databricks.

Formáty dat

Analyzovaná data se dají ukládat v různých formátech úložiště. V následující tabulce jsou uvedeny všechny dostupné formáty dat, které je možné analyzovat:

Formát dat Dedicated Serverless
Delimited Yes Ano, můžete dotazovat soubory s oddělovači.
CSV Ano (oddělovače s více znaky nejsou podporovány) Ano, můžete se dotazovat na soubory CSV. Pro lepší výkon použijte PARSER_VERSION 2.0, který poskytuje rychlejší analýzu. Pokud k souborům CSV připojujete řádky, ujistěte se, že dotazy na soubory provádíte způsobem umožňujícím připojení nových dat.
Parquet Yes Ano, můžete dotazovat soubory Parquet, včetně souborů s vnořenými typy.
Podregistr ORC Yes Ne, bezserverové fondy SQL nemůžou číst formát Hive ORC.
Hive RC Yes Ne, bezserverové fondy SQL nemůžou číst formát Hive RC.
JSON Yes Ano, soubory JSON můžete dotazovat pomocí textového formátu s oddělovači a funkcí T-SQL JSON .
Avro No Ne, bezserverové fondy SQL nemůžou číst formát Avro.
Delta Lake No Ano, můžete dotazovat soubory delta lake, včetně souborů s vnořenými typy.
Common Data Model (CDM) No Ne, bezserverový fond SQL nemůže číst data uložená pomocí modelu Common Data Model.

Další kroky

Další informace o osvědčených postupech pro vyhrazený fond SQL a bezserverový fond SQL najdete v následujících článcích: