Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

DBA - Comment tuer tous les processus de base de données sur SQL Server

Le code ci-dessous peut être utilisé pour tuer tous les processus de la base de données SQL Server. Le code peut être utilisé dans des situations où les modifications apportées à la base de données ne peuvent pas être effectuées si un processus est en cours d'exécution sur la base de données, comme le changement de nom de la base de données ne peut pas être effectué si un processus est en cours d'exécution sur cette base de données.

USE MASTER
GO
DECLARE @DatabaseName AS VARCHAR(500)
-->Provide the DataBaseName for which want to Kill all processes.
SET @DatabaseName='YourDataBaseName'
DECLARE @Spid INT
DECLARE KillProcessCur CURSOR FOR
  SELECT spid
  FROM   sys.sysprocesses
  WHERE  DB_NAME(dbid) = @DatabaseName
OPEN KillProcessCur
FETCH Next FROM KillProcessCur INTO @Spid
WHILE @@FETCH_STATUS = 0
  BEGIN
      DECLARE @SQL VARCHAR(500)=NULL
      SET @SQL='Kill ' + CAST(@Spid AS VARCHAR(5))
      EXEC (@SQL)
      PRINT 'ProcessID =' + CAST(@Spid AS VARCHAR(5))
            + ' killed successfull'
      FETCH Next FROM KillProcessCur INTO @Spid
  END
CLOSE KillProcessCur
DEALLOCATE KillProcessCur