【问题标题】:Kill Session in Different SQL Server在不同的 SQL Server 中终止会话
【发布时间】:2022-01-03 10:01:55
【问题描述】:

我已进行 SQL 查询以终止所有阻塞会话

declare @tbl table (sesid int)
insert into @tbl 
select BlkBy from (SELECT  spid,sp.[status],loginame [Login],hostname, blocked BlkBy,sd.name DBName, 
cmd Command,cpu CPUTime,physical_io DiskIO,last_batch LastBatch,[program_name] ProgramName   
FROM master.dbo.sysprocesses sp JOIN master.dbo.sysdatabases sd ON sp.dbid = sd.dbid ) as tbl
where BlkBy <> 0
DECLARE @n int, @i int= 0, @s int, @killCommand nvarchar(20)= 'kill ', @sql nvarchar (255)
SELECT @n = COUNT(*) FROM @tbl
WHILE @i < @n
BEGIN 
    SELECT TOP 1 @s = sesid from @tbl
    SET @sql = @killCommand + cast(@s as nvarchar(10))
    EXECUTE sp_executesql @sql
    delete from @tbl where sesid = @s
    SET @i = @i + 1
END

现在我正在开发一个 WEB 应用程序来控制超过 1 个 SQL Server,所有这些服务器都链接到控制应用程序数据库,我需要从另一个 SQL 链接服务器调用最后的 Kill 命令,那么如何杀死从一台服务器到另一台链接服务器的会话?

【问题讨论】:

    标签: sql-server kill-process


    【解决方案1】:

    对链接服务器执行直通命令
    { 执行 |执行 }
    ( { @string_variable | [ N ] 'command_string [ ? ]' } [ + ...n ]
    [ { , { 值 | @变量 [ 输出 ] } } [ ...n ] ]
    )
    [作为{登录|用户 } = '姓名' ]
    [ AT 链接服务器名称 ]
    [ AT DATA_SOURCE 数据源名称 ]
    [;]

    MS Docs EXECUTE command

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 2013-12-19
      相关资源
      最近更新 更多