【问题标题】:how to kill many process in sql-server 2008?如何在 sql-server 2008 中杀死许多进程?
【发布时间】:2010-11-21 06:25:16
【问题描述】:

我可以看到这样的打开过程:

select spid from master..sysprocesses where db_name(dbid)='MyDB' 

我可以像这样杀死进程:kill 54

但是我怎样才能杀死一个以上的进程呢?

我需要杀死我的选择...查询返回给我的所有打开进程

先谢谢了

【问题讨论】:

    标签: sql-server-2008


    【解决方案1】:

    在繁忙的站点上,一旦您杀死它们,连接就会再次弹出。你需要这个吗?

    ALTER DATABASE MyDB SET single_user WITH ROLLBACK IMMEDIATE
    
    /*Do your task here*/
    
    ALTER DATABASE MyDB SET multi_user 
    

    【讨论】:

      【解决方案2】:

      如果您想将它们全部杀死,请考虑使用游标循环遍历结果的每一行。您可能可以将其封装在 SP 中以方便使用。

      【讨论】:

      【解决方案3】:

      我通常将动态 SQL 用于此类事情。比一次杀死 50 个进程要好得多,但显然您要谨慎对待 WHERE 子句中包含的内容,并确保您只杀死您打算杀死的进程,没有撤消按钮。

      DECLARE @Sql NVARCHAR(MAX) = (
              SELECT STRING_AGG(CONCAT (
                          'KILL '
                          , p.spid
                          ), CHAR(10))
              FROM sys.sysprocesses p
              WHERE p.hostname = 'whatever'
              )
      
      exec(@Sql)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-15
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 2010-10-28
        • 1970-01-01
        相关资源
        最近更新 更多