Podporované funkce jazyka Transact-SQL 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.

Jazyk Transact-SQL 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í rozdíly jazyka Transact-SQL 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 Vyhrazené Bezserverová architektura
Tabulky Ano Ne, tabulky v databázi nejsou podporované. Bezserverový fond SQL může dotazovat pouze externí tabulky , které odkazují na data uložená ve službě Azure Data Lake Storage nebo Dataverse.
Zobrazení Ano. 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.
Schémata Ano Ano, schémata jsou podporovaná. Pomocí schémat můžete izolovat různé tenanty a umístit jejich tabulky na schémata.
Dočasné tabulky Ano 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 Ano 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 Ano Ano, podporují se jenom vložené funkce hodnotné tabulkou. Skalární uživatelem definované funkce nejsou podporovány.
Triggery No Ne, bezserverové fondy SQL neumožňují změnu dat, takže triggery nemůžou reagovat na změny dat.
Externí tabulky Ano. 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.
dotazy Ukládání 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 Ano Ne, výsledky dotazu se neukládají do mezipaměti. Do mezipaměti se ukládají pouze statistiky souborů.
Materializovaná zobrazení Ano 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 tabulky Ano Ne, distribuce tabulek nejsou podporovány.
Indexy tabulky Ano Ne, indexy se nepodporují.
Dělení tabulky Ano. Externí tabulky nepodporují dělení. Soubory můžete rozdělit pomocí struktury složek Hive-partition a vytvořit dělené tabulky ve Sparku. Dělení Sparku se bude synchronizovat s bezserverovým fondem. 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.
Statistika Ano 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, použití akcí vertikálního navýšení a snížení kapacity 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 dialektech jazyka Transact-SQL:

Příkaz Vyhrazené Bezserverová architektura
Příkaz SELECT Ano. SELECT Příkaz je podporovaný, ale některé klauzule dotazu Transact-SQL, jako jsou NAPŘÍKLAD XML/FOR JSON, POZVYHLEDAT, OFFSET/FETCH, nejsou podporované. Ano, příkaz je podporovaný, ale některé klauzule dotazu Transact-SQL, SELECT jako jsou FOR XML, MATCH, PREDICT, GROUPNG SETS a rady dotazů, nejsou podporované.
Příkaz INSERT Ano Ne. 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 Ano 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 Ano 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, sloučit data Parquet/CSV pomocí Sparku a změny budou automaticky dostupné v bezserverovém fondu.
Příkaz CTAS Ano 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.
Transakce Ano Ano, transakce platí pouze pro objekty meta-data.
Popisky Ano Ne, popisky nejsou podporovány v bezserverových fondech SQL.
Načtení dat Ano. 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 Ano. Pomocí CETAS. Ano. Data z externího úložiště (Azure Data Lake, Dataverse, Azure Cosmos DB) můžete exportovat do Azure Data Lake pomocí CETAS.
Typy Ano, všechny typy Transact-SQL s výjimkou kurzoru, hierarchyidu, ntextu, textu a obrázku, rowversion, Spatial Types, sql_variant a xml Ano, všechny typy Jazyka Transact-SQL jsou podporovány s výjimkou kurzoru, hierarchyidu, ntextu, textu a obrázku, rowversion, Spatial Types, sql_variant, xml a table type. Tady se dozvíte, jak mapovat typy sloupců Parquet na typy SQL.
Dotazy napříč 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 se nepodporují.
Integrované/systémové funkce (analýza) Ano, všechny analýzy transact-SQL, převod, datum a čas, logické, matematické funkce s výjimkou PŘÍKAZU CHOOSE a PARSE Ano, podporují se všechny analytické funkce transact-SQL, převod, datum a čas, logické a matematické funkce.
Předdefinované nebo systémové funkce (řetězec) Ano. Všechny funkce transact-SQL String, JSON a Kolace s výjimkou STRING_ESCAPE a TRANSLATE Ano. Podporují se všechny funkce jazyka Transact-SQL String, JSON a Collation.
Integrované/systémové funkce (kryptografické) Některé HASHBYTES je jediná podporovaná kryptografická funkce v bezserverových fondech SQL.
Předdefinované nebo systémové funkce pro hodnoty tabulek Ano, funkce sady řádků jazyka Transact-SQL s výjimkou FUNKCÍ OPENXML, OPENDATASOURCE, OPENQUERY a OPENROWSET Ano, všechny funkce sady řádků Jazyka Transact-SQL jsou podporované s výjimkou OPENXML, OPENDATASOURCE a OPENQUERY.
Předdefinované a systémové agregace Předdefinované agregace jazyka Transact-SQL s výjimkou CHECKSUM_AGG a GROUPING_ID Ano, podporují se všechny předdefinované agregace jazyka Transact-SQL.
Operátory Ano, všechny operátory Transact-SQL s výjimkou !> a !< Ano, podporují se všechny operátory Transact-SQL.
Řízení toku Ano. Všechny příkazy Transact-SQL Control-of-flow s výjimkou CONTINUE, GOTO, RETURN, USE a WAITFOR Ano. Podporují se všechny příkazy Transact-SQL Control-of-flow. Dotaz SELECT v WHILE (...) podmínce není podporován.
Příkazy DDL (CREATE, ALTER, DROP) Ano. Všechny příkazy Jazyka Transact-SQL DDL použitelné pro podporované typy objektů Ano, podporují se všechny příkazy Transact-SQL DDL 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.

Funkce Vyhrazené Bezserverová architektura
Přihlášení Není k dispozici (v databázích se podporují jenom uživatelé s omezením) Ano, podporuje se ID Microsoft Entra a přihlášení SQL na úrovni serveru.
Uživatelé 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 Ano. 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 Ano 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, přihlášení Microsoft Entra a uživatelé mají přístup k bezserverovým fondům SQL pomocí svých identit Microsoft Entra.
Ověřování předávacího ověřování Microsoft Entra v úložišti Ano Ano, ověřování předává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í tokenu sdíleného přístupového podpisu (SAS) úložiště 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í PŘIHLAŠOVACÍCH ÚDAJŮ DATABÁZE SCOPED v EXTERNÍM ZDROJI DAT Ne, místo přístupového klíče k úložišti použijte token SAS.
Ověřování spravované identity úložiště Ano, použití přihlašovacích údajů identity spravované služby Ano, dotaz má přístup k úložišti pomocí přihlašovacích údajů spravované identity pracovního prostoru.
Identita aplikace úložiště / ověřování hlavního názvu služby (SPN) Ano Ano, můžete vytvořit přihlašovací údaje s ID aplikace instančního objektu, které se použije k ověření v úložišti.
Role serveru No Ano, správce systému, veřejné a další role serveru jsou podporované.
PŘIHLAŠOVACÍ ÚDAJE 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 Ano Ano, můžete použít db_ownerdb_datareader a db_ddladmin role.
PŘIHLAŠOVACÍ ÚDAJE V OBORU 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 Ano 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ů Ano 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 použít zabezpečení na úrovni sloupce.
Zabezpečení na úrovni řádků Ano Ne, neexistuje žádná integrovaná podpora zabezpečení na úrovni řádků. Jako alternativní řešení použijte vlastní zobrazení.
Maskování dat Ano 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 jazyka Transact-SQL: CURRENT_USER, HAS_DBACCESS, IS_MEMBER, IS_ROLEMEMBER, SESSION_USER, , USER_NAMEUSERSUSER_SNAMESYSTEM_USEREXECUTE ASSUSER_NAMEOPEN/CLOSE MASTER KEY Některé funkce zabezpečení a operátory jazyka Transact-SQL jsou podporované: , , , , SESSION_CONTEXTSESSION_USERIS_MEMBERSUSER_SNAMESYSTEM_USERIS_ROLEMEMBERIS_SRVROLEMEMBERSUSER_NAMEUSER, USER_NAMEa . EXECUTE ASREVERTHAS_PERMS_BY_NAMEHAS_DBACCESSCURRENT_USER 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 Ano Ne, transparentní šifrování dat se nepodporuje.
Zjišťování a klasifikace dat Ano Ne, zjišťování a klasifikace dat není podporována.
Posouzení ohrožení zabezpečení Ano Ne, posouzení ohrožení zabezpečení není k dispozici.
Advanced Threat Protection Ano Ne, Rozšířená ochrana před internetovými útoky není podporovaná.
Auditování Ano Ano, auditování se podporuje v bezserverových fondech SQL.
Pravidla brány firewall Ano Ano, pravidla brány firewall je možné nastavit na bezserverovém koncovém bodu SQL.
Privátní koncový bod Ano 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í dokumentaci jazyka Transact-SQL.

Funkce platformy

Funkce Vyhrazené Bezserverová architektura
Škálování Ano Bezserverový fond SQL se automaticky škáluje v závislosti na úloze.
Pozastavení a obnovení Ano Bezserverový fond SQL se automaticky deaktivuje, když se nepoužívá a v případě potřeby neaktivuje. Akce uživatele není nutná.
Zálohování databází Ano Ne. 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 Ano Ne. 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.

Nástroje

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

Nástroj Vyhrazené Bezserverová architektura
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 ADS místo synapse Studia.
Power BI Ano Ano, Power BI můžete použít k vytváření sestav v bezserverovém fondu SQL. Režim importu se doporučuje pro vytváření sestav.
Azure Analysis Service Ano Ano, ve službě Azure Analysis Service můžete načíst data pomocí bezserverového fondu SQL.
Azure Data Studio (ADS) Ano Ano, k dotazování na bezserverový fond SQL můžete použít Azure Data Studio (verze 1.18.0 nebo vyšší). Podporují se skripty SQL a poznámkové bloky SQL.
SQL Server Management Studio (SSMS) Ano Ano, sql Server Management Studio (verze 18.5 nebo vyšší) můžete použít k dotazování bezserverového fondu SQL. SSMS zobrazuje pouze objekty, které jsou k dispozici v bezserverových fondech SQL.

Poznámka:

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žívá standardní jazyk Transact-SQL, který dokáže dotazovat modely vyhrazené i bezserverové 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ě Vyhrazené Bezserverová architektura
Interní úložiště Ano Ne, data se umístí do analytického úložiště Azure Data Lake nebo Azure Cosmos DB.
Azure Data Lake v2 Ano 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 Ano 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, bezserverový fond SQL nemůže odkazovat na databázi Azure SQL. Bezserverové fondy SQL z Azure SQL můžete 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 Sparku (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 Vyhrazené Bezserverová architektura
Oddělený Ano Ano, můžete dotazovat soubory s oddělovači.
CSV Ano (nepodporované oddělovače více znaků) Ano, můžete se dotazovat na soubory CSV. Lepší výkon PARSER_VERSION 2.0, který poskytuje rychlejší analýzu. Pokud k souborům CSV připojujete řádky, ujistěte se, že se na soubory dotazujete jako připojitelné.
Parketové Ano Ano, můžete dotazovat soubory Parquet, včetně souborů s vnořenými typy.
Podregistr ORC Ano Ne, bezserverové fondy SQL nemůžou číst formát Hive ORC.
Hive RC Ano Ne, bezserverové fondy SQL nemůžou číst formát Hive RC.
JSON Ano 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: