Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

LINQ + TransactionScope nie zmieni poziomu izolacji w programie SQL Server Profiler

To zależy od tego, jak utworzyłeś transakcję.

Jeśli uruchomiłeś inline SQL, aby go rozpocząć (np. BEGIN TRAN ), L2S nie będzie wiedział o transakcji i uruchomi nową zagnieżdżoną w READ COMMITTED .

Jeśli jednak użyłeś System.Transaction lub masz ustawioną transakcję w swoim DataContext , SubmitChanges będzie uczestniczyć w tej transakcji.

Możesz zobaczyć te transakcje rozpoczynające się i zatrzymujące w Profiler, jeśli wybierzesz TM: Begin Tran i TM: Commit Tran zajęcia z imprez.

Uwaga:ADO.Net nie wydaje BEGIN TRAN nie wydaje też SET TRANSACTION ISOLATION w partiach odbywa się to na niższym poziomie.

Jeśli naprawdę chcesz potwierdzić zachowanie, utwórz wyzwalacz w tabeli, który wstawia bieżący poziom izolacji do tabeli rejestrowania i sprawdź go.

Możesz wybrać swój obecny poziom izolacji, uruchamiając:

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. Jak zachować kolejność wstawiania w SQL Server

  2. Jak określić literał daty podczas pisania zapytania SQL z serwera SQL połączonego z Oracle?

  3. Określ ostatni dodany wiersz, gdy nie ma indeksu

  4. Wartości NULL wewnątrz klauzuli NOT IN

  5. Chcę pokazać wszystkie tabele, które mają określoną nazwę kolumny