如何查看SQL事务的挂起更改?

时间:2012-03-07 20:15:48

标签: .net vb.net tsql

在处理一些更新我的数据库的函数时,我正在编写一些快速测试,以确保我的函数正常执行。当实际更新数据库时,我可以将事务传递给函数然后提交它:

user.Assignment("assignment value for some column in table", connection, transaction)
transaction.Commit()

我很好奇是否有办法编写一个快速测试,可以在提交之前验证事务是否会实际更新某些行?

(pseudoish代码)

user.Assignment("assignment value for some column in table", connection, transaction)
If Not transaction["SomeColumn"] = "Expected value for SomeColumn"
    assert("ColumnName was not going to be updated to the expected value!")
transaction.Rollback()

2 个答案:

答案 0 :(得分:3)

只要您在连接内部,就可以像平常一样查询数据; 其他来电者将被屏蔽,但您可以完全访问修改过的数据。

如果您使用的是TransactionScope,这意味着只要在TransactionScope内创建了该连接,您就可以使用任何命令/连接(到同一个数据库) - 它会自动登记到事务(尽管使用相同的连接实例更有效 - 避免任何跳转到DTC的风险)。

如果您使用DbTransaction,则必须使用相同的连接实例,并记住在针对连接执行的任何命令上正确设置.Transaction

答案 1 :(得分:1)

您可以使用SSMS中的with (nolock)选择值来检查这些值。如果您想从.NET查看此内容,我相信您可以更改隔离级别并重新查询。