Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Tetapkan Pasangan Kunci/Nilai dalam Konteks Sesi di SQL Server (sp_set_session_context)

Di SQL Server, Anda dapat menggunakan sp_set_session_context prosedur tersimpan untuk menyetel pasangan kunci/nilai dalam konteks sesi.

Pasangan kunci/nilai ini kemudian tetap berada dalam konteks sesi Anda sampai koneksi Anda ke SQL Server ditutup. Anda dapat menggunakan nilai-nilai ini dalam prosedur tersimpan dan kode T-SQL lainnya sepanjang masa sesi Anda.

Metode untuk mempertahankan status sesi ini pertama kali diperkenalkan di SQL Server 2016. Sebelum rilis itu, Anda harus menggunakan SET CONTEXT_INFO , yang menyediakan cara yang serupa, tetapi jauh lebih terbatas untuk menyimpan status sesi.

Contoh 1 – Tetapkan Nilainya

Berikut adalah contoh untuk mendemonstrasikan cara menggunakan sp_set_session_context untuk menyetel pasangan kunci/nilai.

EXEC sp_set_session_context
  @key = N'user_id',
  @value = 15;

Anda juga dapat menggunakan sintaks berikut:

EXEC sp_set_session_context 'user_id', 15;

Ada juga flag read-only opsional yang dapat Anda atur. Lihat di bawah untuk contohnya.

Contoh 2 – Baca Nilainya

Anda dapat menggunakan SESSION_CONTEXT() berfungsi untuk membaca nilai dari sebuah kunci.

Berikut cara membaca nilai yang saya tetapkan pada contoh sebelumnya.

SELECT SESSION_CONTEXT(N'user_id') AS user_id;

Hasil:

+-----------+
| user_id   |
|-----------|
| 15        |
+-----------+

Contoh 3 – Perbarui Nilainya

Anda dapat memperbarui nilainya, selama Anda belum menetapkannya sebagai hanya-baca.

EXEC sp_set_session_context 'user_id', 73;
SELECT SESSION_CONTEXT(N'user_id') AS user_id;

Hasil:

+-----------+
| user_id   |
|-----------|
| 73        |
+-----------+

Contoh 4 – Setel ke Hanya-Baca

Seperti yang disebutkan, ada juga tanda baca-saja opsional yang dapat Anda atur. Nilai 1 set ke read-only, dan nilai 0 (default) tidak hanya-baca.

Jika Anda menyetelnya ke hanya-baca, Anda tidak akan dapat memperbarui nilai tanpa memutuskan dan menyambungkan kembali ke SQL Server.

Berikut ini contoh pengaturan flag read-only.

EXEC sp_set_session_context 
  @key = N'user_id', 
  @value = 15, 
  @read_only = 1;
SELECT SESSION_CONTEXT(N'user_id') AS user_id;

Hasil:

+-----------+
| user_id   |
|-----------|
| 15        |
+-----------+

Sekarang, mari kita coba ubah nilainya:

EXEC sp_set_session_context 'user_id', 73;

Hasil:

Msg 15664, Level 16, State 1, Line 1
Cannot set key 'user_id' in the session context. The key has been set as read_only for this session. 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hapus karakter aneh ( A dengan topi) dari kolom varchar SQL Server

  2. Kesalahan dalam SQL Server saat mengimpor file CSV meskipun varchar(MAX) digunakan untuk setiap kolom

  3. Periksa Berapa Banyak Item Email dalam Antrian di Database Mail di SQL Server (T-SQL)

  4. Bagaimana cara membagi nilai kolom tunggal menjadi beberapa nilai kolom?

  5. Bagaimana cara meningkatkan kinerja untuk pemfilteran datetime di SQL Server?