日期:2014-05-18  浏览次数:20952 次

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号