Pernyataan SET (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)Titik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft Fabric

Bahasa pemrograman Transact-SQL menyediakan beberapa pernyataan SET yang mengubah penanganan sesi informasi tertentu saat ini. Pernyataan SET dikelompokkan ke dalam kategori yang diperlihatkan dalam tabel berikut.

Untuk informasi tentang mengatur variabel lokal dengan pernyataan SET, lihat SET @local_variable (Transact-SQL).

Kategori Pernyataan
Pernyataan tanggal dan waktu SET DATEFIRST

SET DATEFORMAT
Pernyataan penguncian SET DEADLOCK_PRIORITY

SET LOCK_TIMEOUT
Pernyataan lain-lain SET CONCAT_NULL_YIELDS_NULL

SET CURSOR_CLOSE_ON_COMMIT

SET FIPS_FLAGGER

SET IDENTITY_INSERT

ATUR BAHASA

MENGATUR OFFSET

SET QUOTED_IDENTIFIER
Pernyataan Eksekusi Kueri SET ARITHABORT

SET ARITHABORT

SET FMTONLY
Catatan: Fitur ini akan dihapus di versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.

SET NOCOUNT

SET NOEXEC

SET NUMERIC_ROUNDABORT

ATUR PARSEONLY

SET QUERY_GOVERNOR_COST_LIMIT

MENGATUR PENEMBOLOKAN TATAAN HASIL (Pratinjau)
Catatan: Fitur ini hanya berlaku untuk Azure Synapse Analytics.

SET ROWCOUNT

SET TEXTSIZE
Pernyataan Pengaturan ISO SET ANSI_DEFAULTS

SET ANSI_NULL_DFLT_OFF

SET ANSI_NULL_DFLT_OFF

SET ANSI_NULLS

SET ANSI_PADDING

SET ANSI_PADDING
Pernyataan statistik SET FORCEPLAN

SET SHOWPLAN_ALL

SET SHOWPLAN_TEXT

SET SHOWPLAN_XML

ATUR STATISTIK IO

ATUR XML STATISTIK

ATUR PROFIL STATISTIK

MENGATUR WAKTU STATISTIK
Pernyataan transaksi SET IMPLICIT_TRANSACTIONS

SET REMOTE_PROC_TRANSACTIONS

ATUR TINGKAT ISOLASI TRANSAKSI

SET XACT_ABORT

Pertimbangan Saat Anda Menggunakan Pernyataan SET

  • Semua pernyataan SET berjalan pada waktu eksekusi atau run time, kecuali pernyataan ini, yang berjalan pada waktu penguraian:

    • SET FIPS_FLAGGER
    • MENGATUR OFFSET
    • ATUR PARSEONLY
    • dan SET QUOTED_IDENTIFIER
  • Jika pernyataan SET berjalan dalam prosedur atau pemicu tersimpan, nilai opsi SET akan dipulihkan setelah prosedur tersimpan atau pemicu mengembalikan kontrol. Selain itu, jika Anda menentukan pernyataan SET dalam string SQL dinamis yang berjalan dengan menggunakan sp_executesql atau EXECUTE, nilai opsi SET akan dipulihkan setelah kontrol dikembalikan dari batch yang Anda tentukan dalam string SQL dinamis.

  • Prosedur tersimpan dijalankan dengan pengaturan SET yang ditentukan pada waktu eksekusi kecuali untuk SET ANSI_NULLS dan SET QUOTED_IDENTIFIER. Prosedur tersimpan yang menentukan SET ANSI_NULLS atau SET QUOTED_IDENTIFIER menggunakan pengaturan yang ditentukan pada waktu pembuatan prosedur tersimpan. Jika digunakan di dalam prosedur tersimpan, pengaturan SET apa pun diabaikan.

  • Pengaturan opsi pengguna sp_configure memungkinkan pengaturan di seluruh server dan berfungsi di beberapa database. Pengaturan ini juga berperilaku seperti pernyataan SET eksplisit, kecuali bahwa itu terjadi pada waktu masuk.

  • Pengaturan database yang diatur dengan menggunakan ALTER DATABASE hanya valid di tingkat database dan berlaku hanya jika diatur secara eksplisit. Pengaturan database mengambil alih pengaturan opsi instans yang diatur dengan menggunakan sp_configure.

  • Jika pernyataan SET menggunakan ON dan OFF, Anda dapat menentukan salah satu untuk beberapa opsi SET.

    Catatan

    Ini tidak berlaku untuk opsi SET terkait statistik.

    Misalnya, SET QUOTED_IDENTIFIER, ANSI_NULLS ON mengatur QUOTED_IDENTIFIER dan ANSI_NULLS ke AKTIF.

  • Pengaturan pernyataan SET mengesampingkan pengaturan opsi database identik yang diatur dengan menggunakan ALTER DATABASE. Misalnya, nilai yang ditentukan dalam pernyataan SET ANSI_NULLS akan mengambil alih pengaturan database untuk ANSI_NULLs. Selain itu, beberapa pengaturan koneksi secara otomatis diatur AKTIF saat pengguna tersambung ke database berdasarkan nilai yang berlaku dengan penggunaan pengaturan opsi pengguna sp_configure sebelumnya, atau nilai yang berlaku untuk semua koneksi ODBC dan OLE/DB.

  • Pernyataan ALTER, CREATE, dan DROP DATABASE tidak mematuhi pengaturan SET LOCK_TIMEOUT.

  • Saat pernyataan SET global atau pintasan mengatur beberapa pengaturan, mengeluarkan pernyataan SET pintasan mengatur ulang pengaturan sebelumnya untuk semua opsi yang terpengaruh oleh pernyataan SET pintasan. Jika opsi SET yang terpengaruh oleh pernyataan SET pintasan diatur setelah pernyataan SET pintasan dikeluarkan, pernyataan SET individual akan mengambil alih pengaturan pintasan yang sebanding. Contoh pernyataan SET pintasan adalah SET ANSI_DEFAULTS.

  • Ketika batch digunakan, konteks database ditentukan oleh batch yang ditetapkan dengan menggunakan pernyataan USE. Kueri yang tidak diencana dan semua pernyataan lain yang berjalan di luar prosedur tersimpan dan yang ada dalam batch mewarisi pengaturan opsi database dan koneksi yang dibuat oleh pernyataan USE.

  • Beberapa permintaan Active Result Set (MARS) berbagi status global yang berisi pengaturan opsi SET sesi terbaru. Saat setiap permintaan dijalankan, permintaan dapat mengubah opsi SET. Perubahan khusus untuk konteks permintaan di mana mereka diatur, dan tidak memengaruhi permintaan MARS bersamaan lainnya. Namun, setelah eksekusi permintaan selesai, opsi SET baru disalin ke status sesi global. Permintaan baru yang dijalankan di bawah sesi yang sama setelah perubahan ini akan menggunakan pengaturan opsi SET baru ini.

  • Saat prosedur tersimpan berjalan dari batch atau dari prosedur tersimpan lain, prosedur tersebut dijalankan di bawah nilai opsi yang disiapkan dalam database yang memiliki prosedur tersimpan. Misalnya, ketika prosedur tersimpan db1.dbo.sp1 memanggil prosedur tersimpan db2.dbo.sp2, prosedur tersimpan sp1 dijalankan di bawah pengaturan tingkat kompatibilitas database db1 saat ini, dan prosedur tersimpan sp2 dijalankan di bawah pengaturan tingkat kompatibilitas database db2 saat ini.

  • Ketika pernyataan Transact-SQL menyangkut objek yang berada di beberapa database, konteks database saat ini dan konteks koneksi saat ini berlaku untuk pernyataan tersebut. Dalam hal ini, jika pernyataan Transact-SQL berada dalam batch, konteks koneksi saat ini adalah database yang ditentukan oleh pernyataan USE; jika pernyataan Transact-SQL berada dalam prosedur tersimpan, konteks koneksi adalah database yang berisi prosedur tersimpan.

  • Saat Membuat dan memanipulasi indeks pada kolom komputasi atau tampilan terindeks, Anda harus mengatur opsi SET ini ke AKTIF: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING, dan ANSI_WARNINGS. Atur opsi NUMERIC_ROUNDABORT ke NONAKTIF.

    Jika Anda tidak mengatur salah satu opsi ini ke nilai yang diperlukan, tindakan INSERT, UPDATE, DELETE, DBCC CHECKDB, dan DBCC CHECKTABLE pada tampilan atau tabel terindeks dengan indeks pada kolom komputasi akan gagal. SQL Server akan menimbulkan kesalahan yang mencantumkan semua opsi yang salah diatur. Selain itu, SQL Server akan memproses pernyataan SELECT pada tabel ini atau tampilan terindeks seolah-olah indeks pada kolom komputasi atau pada tampilan tidak ada.

  • Saat SET RESULT_SET_CACHING AKTIF, set mengaktifkan fitur penembolokan hasil untuk sesi klien saat ini. Result_set_caching tidak dapat diaktifkan untuk sesi jika dinonaktifkan di tingkat database. Saat SET RESULT_SET_CACHING NONAKTIF, fitur penembolokan tataan hasil dinonaktifkan untuk sesi klien saat ini. Mengubah pengaturan ini memerlukan keanggotaan dalam peran publik. Berlaku untuk: Azure Synapse Analytics Gen2