sql >> データベース >  >> RDS >> Sqlserver

LINQ + TransactionScope は、SQL Server Profiler の分離レベルを変更しません

    トランザクションの作成方法によって異なります。

    インライン SQL を実行して開始した場合 (例:BEGIN TRAN )、L2S はトランザクションを認識せず、新しいネストされたトランザクションを READ COMMITTED でスピンアップします。 .

    ただし、System.Transaction を使用した場合、または DataContext にトランザクションが設定されている場合 、SubmitChanges はそのトランザクションに参加します。

    TM: Begin Tran を選択すると、これらのトランザクションの開始と停止をプロファイラーで確認できます。 および TM: Commit Tran イベントクラス。

    注:ADO.Net は BEGIN TRAN を発行しません。 SET TRANSACTION ISOLATION も発行しません。 バッチでは、これは下位レベルで行われます。

    もしあなたが本当に 動作を確認したい場合は、現在の分離レベルをロギング テーブルに挿入するテーブルにトリガーを作成し、それを確認します。

    次のコマンドを実行して、現在の分離レベルを取得できます:

    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. エラーを回避するためにこのクエリを書き直すにはどうすればよいですか:FROM句で更新するターゲットテーブルを指定することはできません

    2. MySql 5.7関数UUID()のデフォルトの照合-照合の不正な組み合わせ

    3. SQLite Count()のしくみ

    4. 外部キーが存在する場合にのみドロップします