Bagikan melalui


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 Anda 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 Azure Data Migration Service.

Catatan

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

Gambaran Umum

Sebagian besar fitur Transact-SQL (T-SQL) yang digunakan aplikasi didukung 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 di 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 dan Azure SQL Managed Instance. 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 sintaks 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.
  • Membuat, mengubah, atau menghilangkan objek pengguna seperti tabel, tampilan, atau prosedur tersimpan CREATEmenggunakan pernyataan , , ALTERdan DROP yang sesuai dalam master database di server logis tidak didukung.
  • CREATE LOGIN pernyataan 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 informasi selengkapnya, lihat MEMBUAT LOGIN, MENGUBAH LOGIN, dan Mengotorisasi akses database ke SQL Database, SQL Managed Instance, dan Azure Synapse Analytics.

Sintaksis T-SQL tidak didukung di Azure SQL Database

Selain pernyataan T-SQL yang terkait dengan fitur yang tidak didukung yang dijelaskan dalam Perbandingan Fitur: Azure SQL Database dan Azure SQL Managed Instance, pernyataan dan grup pernyataan berikut 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 digabungkan dengan ID Microsoft Entra. Untuk informasi selengkapnya, lihat Autentikasi Microsoft Entra untuk Azure SQL.
  • 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 enkripsi data transparan (TDE) dan kunci master kolom Always Encrypted dapat 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 di 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 runtime bahasa umum (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 informasi selengkapnya tentang tata bahasa, penggunaan, dan contoh T-SQL, lihat referensiTransact-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 ini 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.