Bagikan melalui


Fitur T-SQL yang didukung di Azure Synapse SQL

Azure Synapse SQL adalah layanan analitik big data yang memungkinkan Anda untuk mengkueri dan menganalisis data Anda menggunakan bahasa T-SQL. Anda dapat menggunakan dialek bahasa SQL standar yang mematuhi ANSI yang digunakan pada SQL Server dan Azure SQL Database untuk analisis data.

Bahasa Transact-SQL yang digunakan dalam kumpulan SQL nirserver dan model terdedikasi dapat mereferensikan berbagai objek dan memiliki beberapa perbedaan dalam set fitur yang didukung. Di halaman ini, Anda dapat menemukan perbedaan bahasa Transact-SQL tingkat tinggi antar model konsumsi Synapse SQL.

Database objects

Model konsumsi di Synapse SQL memungkinkan Anda menggunakan berbagai objek database. Perbandingan jenis objek yang didukung ditampilkan dalam tabel berikut ini:

Objek Dedicated Tanpa server
Tabel Ya Tidak, tabel dalam database tidak didukung. Kumpulan SQL tanpa server hanya dapat mengkueri tabel eksternal yang mereferensikan data yang disimpan di penyimpanan Azure Data Lake atau Dataverse.
Tampilan Ya. Tampilan bisa menggunakan elemen bahasa kueri yang tersedia dalam model terdedikasi. Ya, Anda dapat membuat tampilan tabel eksternal, kueri dengan fungsi OPENROWSET, dan tampilan lainnya. Tampilan bisa menggunakan elemen bahasa kueri yang tersedia dalam model nirserver.
Skema Ya Ya, skema didukung. Gunakan skema untuk mengisolasi penyewa yang berbeda dan menempatkan tabel mereka dalam skema masing-masing.
Tabel sementara Ya Tabel sementara dapat digunakan hanya untuk menyimpan beberapa informasi dari tampilan sistem, harfiah, atau tabel sementara lainnya. UPDATE/DELETE pada tabel temp juga didukung. Anda dapat menggabungkan tabel sementara dengan tampilan sistem. Anda tidak dapat memilih data dari tabel eksternal untuk memasukkannya ke dalam tabel sementara atau menggabungkan tabel sementara dengan tabel eksternal - operasi ini akan gagal karena data eksternal dan tabel sementara tidak dapat dicampur dalam kueri yang sama.
Prosedur yang ditetapkan pengguna Ya Ya, prosedur yang disimpan dapat ditempatkan di database pengguna apa pun (bukan database master). Prosedur hanya dapat membaca data eksternal dan menggunakan elemen bahasa kueri yang tersedia di kumpulan tanpa server.
Fungsi yang Ditentukan Pengguna Ya Yes, only inline table-valued functions are supported. Fungsi skalar yang ditentukan pengguna tidak didukung.
Triggers Tidak Tidak, kumpulan SQL tanpa server tidak memungkinkan perubahan data, sehingga pemicu tidak dapat bereaksi pada perubahan data.
Tabel eksternal Ya. Lihat format data yang didukung. Ya, tabel eksternal tersedia dan dapat digunakan untuk membaca data dari penyimpanan Azure Data Lake atau Dataverse. Lihat format data yang didukung.
Caching queries Yes, multiple forms (SSD-based caching, in-memory, resultset caching). Selain itu, Tampilan Materialisasi juga didukung. Tidak, hanya statistik file yang di-cache.
Result set caching Ya Tidak, hasil kueri tidak di-cache. Hanya statistik file yang di-cache.
Materialized views Ya Tidak, tampilan yang termaterialisasi tidak didukung di pool SQL tanpa server.
Variabel tabel Tidak, gunakan tabel sementara Tidak, variabel tabel tidak didukung.
Table distribution Ya Tidak, distribusi tabel tidak didukung.
Table indexes Ya Tidak, indeks tidak didukung.
Table partitioning Ya. Tabel eksternal tidak mendukung partisi. Anda dapat mempartisi file menggunakan struktur folder partisi Apache Hive dan membuat tabel yang dipartisi di Spark. Partisi Spark akan disinkronkan dengan kumpulan tanpa server. Jika Anda tidak menggunakan Spark, Anda dapat mempartisi file dalam struktur folder dan dapat membuat tampilan yang dipartisi pada struktur partisi folder, tetapi tabel eksternal tidak dapat dibuat pada folder yang dipartisi.
Statistik Ya Ya, statistik dibuat pada file eksternal.
Pengelolaan beban kerja, kelas sumber daya, dan kontrol konkurensi Ya, lihat pengelolaan beban kerja, kelas sumber daya, dan kontrol konkurensi. Tidak, Anda tidak dapat mengelola sumber daya yang dialokasikan untuk kueri. Kumpulan SQL tanpa server secara otomatis mengelola sumber daya.
Kontrol biaya Ya, menggunakan tindakan menaikkan dan menurunkan skala. Ya, Anda dapat membatasi penggunaan kumpulan tanpa server harian, mingguan, atau bulanan menggunakan portal Azure atau prosedur T-SQL.

Query language

Bahasa kueri yang digunakan dalam Synapse SQL dapat memiliki berbagai fitur yang didukung tergantung dari model konsumsi. Tabel berikut menguraikan perbedaan bahasa kueri yang paling penting dalam dialek Transact-SQL:

Pernyataan Dedicated Tanpa server
Pernyataan SELECT Ya. Pernyataan SELECT didukung, tetapi beberapa klausul kueri T-SQL, seperti FOR XML/FOR JSON, MATCH, OFFSET/FETCH tidak didukung. Ya, pernyataan SELECT didukung, tetapi beberapa klausul kueri T-SQL seperti FOR XML, MATCH, PREDICT, GROUPNG SETS, dan petunjuk kueri tidak didukung.
INSERT statement Ya Tidak. Unggah data baru ke Data Lake menggunakan Spark atau alat lainnya. Gunakan Azure Cosmos DB dengan penyimpanan analitik untuk beban kerja yang sangat transaksional. Anda dapat menggunakan CETAS untuk membuat tabel eksternal dan menyisipkan data.
UPDATE statement Ya Tidak, perbarui data Parquet/CSV menggunakan Spark dan perubahan akan tersedia secara otomatis di kumpulan tanpa server. Gunakan Azure Cosmos DB dengan penyimpanan analitik untuk beban kerja yang sangat transaksional.
DELETE statement Ya Tidak, hapus data Parquet/CSV menggunakan Spark dan perubahan akan tersedia secara otomatis di kumpulan tanpa server. Gunakan Azure Cosmos DB dengan penyimpanan analitik untuk beban kerja yang sangat transaksional.
MERGE statement Ya (pratinjau) Tidak, gabungkan data Parquet/CSV menggunakan Spark dan perubahan akan tersedia secara otomatis di kumpulan tanpa server.
Pernyataan CTAS Ya Tidak, pernyataan CREATE TABLE AS SELECT tidak didukung di kumpulan SQL tanpa server.
Pernyataan CETAS Ya, Anda dapat melakukan beban awal ke tabel eksternal menggunakan CETAS. Ya, Anda dapat melakukan beban awal ke tabel eksternal menggunakan CETAS. CETAS mendukung format output Parquet dan CSV.
Transactions Ya Ya, transaksi hanya berlaku pada objek meta-data.
Label Ya Tidak, label tidak didukung oleh kumpulan SQL tanpa server.
Pemuatan data Ya. Utilitas yang lebih dipilih adalah pernyataan COPY, tetapi sistem mendukung muatan BULK (BCP) dan CETAS untuk pemuatan data. Tidak, Anda tidak dapat memuat data ke dalam kumpulan SQL tanpa server karena data disimpan di penyimpanan eksternal. Awalnya, Anda dapat memuat data ke tabel eksternal menggunakan pernyataan CETAS.
Data export Ya. Using CETAS. Ya. Anda dapat mengekspor data dari penyimpanan eksternal (Azure Data Lake, Dataverse, Azure Cosmos DB) ke azure data lake menggunakan CETAS.
Jenis Ya, semua jenis T-SQL kecuali cursor, hierarchyid, ntext, teks, dan gambar, rowversion, Jenis Spasial, sql_variant, dan xml Ya, semua jenis T-SQL kecuali cursor, hierarchyid, ntext, teks, dan gambar, rowversion, Jenis Spasial, sql_variant, xml, dan jenis Tabel. Lihat cara memetakan jenis kolom Parquet ke jenis SQL di sini.
Cross-database queries Tidak Yes, the cross-database queries and the 3-part-name references are supported including USE statement. Kueri dapat mereferensikan database SQL tanpa server atau database Lake di ruang kerja yang sama. Cross-workspace queries are not supported.
Fungsi bawaan/sistem (analisis) Ya, semua fungsi Analitik, Konversi, Tanggal dan Waktu, Logika, Matematika Transact-SQL, kecuali CHOOSE dan PARSE Ya, semua fungsi Analitik, Konversi, Tanggal dan Waktu, Logika, Matematika T-SQL didukung.
Built-in/system functions (string) Ya. Semua fungsi String, JSON, dan Kolase Transact-SQL, kecuali STRING_ESCAPE dan TRANSLATE Ya. Semua fungsi String, JSON, dan Kolase T-SQL didukung.
Fungsi sistem/bawaan (Kriptografi) Some HASHBYTES adalah satu-satunya fungsi kriptografi yang didukung dalam kumpulan SQL tanpa server.
Fungsi nilai tabel bawaan/sistem Ya, Fungsi Rowset Transact-SQL, kecuali OPENXML, OPENDATASOURCE, OPENQUERY, dan OPENROWSET Ya, semua fungsi T-SQL Rowset didukung, kecuali OPENXML, OPENDATASOURCE, dan OPENQUERY.
Built-in/system aggregates Agregat bawaan T-SQL, kecuali CHECKSUM_AGG dan GROUPING_ID Ya, semua agregat bawaan T-SQL didukung.
Operators Ya, semua operator T-SQL kecuali !> dan !< Ya, semua operator T-SQL didukung.
Kontrol aliran Ya. Semua pernyataan Kontrol aliran Transact-SQL kecuali CONTINUE, GOTO, RETURN, USE, dan WAITFOR Ya. All Transact-SQL Control-of-flow statements are supported. Kueri SELECT dalam kondisi WHILE (...) tidak didukung.
DDL statements (CREATE, ALTER, DROP) Ya. Semua pernyataan Transact-SQL DDL yang berlaku untuk jenis objek yang didukung Ya, semua pernyataan DDL Transact-SQL yang berlaku untuk jenis objek yang didukung didukung.

Keamanan

Kumpulan SQL Synapse memungkinkan Anda menggunakan fitur keamanan bawaan untuk mengamankan data dan mengontrol akses. Tabel berikut membandingkan perbedaan tingkat tinggi antar model konsumsi Synapse SQL.

Feature Dedicated Tanpa server
Akun Masuk N/A (only contained users are supported in databases) Ya, login Microsoft Entra ID dan SQL tingkat server didukung.
Pengguna N/A (only contained users are supported in databases) Iya, pengguna database mendapat dukungan.
Pengguna yang ditampung Ya. Catatan: hanya satu pengguna Microsoft Entra yang dapat menjadi admin yang tidak dibatasi Tidak, pengguna yang dibatasi tidak didukung.
Autentikasi nama pengguna/kata sandi SQL Ya Ya, pengguna dapat mengakses kumpulan SQL tanpa server menggunakan nama pengguna dan kata sandi mereka.
Autentikasi Microsoft Entra Ya, pengguna Microsoft Entra Ya, login Microsoft Entra dan pengguna dapat mengakses kumpulan SQL tanpa server menggunakan identitas Microsoft Entra mereka.
Storage Microsoft Entra passthrough authentication Ya Yes, Microsoft Entra passthrough authentication is applicable to Microsoft Entra logins. Identitas pengguna Microsoft Entra diteruskan ke penyimpanan jika kredensial tidak ditentukan. Microsoft Entra passthrough authentication is not available for the SQL users.
Storage shared access signature (SAS) token authentication Tidak Yes, using DATABASE SCOPED CREDENTIAL with shared access signature token in EXTERNAL DATA SOURCE or instance-level CREDENTIAL with shared access signature.
Storage Access Key authentication Ya, menggunakan DATABASE SCOPED CREDENTIAL di EXTERNAL DATA SOURCE Tidak, gunakan token SAS alih-alih kunci akses penyimpanan.
Storage Managed Identity authentication Ya, menggunakan Managed Service Identity Credential Ya, Kueri dapat mengakses penyimpanan menggunakan kredensial Identitas Terkelola di ruang kerja.
Autentikasi Identitas Aplikasi Penyimpanan/Akun Utama Layanan (SPN) Ya Yes, you can create a credential with a service principal application ID that will be used to authenticate on the storage.
Server roles Tidak Ya, sysadmin, publik, dan peran server lainnya didukung.
SERVER LEVEL CREDENTIAL Tidak Yes, the server level credentials are used by the OPENROWSET function that do not uses explicit data source.
Permissions - Server-level Tidak Ya, misalnya, CONNECT ANY DATABASE dan SELECT ALL USER SECURABLES memungkinkan pengguna untuk membaca data dari database apa pun.
Database roles Ya Ya, Anda dapat menggunakan peran db_owner, db_datareader, dan db_ddladmin.
DATABASE SCOPED CREDENTIAL Ya, digunakan dalam sumber data eksternal. Ya, kredensial dalam lingkup database dapat digunakan dalam sumber data eksternal untuk menentukan metode otentikasi penyimpanan.
Permissions - Database-level Ya Ya, Anda dapat memberikan, menolak, atau mencabut izin pada objek database.
Permissions - Schema-level Ya, termasuk kemampuan untuk MEMBERIKAN, MENOLAK, dan MEMBATALKAN izin kepada pengguna/login dalam skema. Ya, Anda dapat menentukan izin tingkat skema termasuk kemampuan untuk MEMBERIKAN, MENOLAK, dan MENCABUT izin kepada pengguna/proses masuk pada skema.
Izin - Tingkat objek Ya, termasuk kemampuan untuk memberikan, menolak, dan mencabut izin kepada pengguna Ya, Anda dapat MEMBERIKAN, MENOLAK, dan MENCABUT izin kepada pengguna/login pada objek sistem yang didukung.
Izin - Keamanan tingkat kolom Ya Keamanan tingkat kolom didukung di kumpulan SQL tanpa server untuk tampilan dan bukan untuk tabel eksternal. Dalam kasus tabel eksternal, seseorang dapat membuat tampilan logis di atas tabel eksternal lalu menerapkan keamanan tingkat kolom.
Keamanan tingkat baris Ya No, there is no built-in support for the row-level security. Gunakan tampilan kustom sebagai solusi.
Data masking Ya No, built-in data masking is not supported in the serverless SQL pools. Gunakan tampilan SQL pembungkus yang secara eksplisit menyembunyikan beberapa kolom sebagai solusi sementara.
Keamanan bawaan/sistem & fungsi identitas Beberapa fungsi dan operator keamanan T-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 Beberapa fungsi dan operator keamanan T-SQL didukung: 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, dan REVERT. Fungsi keamanan tidak dapat digunakan untuk mengkueri data eksternal (menyimpan hasil dalam variabel yang bisa digunakan di kueri).
Transparent Data Encryption (TDE) Ya Tidak, Enkripsi Data Transparan tidak didukung.
Penemuan & Klasifikasi Data Ya Tidak, Penemuan & Klasifikasi Data tidak didukung.
Penilaian Kerentanan Ya Tidak, Penilaian Kerentanan tidak tersedia.
Perlindungan Tingkat Lanjut terhadap Ancaman Ya Tidak, Perlindungan Ancaman Tingkat Lanjut tidak didukung.
Audit Ya Yes, auditing is supported in serverless SQL pools.
Firewall rules Ya Ya, aturan firewall dapat diatur pada titik akhir SQL tanpa server.
Titik akhir privat Ya Ya, titik akhir privat dapat diatur pada kumpulan SQL tanpa server.

Kumpulan SQL terdedikasi dan kumpulan SQL nirserver menggunakan bahasa Transact-SQL standar untuk mengkueri data. Untuk perbedaan terperinci, lihat referensi bahasa Transact-SQL.

Platform features

Feature Dedicated Tanpa server
Scaling Ya Kumpulan SQL tanpa server secara otomatis diskalakan tergantung pada beban kerja.
Jeda/lanjutkan Ya Kumpulan SQL tanpa server secara otomatis dinonaktifkan saat tidak digunakan dan diaktifkan saat diperlukan. Tindakan pengguna tidak diperlukan.
Database backups Ya Tidak. Data disimpan dalam sistem eksternal (ADLS, Cosmos DB), jadi pastikan Anda melakukan pencadangan data di sumber. Pastikan Anda menggunakan metadata SQL penyimpanan (tabel, tampilan, definisi prosedur, dan izin pengguna) di kontrol sumber. Definisi tabel dalam database Lake disimpan dalam metadata Spark, jadi pastikan Anda juga menyimpan definisi tabel Spark dalam kontrol sumber.
Database restore Ya Tidak. Data disimpan dalam sistem eksternal (ADLS, Cosmos DB), jadi Anda perlu memulihkan sistem sumber untuk membawa data Anda. Pastikan metadata SQL Anda (tabel, tampilan, definisi prosedur, dan izin pengguna) berada dalam kontrol sumber sehingga Anda dapat membuat ulang objek SQL. Definisi tabel dalam database Lake disimpan dalam metadata Spark, jadi pastikan Anda juga menyimpan definisi tabel Spark dalam kontrol sumber.

Tools

Anda dapat menggunakan berbagai alat untuk terhubung ke Synapse SQL untuk mengkueri data.

Tool Dedicated Tanpa server
Synapse Studio Ya, skrip SQL Ya, skrip SQL dapat digunakan di Synapse Studio. Gunakan SQL Server Management Studio atau ADS alih-alih Synapse Studio jika Anda mengembalikan sejumlah besar data sebagai hasilnya.
Power BI Ya Ya, Anda dapat menggunakan Power BI untuk membuat laporan di kumpulan SQL tanpa server. Mode impor direkomendasikan untuk pelaporan.
Azure Analysis Service Ya Ya, Anda dapat memuat data di Azure Analysis Service menggunakan kumpulan SQL tanpa server.
Azure Data Studio (ADS) Ya Ya, Anda dapat menggunakan Azure Data Studio (versi 1.18.0 atau lebih tinggi) untuk mengkueri kumpulan SQL tanpa server. Skrip SQL dan SQL Notebooks didukung.
SQL Server Management Studio (SSMS) Ya Ya, Anda dapat menggunakan SQL Server Management Studio (versi 18.5 atau lebih tinggi) untuk mengkueri kumpulan SQL tanpa server. SQL Server Management Studio hanya menampilkan objek yang tersedia di kumpulan SQL tanpa server.

Catatan

Anda dapat menggunakan SSMS untuk terhubung ke kumpulan dan kueri SQL nirserver. Ia didukung sebagian mulai dari versi 18.5, Anda dapat menggunakannya untuk menghubungkan dan mengkueri saja.

Sebagian besar aplikasi yang menggunakan bahasa Transact-SQL standar dapat mengkueri model konsumsi terdedikasi maupun nirserver dari Synapse SQL.

Akses data

Data yang dianalisis dapat disimpan pada berbagai jenis penyimpanan. Tabel berikut ini mencantumkan semua opsi penyimpanan yang tersedia:

Jenis penyimpanan Dedicated Tanpa server
Internal storage Ya Tidak, data ditempatkan di Azure Data Lake atau penyimpanan analitik Azure Cosmos DB.
Azure Data Lake v2 Ya Ya, Anda dapat menggunakan tabel eksternal dan fungsi OPENROWSET untuk membaca data dari ADLS. Pelajari di sini cara mengatur kontrol akses.
Azure Blob Storage Ya Ya, Anda dapat menggunakan tabel eksternal dan fungsi OPENROWSET untuk membaca data dari Azure Blob Storage. Pelajari di sini cara mengatur kontrol akses.
Azure SQL/SQL Server (akses jarak jauh) Tidak Tidak, kumpulan SQL tanpa server tidak dapat mereferensikan database Azure SQL. Anda dapat mereferensikan kumpulan SQL tanpa server dari Azure SQL menggunakan kueri elastis atau server yang ditautkan.
Dataverse Tidak, Anda dapat memuat data Azure Cosmos DB ke kumpulan khusus menggunakan Azure Synapse Link di kumpulan SQL tanpa server (melalui ADLS) atau Spark. Ya, Anda dapat membaca tabel Dataverse menggunakan tautan Azure Synapse untuk Dataverse dengan Azure Data Lake.
Penyimpanan transaksional Azure Cosmos DB Tidak Tidak, Anda tidak dapat mengakses kontainer Azure Cosmos DB untuk memperbarui data atau membaca data dari penyimpanan transaksional Azure Cosmos DB. Gunakan kumpulan Spark untuk memperbarui penyimpanan transaksional Azure Cosmos DB .
Azure Cosmos DB analytical storage Tidak, Anda dapat memuat data Azure Cosmos DB ke dalam kumpulan khusus menggunakan Azure Synapse Link di kumpulan SQL tanpa server (melalui ADLS), ADF, Spark, atau beberapa alat beban lainnya. Ya, Anda dapat mengkueri penyimpanan analitik Azure Cosmos DB menggunakan Azure Synapse Link.
Tabel Apache Spark (di ruang kerja) Tidak Ya, kumpulan tanpa server dapat membaca tabel PARQUET dan CSV menggunakan sinkronisasi metadata.
Apache Spark tables (remote) Tidak Tidak, kumpulan tanpa server hanya dapat mengakses tabel PARQUET dan CSV yang dibuat di kumpulan Apache Spark di ruang kerja Synapse yang sama. Namun, Anda dapat membuat tabel eksternal secara manual yang mereferensikan lokasi tabel Spark eksternal.
Databricks tables (remote) Tidak Tidak, kumpulan tanpa server hanya dapat mengakses tabel PARQUET dan CSV yang dibuat di kumpulan Apache Spark di ruang kerja Synapse yang sama. Namun, Anda dapat membuat tabel eksternal secara manual yang mereferensikan lokasi tabel Databricks.

Data formats

Data yang dianalisis dapat disimpan di berbagai format penyimpanan. Tabel berikut ini mencantumkan semua format data yang tersedia yang bisa dianalisis:

Data format Dedicated Tanpa server
Delimited Ya Ya, Anda dapat mengkueri file yang dibatasi.
CSV Ya (pemisah multi-karakter tidak didukung) Ya, Anda dapat mengkueri file CSV. Untuk performa yang lebih baik, gunakan PARSER_VERSION 2.0 yang memberikan penguraian yang lebih cepat. Jika Anda menambahkan baris ke file CSV, pastikan Anda mengkueri file sebagai dapat ditambahkan.
Parquet Ya Yes, you can query Parquet files, including the files with nested types.
Hive ORC Ya Tidak, kumpulan SQL tanpa server tidak dapat membaca format Apache Hive ORC.
Hive RC Ya Tidak, kumpulan SQL tanpa server tidak dapat membaca format Apache Hive RC.
JSON Ya Ya, Anda dapat mengkueri file JSON menggunakan format teks yang dibatasi dan fungsi T-SQL JSON.
Avro Tidak Tidak, kumpulan SQL tanpa server tidak dapat membaca format Avro.
Delta Lake Tidak Yes, you can query delta lake files, including the files with nested types.
Common Data Model (CDM) Tidak Tidak, kumpulan SQL tanpa server tidak dapat membaca data yang disimpan menggunakan Common Data Model.

Langkah berikutnya

Informasi lainnya tentang praktik terbaik untuk kumpulan SQL khusus dan kumpulan SQL tanpa server dapat ditemukan di artikel berikut: