SET Pernyataan (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistem Platform Analitik (PDW)Titik akhir analitik SQL di Microsoft FabricGudang di Microsoft FabricDatabase SQL di Microsoft Fabric

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

Untuk informasi tentang mengatur variabel lokal dengan SET pernyataan, 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

SET LANGUAGE

SET OFFSETS

SET QUOTED_IDENTIFIER
Pernyataan Eksekusi Kueri SET ARITHABORT

SET ARITHIGNORE

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

SET PARSEONLY

SET QUERY_GOVERNOR_COST_LIMIT

SET CACHING HASIL SET (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_ON

SET ANSI_NULLS

SET ANSI_PADDING

SET ANSI_WARNINGS
Pernyataan statistik SET FORCEPLAN

SET SHOWPLAN_ALL

SET SHOWPLAN_TEXT

SET SHOWPLAN_XML

SET STATISTICS IO

SET STATISTICS XML

SET STATISTICS PROFILE

SET STATISTICS TIME
Pernyataan transaksi SET IMPLICIT_TRANSACTIONS

SET REMOTE_PROC_TRANSACTIONS

SET TRANSACTION ISOLATION LEVEL

SET XACT_ABORT

Pertimbangan Saat Anda Menggunakan SET Pernyataan

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

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

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

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

  • Pengaturan database yang ditetapkan dengan menggunakan ALTER DATABASE hanya valid di tingkat database dan hanya berlaku jika ditetapkan 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 SET opsi.

    Catatan

    Ini tidak berlaku untuk opsi terkait SET statistik.

    Misalnya, SET QUOTED_IDENTIFIER, ANSI_NULLS ON atur keduanya QUOTED_IDENTIFIER dan ANSI_NULLS ke ON.

  • SET pengaturan pernyataan mengganti pengaturan opsi database identik yang diatur dengan menggunakan ALTER DATABASE. Misalnya, nilai yang ditentukan dalam SET ANSI_NULLS pernyataan akan menggantikan 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.

  • ALTER, CREATE dan DROP DATABASE pernyataan tidak menghormati SETSET LOCK_TIMEOUT pengaturan.

  • Ketika pernyataan global atau pintasan SET menetapkan beberapa pengaturan, mengeluarkan pernyataan pintasan SET akan mengatur ulang pengaturan sebelumnya untuk semua opsi yang dipengaruhi oleh pernyataan pintasan SET . Jika SET opsi yang terpengaruh oleh pernyataan pintasan SET ditetapkan setelah pernyataan pintasan SET dikeluarkan, pernyataan individual SET akan menggantikan pengaturan pintasan yang sebanding. Contoh pernyataan pintasan SET adalah SETSET 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 Kumpulan Hasil Aktif (MARS) berbagi status global yang berisi pengaturan opsi sesi SET terbaru. Saat setiap permintaan dijalankan, ia dapat memodifikasi SET opsi. Perubahan khusus untuk konteks permintaan di mana mereka diatur, dan tidak memengaruhi permintaan MARS bersamaan lainnya. Namun, setelah eksekusi permintaan selesai, opsi baru SET disalin ke status sesi global. Permintaan baru yang dijalankan di bawah sesi yang sama setelah perubahan ini akan menggunakan pengaturan opsi baru SET 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 yang dihitung atau tampilan yang diindeks, Anda harus mengatur opsi ini SET ke ON: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLSANSI_PADDING, dan ANSI_WARNINGS. Atur opsi NUMERIC_ROUNDABORT ke NONAKTIF.

    Jika Anda tidak mengatur salah satu opsi ini ke nilai yang diperlukan, INSERTtindakan , UPDATE, , DELETEDBCC CHECKDB, dan DBCC CHECKTABLE pada tampilan terindeks atau tabel dengan indeks pada kolom yang dihitung 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, ini 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 kumpulan hasil dinonaktifkan untuk sesi klien saat ini. Mengubah pengaturan ini memerlukan keanggotaan dalam peran publik. Berlaku untuk: Azure Synapse Analytics Gen2