web-dev-qa-db-fra.com

Comment tuer/Terminer tous les processus en cours sur SQL Server 2008

Après avoir exécuté cette requête sur la base de données principale, elle me donne tous les processus en cours sur toutes les bases de données. Existe-t-il une requête qui tue tous les processus en cours d'exécution sur une base de données?.

USE
Master
GO

SELECT
SPID,DBID FROM SYSPROCESSES
WHERE
DBID NOT IN (1,2,3,4) AND SPID >50 AND SPID<> @@spid   
7
Buzz

Si vous souhaitez forcer toutes les autres connexions à se déconnecter et que vous disposez des autorisations appropriées, vous pouvez faire rebondir la base de données dans/en mode utilisateur unique :

alter database current set single_user with rollback immediate;
go
alter database current set multi_user;
go

Toute autre connexion à la même base de données sera terminée.

18

Veuillez consulter le script SQL ci-dessous pour supprimer tous les processus d'une base de données donnée (SQL Server 2014).

Declare @DbName nvarchar(60)='YourDBName'  
Declare @SPID int  

--get all processes  
DECLARE @Table TABLE(  
    SPID INT,  
    Status VARCHAR(MAX),  
    LOGIN VARCHAR(MAX),  
    HostName VARCHAR(MAX),  
    BlkBy VARCHAR(MAX),  
    DBName VARCHAR(MAX),  
    Command VARCHAR(MAX),  
    CPUTime INT,  
    DiskIO INT,  
    LastBatch VARCHAR(MAX),  
    ProgramName VARCHAR(MAX),  
    SPID_1 INT,  
    REQUESTID INT  
)  

INSERT INTO @Table EXEC sp_who2  
--using cursor to kill all processes  
Declare cur_KillAllProcesses CURSOR FAST_FORWARD FOR  
Select   
SPID  
From @Table  
WHERE DBName=@DbName  
OPEN cur_KillAllProcesses  

FETCH NEXT FROM cur_KillAllProcesses INTO   
@SPID  

WHILE @@FETCH_STATUS=0  
BEGIN  

--add kill process command  

Exec('KILL '+ @SPID)  


FETCH NEXT FROM cur_KillAllProcesses INTO @SPID  

END  

CLOSE cur_KillAllProcesses  
DEALLOCATE cur_KillAllProcesses   
1
Satbir

Vous pouvez utiliser l'instruction KILL associée à un curseur sur le résultat de la requête ci-dessus. 

Voir Kill (Transact-SQL)

1
Omnius