Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

LINQ + TransactionScope sẽ không thay đổi mức cô lập trong SQL Server Profiler

Nó phụ thuộc vào cách bạn tạo giao dịch.

Nếu bạn đã thực thi SQL nội dòng để bắt đầu nó (EG. BEGIN TRAN ), L2S sẽ không biết về giao dịch và sẽ tạo ra một giao dịch mới lồng nhau trong READ COMMITTED .

Tuy nhiên, nếu bạn đã sử dụng System.Transaction hoặc đặt giao dịch trên DataContext của mình , SubmitChanges sẽ tham gia vào giao dịch đó.

Bạn có thể thấy các giao dịch này bắt đầu và dừng trong Hồ sơ nếu bạn chọn TM: Begin TranTM: Commit Tran các lớp sự kiện.

Lưu ý:ADO.Net không phát hành BEGIN TRAN nó cũng không phát hành SET TRANSACTION ISOLATION theo lô, điều này được thực hiện ở cấp độ thấp hơn.

Nếu bạn thực sự muốn xác nhận hành vi, hãy tạo trình kích hoạt trên bảng chèn mức cô lập hiện tại vào bảng ghi nhật ký và kiểm tra nó.

Bạn có thể tăng mức cô lập hiện tại của mình bằng cách chạy:

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. Cơ sở dữ liệu hệ thống máy chủ SQL - Bảo trì MSDB

  2. SQL:Chọn 3 bản ghi hàng đầu + Tổng số lượng

  3. Cách chỉnh sửa tùy chọn máy chủ được liên kết bằng T-SQL

  4. Tạo / Nối bảng với tổng các giá trị được nhóm trong các danh mục khác nhau

  5. CHÈN SỐ LƯỢNG LỚN từ chuỗi được phân tách bằng dấu phẩy