简体   繁体   中英

How to kill session using tsql

Hello I have problem with cast issue . Even the results come from query as string i get Msg 102, Level 15, State 1, Line 21 Incorrect syntax near '@session_id'. then I tried to use cast method but it did not worked .

declare @counter        int;
declare @session_id     int;

set @counter=0;
select 
    @counter= count(*),
    @session_id=cast(req.session_id as int) from sys.dm_exec_requests req where req.command='DbccSpaceReclaim'group by req.session_id
if(@counter>0)
begin
kill  @session_id 
end

Try the following, I am using sp_executesql. For more information see http://technet.microsoft.com/en-us/library/ms188001.aspx

declare @counter        int;
declare @session_id     int;

set @counter=0;
select 
    @counter= count(*),
    @session_id=cast(req.session_id as int) from sys.dm_exec_requests req where req.command='DbccSpaceReclaim'group by req.session_id
if(@counter>0)
begin

declare @sql nvarchar(1000)
select @sql = 'kill ' +  cast(@session_id  as varchar(50))
 exec sp_executesql  @sql
end

In my case it does not work (SQL Server 2008 R2)

DECLARE @sSQL varchar(MAX)
SET @sSQL = 'KILL 58'
EXEC sp_executesql @sSQL

It does not kill the session


KILL 58

This works


You can't use a variable as a parameter to the kill command directly.

Try creating a small piece of dynamic SQL and then executing it, as follows:

DECLARE @sql NVARCHAR(50)

IF(@counter>0)
BEGIN
    SET @sql = 'kill ' + CAST(@session_id AS NVARCHAR)
    EXEC @sql
END

This achieves the same result as you desire by executing the kill command with the value of @session_id .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM