Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:SQL事务_C#_Sql_Transactions_Database Connection - Fatal编程技术网

C#:SQL事务

C#:SQL事务,c#,sql,transactions,database-connection,C#,Sql,Transactions,Database Connection,当连接关闭时,是否可以在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

当连接关闭时,是否可以在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? 
}

不,我认为你做不到。

不,我认为你做不到。

连接终止时,没有SQL Server会回滚任何未提交的事务。

连接终止时,没有SQL Server会回滚任何未提交的事务。

这似乎是对数据库事务的误解。事务是与数据库的全部或全部对话。如果通过关闭连接来关闭与数据库的通信线路,则对话结束,更改未提交(“全部或无”的“无”部分)。

这似乎是对数据库事务的误解。事务是与数据库的全部或全部对话。如果您通过关闭连接来关闭与数据库的通信线路,则对话结束,更改不会提交(“全部或无”的“无”部分)。

不会“保存”事务,而是创建一个事务保存点,这是完全不同的:

在事务中创建保存点 可用于回滚零件的 ,并指定 保存点名称

在提交事务之前,可以使用保存点来部分回滚事务完成的某些工作。一个典型的例子是尝试执行可能失败的更新,因此在执行更新之前创建一个保存点,如果失败,则回滚到保存点,从而保留在保存点之前完成的所有工作

有关如何使用保存点的示例,请参见

现在回到您的问题,有没有一种方法可以让连接启动连接、关闭,并在重新打开时拾取相同的事务?从技术上讲,通过使用(现在已弃用)和。但这只是一种好奇,对于您来说,尝试在两个不同会话(两次重新打开连接)之间“重用”事务绝对没有有效的方案。

不会“保存”事务,而是创建一个事务保存点,这是完全不同的:

在事务中创建保存点 可用于回滚零件的 ,并指定 保存点名称

在提交事务之前,可以使用保存点来部分回滚事务完成的某些工作。一个典型的例子是尝试执行可能失败的更新,因此在执行更新之前创建一个保存点,如果失败,则回滚到保存点,从而保留在保存点之前完成的所有工作

有关如何使用保存点的示例,请参见


现在回到您的问题,有没有一种方法可以让连接启动连接、关闭,并在重新打开时拾取相同的事务?从技术上讲,通过使用(现在已弃用)和。但这只是一个好奇的问题,对于您来说,在两个不同的会话(两次重新打开连接)中尝试“重用”事务绝对没有有效的方案。

请尝试并查看。如果您尝试使用该事务,会发生什么情况?它会引发异常吗?好吧,我应该在上面提到,如果我尝试重用事务。连接变为null,因此将抛出错误。另外,如果我尝试使用BeginConnection()重新分配连接,那么事务的保存点就不能再使用了?通常,事务和连接是紧密绑定的,所以对您的用例很好奇。也许还有别的方法可以实现你的目标。试着去看看。如果您尝试使用该事务,会发生什么情况?它会引发异常吗?好吧,我应该在上面提到,如果我尝试重用事务。连接变为null,因此将抛出错误。另外,如果我尝试使用BeginConnection()重新分配连接,那么事务的保存点就不能再使用了?通常,事务和连接是紧密绑定的,所以对您的用例很好奇。也许你还可以做些别的事情来实现你的目标。