KILL 的使用
--连接A:
use db_test
go
create table T_b(f1 int)
begin tran
insert into T_a select 1
union select 2
union select 3
waitfor delay '0:00:50 '
commit tran
--连接B:
use db_test
dbcc opentran
/*------结果---------
数据库 'DB_TEST ' 的事务信息。
最早的活动事务:
SPID(服务器进程 ID): 51
UID(用户 ID): 1
名称 : user_transaction
LSN : (5:56:1)
启动时间 : 01 9 2007 9:53:03:750PM
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系.*/
--连接C:
use db_test
kill 51
/*错误服务器: 消息 6115,级别 16,状态 1,行 2
无法在用户事务内部使用 KILL 命令。*/
----kill不是终止spid为51的进程吗?结果连接A依然执行成功啊
------解决方案--------------------不能用 KILL 来取消您自己的进程---这不是说的很明显了么?没空自杀啦
------解决方案--------------------楼主看错误信息了么:无法在用户事务内部使用 KILL 命令
spid为51的进程在事务内不能被杀掉
你可以用sp_who
提供关于当前 Microsoft® SQL Server™ 用户和进程的信息。可以筛选返回的信息,以便只返回那些不是空闲的进程。
然后再kill spid号