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

SQL Server:Tingkat isolasi bocor di seluruh koneksi gabungan

Kumpulan koneksi memanggil sp_resetconnection sebelum mendaur ulang koneksi. Menyetel ulang tingkat isolasi transaksi tidak ada dalam daftar hal-hal yang dilakukan sp_resetconnection. Itu akan menjelaskan mengapa kebocoran "serializable" di seluruh koneksi gabungan.

Saya rasa Anda dapat memulai setiap kueri dengan memastikannya pada tingkat isolasi yang tepat:

if not exists (
              select  * 
              from    sys.dm_exec_sessions 
              where   session_id = @@SPID 
                      and transaction_isolation_level = 2
              )
    set transaction isolation level read committed

Opsi lain:koneksi dengan string koneksi yang berbeda tidak berbagi kumpulan koneksi. Jadi, jika Anda menggunakan string koneksi lain untuk kueri "dapat dibuat serial", mereka tidak akan berbagi kumpulan dengan kueri "komit baca". Cara mudah untuk mengubah string koneksi adalah dengan menggunakan login yang berbeda. Anda juga dapat menambahkan opsi acak seperti Persist Security Info=False; .

Terakhir, Anda dapat memastikan setiap kueri "yang dapat dibuat serial" menyetel ulang tingkat isolasi sebelum kembali. Jika kueri "serializable" gagal diselesaikan, Anda dapat menghapus kumpulan koneksi untuk memaksa koneksi yang tercemar keluar dari kumpulan:

SqlConnection.ClearPool(yourSqlConnection);

Ini berpotensi mahal, tetapi kueri yang gagal jarang terjadi, jadi Anda tidak perlu memanggil ClearPool() sering.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pemeriksaan Kesehatan SQL Server Proaktif, Bagian 4:ERRORLOG

  2. Perilaku @@rowcount yang tidak terduga di dalam UDF di MS SQL 2019

  3. Cara Mengirim Hasil Kueri Email sebagai Lampiran di SQL Server (T-SQL)

  4. Bagaimana cara membuat prosedur tersimpan yang secara opsional akan mencari kolom?

  5. Apa Batasan Unik di SQL Server - Tutorial SQL Server / TSQL Bagian 95