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

SQL Server:mencegah pembacaan kotor dalam prosedur tersimpan

Anda tidak dapat mencegah pembacaan kotor. Penulis mengambil kunci eksklusif untuk mencegah jujur, membaca berkomitmen, membaca. Tapi tidak ada tidak ada dapat Anda lakukan untuk mencegah pembacaan yang kotor. Pembaca kotor harus berhenti membaca kotor, titik.

Dengan asumsi bahwa kode yang memeriksa tabel Pelanggan berada di bawah kendali Anda, solusinya adalah menghapus petunjuk baca kotor dari kueri. Ini mungkin akan menyebabkan pertengkaran, karena polling sekarang akan memblokir penulisan. Solusi terbaik untuk itu adalah mengaktifkan pembuatan versi baris :

ALTER DATABASE [<DBNAME>] SET ALLOW_SNAPSHOT_ISOLATION ON; 
ALTER DATABASE [<DBNAME>] SET READ_COMMITTED_SNAPSHOT ON;

Kemudian cukup polling dari Pelanggan sebagai kueri normal, tanpa petunjuk apa pun. Jajak pendapat Anda tidak akan memblokir penulisan di belakang karena versi baris akan dimulai dan mengalihkan pemindaian kueri ke versi baris pra-pembaruan dan tidak terkunci.

Satu catatan lagi:polling setiap 500ms? Mungkin Anda harus menggunakan mekanisme Pemberitahuan Kueri untuk membatalkan cache Anda, lihat Yang Misterius Pemberitahuan .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server Standard Edition Ketersediaan Tinggi Berjangka

  2. Nonaktifkan sementara semua batasan kunci asing

  3. Mendapatkan Hitungan dan Baris dalam kueri yang sama

  4. Kolom Jarang di SQL Server:Dampak pada Waktu &Ruang

  5. Cara Membuat Kunci Utama Komposit di SQL Server (Contoh T-SQL)