Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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
Sql 事务处理后被阻止的数据_Sql_Sql Server_Sql Server 2008_Transactions - Fatal编程技术网

Sql 事务处理后被阻止的数据

Sql 事务处理后被阻止的数据,sql,sql-server,sql-server-2008,transactions,Sql,Sql Server,Sql Server 2008,Transactions,我想对一个表进行一些更新,我们可以将其命名为table1,因为我们的生产服务器,我想使用一个事务 我写了这样一个剧本: BEGIN TRANSACTION T1 UPDATE table1 SET ... SELECT * FROM table1 WHERE ... 正如您所看到的,我忘记了commit/rollback语句 在此之后,我想在此表上执行另一次选择,结果得到一个查询超时错误 我猜我的事务阻塞了我的表,所以我又做了一次完全相同的事务,但这次使用了commit语句 但是我的表仍然

我想对一个表进行一些更新,我们可以将其命名为table1,因为我们的生产服务器,我想使用一个事务

我写了这样一个剧本:

BEGIN TRANSACTION T1

UPDATE table1 SET ...

SELECT * FROM table1 WHERE ...
正如您所看到的,我忘记了commit/rollback语句

在此之后,我想在此表上执行另一次选择,结果得到一个查询超时错误

我猜我的事务阻塞了我的表,所以我又做了一次完全相同的事务,但这次使用了commit语句

但是我的表仍然被阻塞,我不知道如何提交/回滚第一个等待的事务

我还试图用COMMIT事务T1编写一个新的查询,但是我得到一个错误,告诉我COMMIT语句需要一个对应的BEGIN语句


如何执行此操作?

运行第一个查询的会话仍处于活动状态。如果您通过SSMS运行此会话,则使用该会话从那里运行Commit\Rollback。如果找不到会话,请使用活动监视器或sp_who2或其他类型方法来定位会话并将其终止


您不能在另一个会话上修改事务。

我运行了sp_who2,它只返回我的会话,状态为RUNNABLE,BlkBy中没有任何内容。此外,我在SSMS中运行了第一个事务,但没有任何仍在运行的查询。如果我刚刚断开与服务器的连接,它将停止剩余的事务?如果表仍然阻塞,则会话仍然存在。查询将不会运行,但将处于活动状态。查看所有SSMS选项卡以了解当前会话。当有疑问时,终止SSM,从而回滚事务。如果这不起作用,那么回到这里。好的,我只有两个SMS标签处于活动状态,所以我尝试退出SMS。当我关闭它时,它说仍有未提交的事务,并问我是否要提交它们。我说不,我的桌子现在解锁了!谢谢很高兴听到你又开始跑步了!