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

Apa yang dimaksud dengan exec sp_reset_connection di Sql Server Profiler?

Seperti jawaban lain yang dikatakan, sp_reset_connection menunjukkan bahwa kumpulan koneksi sedang digunakan kembali. Waspadai satu konsekuensi tertentu!

Blog MSDN Jimmy Mays berkata:

sp_reset_connection TIDAK mereset tingkat isolasi transaksi ke default server dari pengaturan koneksi sebelumnya.

PERBARUI :Dimulai dengan SQL 2014, untuk driver klien dengan TDS versi 7.3 atau lebih tinggi, tingkat isolasi transaksi akan diatur ulang kembali ke default.

ref:SQL Server:Tingkat isolasi bocor di seluruh koneksi gabungan

Berikut ini beberapa informasi tambahan:

Apa yang dilakukan sp_reset_connection?

Lapisan API akses data seperti ODBC, OLE-DB dan System.Data.SqlClient semuanya memanggil prosedur tersimpan (internal)p_reset_connection saat menggunakan kembali koneksi dari kumpulan koneksi. Ini dilakukan untuk mengatur ulang status koneksi sebelum digunakan kembali, namun tidak ada yang didokumentasikan apa pun yang disetel ulang. Artikel ini mencoba mendokumentasikan bagian-bagian dari koneksi yang direset.

sp_reset_connection menyetel ulang aspek koneksi berikut:

  • Semua status dan nomor kesalahan (seperti @@error)

  • Menghentikan semua EC (konteks eksekusi) yang merupakan utas anak dari EC induk yang menjalankan kueri paralel

  • Menunggu I/Operasi luar biasa yang luar biasa

  • Membebaskan semua buffer yang ditahan di server dengan koneksi

  • Membuka kunci semua sumber daya buffer yang digunakan oleh koneksi

  • Melepaskan semua memori yang dialokasikan yang dimiliki oleh koneksi

  • Menghapus pekerjaan atau tabel sementara yang dibuat oleh koneksi

  • Membunuh semua kursor global yang dimiliki oleh koneksi

  • Menutup semua pegangan SQL-XML terbuka yang terbuka

  • Menghapus semua tabel kerja terkait SQL-XML yang terbuka

  • Menutup semua tabel sistem

  • Menutup semua tabel pengguna

  • Jatuhkan semua objek sementara

  • Membatalkan transaksi terbuka

  • Cacat dari transaksi terdistribusi saat terdaftar

  • Mengurangi jumlah referensi untuk pengguna di database saat ini yang melepaskan kunci database bersama

  • Membebaskan kunci yang diperoleh

  • Melepaskan pegangan yang diperoleh

  • Mengatur ulang semua opsi SET ke nilai default

  • Menyetel ulang nilai @@rowcount

  • Mereset nilai @@identity

  • Menyetel ulang opsi penelusuran tingkat sesi apa pun menggunakan dbcc traceon()

  • Setel ulang CONTEXT_INFO ke NULL di SQL Server 2005 dan yang lebih baru [ bukan bagian dari artikel asli ]

sp_reset_connection TIDAK akan disetel ulang:

  • Konteks keamanan, itulah sebabnya penggabungan koneksi cocok dengan koneksi berdasarkan string koneksi yang tepat

  • Peran aplikasi dimasukkan menggunakan sp_setapprole, karena peran aplikasi tidak dapat dikembalikan sama sekali sebelum SQL Server 2005. Mulai SQL Server 2005, peran aplikasi dapat dikembalikan, tetapi hanya dengan informasi tambahan yang bukan bagian dari sesi. Sebelum menutup koneksi, peran aplikasi harus dikembalikan secara manual melalui sp_unsetapprole menggunakan nilai "cookie" yang diambil saat sp_setapprole dijalankan.

Catatan:Saya menyertakan daftarnya di sini karena saya tidak ingin daftar itu hilang di web sementara.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengubah Tipe Data Kolom di SQL Server (T-SQL)

  2. Perbaiki Msg 8116 "Tanggal tipe data argumen tidak valid untuk argumen 1 fungsi substring" di SQL Server

  3. Cara Menambahkan Pemisah ke String Gabungan di SQL Server – CONCAT_WS()

  4. Fungsi agregat dalam kueri pembaruan SQL?

  5. DateTime2 vs DateTime di SQL Server