Perbedaan T-SQL antara SQL Server dan Azure SQL Database

Saat memigrasikan database Anda dari SQL Server ke Azure SQL Database, Anda mungkin menemukan bahwa database SQL Server memerlukan beberapa rekayasa ulang sebelum dapat dimigrasikan. Artikel ini menyediakan panduan untuk membantu Anda dalam melakukan rekayasa ulang ini dan memahami alasan yang mendasari mengapa rekayasa ulang diperlukan. Untuk mendeteksi ketidaksesuaian dan memigrasikan database ke Azure SQL Database, gunakan Data Migration Assistant (DMA).

Catatan

ID Microsoft Entra sebelumnya dikenal sebagai Azure Active Directory (Azure AD).

Gambaran Umum

Sebagian besar fitur T-SQL yang digunakan aplikasi mendapat dukungan penuh di Microsoft SQL Server dan Azure SQL Database. Misalnya, komponen SQL inti seperti jenis data, operator, string, aritmetika, logis, dan fungsi kursor bekerja secara identik di SQL Server dan SQL Database. Namun, ada beberapa perbedaan T-SQL dalam elemen DDL (bahasa definisi data) dan DML (bahasa manipulasi data) yang menghasilkan pernyataan dan kueri T-SQL yang hanya didukung secara parsial (yang kita bahas nanti di artikel ini).

Selain itu, ada beberapa fitur dan sintaksis yang tidak didukung sama sekali karena Azure SQL Database dirancang untuk mengisolasi fitur dari ketergantungan pada database sistem dan sistem operasi. Dengan demikian, sebagian besar fitur tingkat instans tidak didukung dalam SQL Database. Opsi dan pernyataan T-SQL tidak tersedia jika mengonfigurasi opsi tingkat instans, komponen sistem operasi, atau menentukan konfigurasi sistem file. Ketika kemampuan tersebut diperlukan, alternatif sesuai yang sering tersedia dengan cara lain dari SQL Database atau dari fitur atau layanan Azure lainnya.

Misalnya, ketersediaan tinggi tersedia di Azure SQL Database. Pernyataan T-SQL yang terkait dengan grup ketersediaan tidak didukung oleh SQL Database, dan tampilan manajemen dinamis yang terkait dengan Grup Ketersediaan AlwaysOn juga tidak didukung.

Untuk daftar fitur yang didukung dan tidak didukung oleh SQL Database, lihat Perbandingan fitur Azure SQL Database. Halaman ini melengkapi artikel tersebut, dan berfokus pada pernyataan T-SQL.

Pernyataan sintaksis T-SQL dengan perbedaan parsial

Pernyataan DDL inti tersedia, tetapi ekstensi pernyataan DDL yang terkait dengan fitur yang tidak didukung, seperti penempatan file pada disk, tidak didukung.

  • Di SQL Server, pernyataan CREATE DATABASE dan ALTER DATABASE memiliki lebih dari tiga lusin opsi. Pernyataan tersebut mencakup penempatan file, FILESTREAM, dan opsi broker layanan yang hanya berlaku untuk SQL Server. Ini mungkin tidak masalah jika Anda membuat database di SQL Database sebelum bermigrasi, tetapi jika Anda memigrasikan kode T-SQL yang membuat database, Anda harus membandingkan CREATE DATABASE (Azure SQL Database) dengan sintaksis SQL Server di CREATE DATABASE (SQL Server T-SQL) untuk memastikan semua opsi yang Anda gunakan didukung. CREATE DATABASE untuk Azure SQL Database juga memiliki tujuan layanan dan opsi kumpulan elastis yang hanya berlaku untuk SQL Database.
  • Pernyataan CREATE TABLE dan ALTER TABLE memiliki opsi FILETABLE dan FILESTREAM yang tidak dapat digunakan di SQL Database karena ada fitur yang tidak didukung.
  • Pernyataan CREATE LOGIN dan ALTER LOGIN didukung, tetapi tidak menawarkan semua opsi yang tersedia di SQL Server. Untuk membuat database Anda lebih portabel, SQL Database menyarankan penggunaan fitur pengguna database mandiri alih-alih masuk kapan pun memungkinkan. Untuk mengetahui informasi selengkapnya, lihat CREATE LOGIN, ALTER LOGIN dan Kelola info masuk dan pengguna.

Sintaksis T-SQL tidak didukung di Azure SQL Database

Selain pernyataan T-SQL yang terkait dengan fitur tidak didukung yang dijelaskan dalam perbandingan fitur Azure SQL Database, pernyataan dan grup pernyataan berikut ini tidak didukung. Dengan demikian, jika database yang akan dimigrasikan menggunakan salah satu fitur berikut, rekayasa ulang aplikasi Anda untuk menghilangkan fitur dan pernyataan T-SQL ini.

  • Kolase objek sistem.
  • Terkait koneksi: Pernyataan titik akhir. SQL Database tidak mendukung autentikasi Windows, tetapi mendukung autentikasi Microsoft Entra. Ini termasuk autentikasi perwakilan Direktori Aktif yang terfederasi dengan ID Microsoft Entra (sebelumnya Azure Active Directory). Untuk informasi selengkapnya, lihat Koneksi ke SQL Database atau Azure Azure Synapse Analytics Dengan Menggunakan autentikasi Microsoft Entra.
  • Kueri lintas database dan lintas instans menggunakan tiga atau empat nama bagian. Tiga nama bagian merujuk pada database tempdb dan database saat ini didukung. Kueri elastik mendukung referensi baca saja ke tabel di database MSSQL lainnya.
  • Rangkaian kepemilikan lintas database dan TRUSTWORTHY properti database.
  • EXECUTE AS LOGIN. Gunakan EXECUTE AS USER sebagai gantinya.
  • Extensible key management (EKM) untuk kunci enkripsi. Kunci yang dikelola pelanggan Transparent Data Encryption (TDE) dan kunci utama kolom Always Encrypted akan disimpan di Azure Key Vault.
  • Pengaturan Peristiwa: pemberitahuan peristiwa, pemberitahuan kueri.
  • Properti file: Sintaksis yang terkait dengan nama file database, penempatan, ukuran, dan properti file lainnya yang secara otomatis dikelola oleh SQL Database.
  • Ketersediaan tinggi: Sintaksis yang terkait dengan ketersediaan tinggi dan pemulihan database, yang dikelola oleh SQL Database. Ini mencakup sintaksis untuk pencadangan, pemulihan, Grup Ketersediaan AlwaysOn, pencerminan database, pengiriman log, model pemulihan.
  • Sintaksis yang terkait dengan rekam jepret, transaksional, dan replikasi penggabungan, yang tidak tersedia dalam SQL Database. Langganan replikasi didukung.
  • Fungsi: fn_get_sql, fn_virtualfilestats, fn_virtualservernodes.
  • Konfigurasi instans: Sintaksis yang terkait dengan memori server, utas pekerja, afinitas CPU, bendera pelacakan. Gunakan tingkat layanan dan ukuran komputasi sebagai gantinya.
  • KILL STATS JOB.
  • OPENQUERY, OPENDATASOURCE, dan nama empat bagian.
  • .NET Framework: Integrasi CLR
  • Pencarian semantik
  • Info masuk server: Gunakan info masuk lingkup database sebagai gantinya.
  • Izin tingkat server: GRANT, REVOKE, dan DENY izin tingkat server tidak didukung. Beberapa izin tingkat server digantikan oleh izin tingkat database, atau diberikan secara implisit oleh peran server bawaan. Beberapa DMV tingkat server dan tampilan katalog memiliki tampilan tingkat database yang serupa.
  • SET REMOTE_PROC_TRANSACTIONS
  • SHUTDOWN
  • sp_addmessage
  • sp_configure dan RECONFIGURE. ALTER DATABASE SCOPED CONFIGURATION didukung.
  • sp_helpuser
  • sp_migrate_user_to_contained
  • SQL Server Agent: Sintaks yang bergantung pada SQL Server Agent atau msdb database: pemberitahuan, operator, server manajemen pusat. Gunakan skrip, seperti PowerShell sebagai gantinya.
  • Audit SQL Server: Gunakan audit SQL Database sebagai gantinya.
  • Jejak SQL Server.
  • Bendera pelacakan.
  • Penelusuran kesalahan T-SQL.
  • Pemicu cakupan server atau masuk.
  • Pernyataan USE: Untuk mengubah konteks database ke database lain, Anda harus membuat koneksi baru ke database tersebut.

Referensi T-SQL lengkap

Untuk mengetahui informasi selengkapnya tentang tata bahasa, penggunaan, dan contoh T-SQL, lihat Referensi T-SQL (Mesin Database).

Tentang tag "Berlaku untuk"

Referensi T-SQL mencakup artikel yang terkait dengan semua versi SQL Server terbaru. Di bawah judul artikel terdapat bilah ikon, yang mencantumkan platform MSSQL, dan mengindikasikan tingkat kesesuaian. Misalnya, grup ketersediaan diperkenalkan di SQL Server 2012. Artikel BUAT GRUP KETERSEDIAAN menunjukkan bahwa pernyataan tersebut berlaku untuk SQL Server (dimulai dari 2012). Pernyataan tersebut tidak berlaku untuk SQL Server 2008, SQL Server 2008 R2, Azure SQL Database, Azure Synapse Analytics, atau Gudang Data Paralel.

Dalam beberapa kasus, subjek umum artikel dapat digunakan dalam suatu produk, tetapi ada perbedaan kecil antara produk. Perbedaan ditunjukkan pada titik tengah dalam artikel sebagaimana mestinya. Misalnya, artikel CREATE TRIGGER tersedia di SQL Database. Tetapi opsi ALL SERVER untuk pemicu tingkat server, menunjukkan bahwa pemicu tingkat server tidak dapat digunakan dalam SQL Database. Gunakan pemicu tingkat database sebagai gantinya.

Langkah berikutnya

Untuk daftar fitur yang didukung dan tidak didukung oleh SQL Database, lihat Perbandingan fitur Azure SQL Database.

Untuk mendeteksi masalah kompatibilitas di database SQL Server Anda sebelum bermigrasi ke Azure SQL Database, dan untuk memigrasikan database Anda, gunakan Asisten Migrasi Data (DMA).