Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
TSQL中嵌套事务抛出错误的回滚_Sql_Sql Server 2008_Tsql_Transactions - Fatal编程技术网

TSQL中嵌套事务抛出错误的回滚

TSQL中嵌套事务抛出错误的回滚,sql,sql-server-2008,tsql,transactions,Sql,Sql Server 2008,Tsql,Transactions,这里是我试图实现的一个片段。我有一个嵌套事务“tran2”,无法回滚 SELECT 'Before', * FROM [table] WHERE field .. BEGIN TRAN tran1 UPDATE [table] set field ... WHERE field .. BEGIN TRAN tran2 SELECT 'During', * FROM [table] WHERE field .. select @@trancount as 'transacti

这里是我试图实现的一个片段。我有一个嵌套事务“tran2”,无法回滚

SELECT 'Before', * FROM [table] WHERE field ..

BEGIN TRAN tran1
UPDATE [table] set field ... WHERE field ..

 BEGIN TRAN tran2
    SELECT 'During', * FROM [table] WHERE field ..
    select @@trancount as 'transactioncount'

  rollback tran tran2

rollback TRAN tran1
SELECT 'After', * FROM [table] WHERE field ..
这是我犯的错误吗

Msg 6401,16级,状态1,第13行
无法回滚tran2。找不到该名称的事务或保存点


但是,
@@trancount
在该点给了我2个事务

,而不是
开始trans-tran2
,请使用

这将在外部事务中创建一个保存点,您可以回滚到该保存点。

请阅读Paul Randal的-SQL Server中不支持嵌套事务。从语法上讲,是的——你可以做到——但实际上,你从来没有真正的嵌套事务。。。。