Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistem Platform Analitik (PDW)
Titik akhir analitik SQL di Microsoft Fabric
Gudang di Microsoft Fabric
Database 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).
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 ONatur 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