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

LINQ + TransactionScope tidak akan mengubah tingkat isolasi di SQL Server Profiler

Itu tergantung pada bagaimana Anda membuat transaksi.

Jika Anda menjalankan SQL sebaris untuk memulainya (Misalnya BEGIN TRAN ), L2S tidak akan mengetahui transaksi tersebut dan akan memunculkan transaksi baru di READ COMMITTED .

Namun, jika Anda menggunakan System.Transaction, atau memiliki transaksi yang ditetapkan di DataContext , SubmitChanges akan berpartisipasi dalam transaksi tersebut.

Anda dapat melihat transaksi ini dimulai dan dihentikan di Profiler jika Anda memilih TM: Begin Tran dan TM: Commit Tran kelas acara.

Catatan:ADO.Net tidak mengeluarkan BEGIN TRAN juga tidak mengeluarkan SET TRANSACTION ISOLATION dalam batch, ini dilakukan pada tingkat yang lebih rendah.

Jika Anda benar-benar ingin mengonfirmasi perilaku, buat pemicu pada tabel yang memasukkan tingkat isolasi saat ini ke dalam tabel logging dan periksa.

Anda dapat mengambil tingkat isolasi Anda saat ini dengan menjalankan:

SELECT CASE transaction_isolation_level 
WHEN 0 THEN 'Unspecified' 
WHEN 1 THEN 'Read Uncommitted' 
WHEN 2 THEN 'Read Committed' 
WHEN 3 THEN 'Repeatable Read' 
WHEN 4 THEN 'Serializable' 
WHEN 5 THEN 'Snapshot' END AS TRANSACTION_ISOLATION_LEVEL 
FROM sys.dm_exec_sessions 
where session_id = @@SPID


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gunakan FILEGROUP_ID() untuk Mengembalikan ID Filegroup di SQL Server

  2. Ekstrak angka dari teks di SQL Server

  3. Apa yang dimaksud dengan ORDER BY (SELECT NULL)?

  4. Penyortiran hierarkis di server sql ketika id anak berisi '.'

  5. Buat pemicu yang memasukkan nilai ke dalam tabel baru saat kolom diperbarui