如何以编程方式取消SQL Server执行过程

Taw*_*ani 6 sql t-sql sql-server

假设您已从代码中执行以下(长时间运行)过程:

int processID = DB.Execute(SQL); //some long running sql statement
Run Code Online (Sandbox Code Playgroud)

有没有办法以编程方式调用SQL Server取消进程,如果它花了太长时间(有点像在QueryAnalyzer中点击"停止"按钮)?

//cancel the process if it is taking too long
DB.Execute("sp_CancelProcess @ProcessID=" + processID);
Run Code Online (Sandbox Code Playgroud)

SQL*_*ace 7

使用KILL进程ID:

KILL 53;
Run Code Online (Sandbox Code Playgroud)

请注意,你不能杀死自己的spid,你需要创建另一个连接,然后从中杀死spid

如果你试图杀死自己的SPID,你将收到以下错误

Server: Msg 6104, Level 16, State 1, Line 1
Cannot use KILL to kill your own process.
Run Code Online (Sandbox Code Playgroud)


Mla*_*dic 4

杀死@Spid

请注意,这是最后的努力。您应该关闭客户端上的连接来终止该进程。