• Changing the isolation level of a transaction to SNAPSHOT will cause an exception.

    Repro:

    -- step 1 start

    create databaseSnapshotPromotion

    go

    alter databaseSnapshotPromotion

    setallow_snapshot_isolationon

    go

    alter databaseSnapshotPromotion

    setread_committed_snapshoton

    go

    useSnapshotPromotion

    go

    create tabledbo.test

    (

    cint

    )

    go

    -- step 1 end

    -- step 2 start

    settransaction isolation level read committed

    begin tran

    print'Read committed using snapshots'

    print@@trancount

    insertdbo.test

    (

    c

    )

    select1 as c

    go

    -- step 2 end

    -- step 3 start

    settransaction isolation level snapshot

    print'Snapshot'

    print@@trancount

    insertdbo.test

    (

    c

    )

    select2 as c

    commit tran

    print@@trancount

    go

    select*

    fromdbo.test

    -- step 3 end

    -- step 4 start

    usemaster

    go

    settransaction isolation level read committed

    go

    drop databaseSnapshotPromotion

    go

    -- step 4 end

    Changing the isolation level from SNAPSHOT is supported.

    E.g.:

    -- step 1 start

    create databaseSnapshotPromotion

    go

    alter databaseSnapshotPromotion

    setallow_snapshot_isolationon

    go

    alter databaseSnapshotPromotion

    setread_committed_snapshoton

    go

    useSnapshotPromotion

    go

    create tabledbo.test

    (

    cint

    )

    go

    -- step 1 end

    -- step 2 start

    settransaction isolation level snapshot

    begin tran

    print'Snapshot'

    print@@trancount

    insertdbo.test

    (

    c

    )

    select1 as c

    go

    -- step 2 end

    -- step 3 start

    settransaction isolation level read committed

    print'Read committed using snapshots'

    print@@trancount

    insertdbo.test

    (

    c

    )

    select2 as c

    commit tran

    print@@trancount

    go

    select*

    fromdbo.test

    -- step 3 end

    -- step 4 start

    usemaster

    go

    settransaction isolation level read committed

    go

    drop databaseSnapshotPromotion

    go

    -- step 4 end

    ML

    ---
    Matija Lah, SQL Server MVP
    http://milambda.blogspot.com