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

Apakah mungkin untuk memaksa penguncian tingkat baris di SQL Server?

Anda dapat menggunakan petunjuk ROWLOCK, tetapi AFAIK SQL dapat memutuskan untuk mengeskalasinya jika sumber dayanya hampir habis

Dari dokumen:

ROWLOCK Menentukan bahwa kunci baris diambil ketika kunci halaman atau tabel biasanya diambil. Ketika ditentukan dalam transaksi yang beroperasi pada tingkat isolasi SNAPSHOT, kunci baris tidak diambil kecuali ROWLOCK digabungkan dengan petunjuk tabel lain yang memerlukan kunci, seperti UPDLOCK dan HOLDLOCK.

dan

Petunjuk kunci ROWLOCK, UPDLOCK, DAN XLOCK yang memperoleh kunci tingkat baris dapat menempatkan kunci pada kunci indeks daripada baris data yang sebenarnya. Misalnya, jika tabel memiliki indeks yang tidak berkerumun, dan pernyataan SELECT menggunakan petunjuk kunci ditangani oleh indeks penutup, kunci diperoleh pada kunci indeks di indeks penutup daripada pada baris data di tabel dasar.

Dan akhirnya ini memberikan penjelasan yang cukup mendalam tentang eskalasi kunci di SQL Server 2005 yang diubah di SQL Server 2008.

Ada juga, yang sangat mendalam:Locking in The Database Engine (dalam buku online)

Jadi, secara umum

UPDATE
Employees WITH (ROWLOCK)
SET Name='Mr Bean'
WHERE Age>93

Seharusnya baik-baik saja, tetapi tergantung pada indeks dan memuat di server, itu mungkin berakhir dengan penguncian halaman.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Koneksi ke SQL Server Terkadang Berfungsi

  2. Bagaimana cara mengatur variabel dari kueri SQL?

  3. Mencapai batas parameter 2100 (SQL Server) saat menggunakan Berisi ()

  4. Bagaimana Anda mengubah tipe data kolom di SQL Server?

  5. Cara mendapatkan daftar Tabel tanpa Batasan Kunci Utama di Database SQL Server - Tutorial SQL Server / T-SQL Bagian 58