使用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的文档,但在切换用户后无法看到有关交易是否得到兑现的任何说明。有谁知道他们是不是?
答案 0 :(得分:1)
数据库事务(SqlTransaction)是会话范围的而不是用户范围的,因此您可以在同一事务(和数据库连接)中使用EXECUTE AS
和REVERT
。