当连接关闭时,是否可以在c#中检索当前SQL事务
本文关键字:检索 事务 SQL 连接 是否 | 更新日期: 2023-09-27 18:00:11
当连接关闭时,是否可以在c#中检索当前SQL事务?
sqlTransaction.Save("savePoint");
sqlConnection.Close() // im purposely closing it to test
if (sqlConnection.State == ConnectionState.Close)
{
sqlConnection.Open():
// is it possible to resume the sql transaction when I re-open
// the sql connection? how?
}
SqlTransaction.Save
不"保存"事务,而是创建一个事务保存点,这是完全不同的:
在事务中创建保存点可用于回滚零件的,并指定保存点名称。
保存点可以在事务提交前使用,以部分回滚事务所做的一些工作。一个典型的例子是尝试执行可能会失败的更新,因此在执行更新之前创建一个保存点,如果失败,则回滚到保存点,从而保留在保存点之前完成的所有工作。
有关如何使用保存点的示例,请参阅异常处理和嵌套事务。
现在回到您的问题,有没有一种方法可以让连接启动、关闭,然后在重新打开时选择相同的事务?从技术上讲,通过使用(现在已弃用)sp_getbindtoken
和sp_bindsession
。但这只是一个好奇,绝对没有有效的场景可以让你尝试在两个不同的会话中"重用"一个事务(两次重新打开连接)。
否,SQL Server将在连接终止时回滚任何未提交的事务。
这似乎是对数据库事务的误解。事务是与数据库的全部或全部对话。如果通过关闭连接来关闭与数据库的通信线路,则对话结束,更改不会提交("要么全部,要么全部"中的"无"部分)。
不,我认为你做不到。