在SQL Server中的事务中执行AS / REVERT

时间:2014-12-30 10:20:58

标签: sql-server transactions

使用SQL Server完成的一些工作要求我在C#端的事务中切换我们正在执行的用户。我想知道事务和上下文切换如何在SQL Server中交互。

(伪代码)

using(var transaction = database.GetTransaction())
{
    using(database.ExecuteAs("User A")) // EXECUTE AS User = "User A"
    {
        // Run queries as User A as part of the transaction
    } // REVERT
    using(database.ExecuteAs("User B")) // EXECUTE AS User = "User B"
    {
        // Run queries as User B as part of the transaction
    } // REVERT
    // Run queries as DBO as part of the transaction
    transaction.Commit();
}

我查看了EXECUTE AS的文档,但在切换用户后无法看到有关交易是否得到兑现的任何说明。有谁知道他们是不是?

1 个答案:

答案 0 :(得分:1)

数据库事务(SqlTransaction)是会话范围的而不是用户范围的,因此您可以在同一事务(和数据库连接)中使用EXECUTE ASREVERT