Windows/MSSQL: Unterschied zwischen den Versionen
Aus SchnallIchNet
< Windows
Cbs (Diskussion | Beiträge) |
Cbs (Diskussion | Beiträge) |
||
Zeile 44: | Zeile 44: | ||
<pre> | <pre> | ||
+ | DECLARE @spid int | ||
+ | |||
+ | |||
-- wer ist der, der alle blockiert ?!? | -- wer ist der, der alle blockiert ?!? | ||
select * from master..sysprocesses | select * from master..sysprocesses |
Version vom 23. Dezember 2015, 14:14 Uhr
Transact SQL
snippets...
Kill all Processes
print and kill all connections to a particular DB
USE master GO SET NOCOUNT ON DECLARE @DBName varchar(50) DECLARE @spidstr varchar(8000) DECLARE @ConnKilled smallint SET @ConnKilled=0 SET @spidstr = '' Set @DBName = 'PROD' IF db_id(@DBName) < 4 BEGIN PRINT 'Connections to system databases cannot be killed' RETURN END SELECT @spidstr=coalesce(@spidstr,',' )+'kill '+convert(varchar, spid)+ '; ' FROM master..sysprocesses WHERE dbid=db_id(@DBName) and spid <> @@SPID IF LEN(@spidstr) > 0 BEGIN PRINT '' PRINT @spidstr PRINT '' EXEC(@spidstr) SELECT @ConnKilled = COUNT(1) FROM master..sysprocesses WHERE dbid=db_id(@DBName) PRINT 'Killed: '+convert(varchar, @ConnKilled)+' Connections' END
kill blocked connections
DECLARE @spid int -- wer ist der, der alle blockiert ?!? select * from master..sysprocesses where spid in (select blocked from master..sysprocesses where blocked != 0) and blocked = 0 --> spid merken -- wer ist der Blockierende? Ist dieser ggf. noch aktiv? Dann nicht kicken, stattdessen rückfragen was der Nutzer macht exec sp_who __spid__ --> Ausgaben vermerken -- was ist das letzte Statement des Blockierenden? dbcc inputbuffer (__spid__) --> Ausgaben vermerken -- welche Objekte werden blockiert select * from prod..sysobjects where id in ( select distinct rsc_objid from syslockinfo where rsc_dbid = 6 and rsc_objid != 0 and req_spid = __spid__ ) --> Ausgaben vermerken -- Benutzer aus dem System räumen -- ACHTUNG: Automatische Prozesse (Benutzer FAPB, FAKTUR, CARNATN oder DXSAGENT) dürfen NICHT aus dem System gekickt werden. Falls dennoch Bedarf besteht zuvor ARI um Freigabe bitten kill __spid__