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

SQL Server 2005 のトランザクション レベルとストアド プロシージャ

    ストアド プロシージャは、呼び出されたときに有効なトランザクション分離を使用します。

    ストアド プロシージャ自体が明示的な分離レベルを設定する場合、ストアド プロシージャが終了するとリセットされます。

    (編集:確認したところ、これは BOL の記述に反しています 「...明示的に変更されるまでその接続に設定されたままになります」が、以下から見ることができます)

    CREATE PROC CheckTransLevel
    AS
    DECLARE @Result varchar(20)
    
    SELECT @Result = CASE transaction_isolation_level 
                            WHEN 0 THEN 'Unspecified' 
                            WHEN 1 THEN 'ReadUncomitted' 
                            WHEN 2 THEN 'Readcomitted' 
                            WHEN 3 THEN 'Repeatable' 
                            WHEN 4 THEN 'Serializable' 
                            WHEN 5 THEN 'Snapshot' 
                      END 
    FROM sys.dm_exec_sessions 
    WHERE session_id = @@SPID
    
    PRINT @Result
    
    GO
    CREATE PROC SetRCTransLevel
    AS
    PRINT 'Enter: SetRCTransLevel'
    SET TRANSACTION ISOLATION LEVEL READ COMMITTED
    EXEC CheckTransLevel
    PRINT 'Exit: SetRCTransLevel'
    GO
    
    SET NOCOUNT ON
    
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
    
    EXEC CheckTransLevel
    
    EXEC SetRCTransLevel
    
    EXEC CheckTransLevel
    

    結果

    ReadUncomitted
    Enter: SetRCTransLevel
    Readcomitted
    Exit: SetRCTransLevel
    ReadUncomitted
    



    1. 複数の左結合を持つSQL重複行

    2. .NetPostgreSQL接続文字列

    3. PostgreSQLにトリガーが存在するかどうかを確認するにはどうすればよいですか?

    4. postgres dbファイル-特定のテーブル/インデックスを表すファイルはどれですか?