Blog di Zanirato Luca

Microsoft SQL Server Database!

Blog - Sites Links

Stored Procedure : Usp_KillUsers

Mi sono imbattuto più d'una volta nell'eseguzione di Backup tramite

Job Schedulato SQL.

Il processo schedulato nel mio caso aveva due passaggi :


1) Popolazione Datawarehouse;

2) Backup Automatico.


Normalmente questo processo veniva eseguito di notte,

ma per necessità di aggiornamento di dati questo poteva essere lanciato

anche manualmente durante la normale attività lavorativa

comportando la corruzione del Backup.

Tutto questo preambolo per introdurre una Stored Procedure,

che magari qualcuno conosce già, che nel caso qualche utente sia connesso

al Datawarehouse, nel mio caso, li disconnette.

Il mio processo quindi risultava formato infine da 3 Passaggi :


1) Popolazione Datawarehouse;

2) Disconnessione Utenti (Exec Usp_KillUsers 'NomeDB o Datawarehouse');

2) Backup Automatico.


In questo modo si è certamente sicuri che il Backup venga

eseguito con successo.


Questo è il codice della Stored Procedure :

CREATE PROCEDURE Usp_KillUsers
   @DBName Varchar(30)
As
DECLARE @Sql Varchar(60)

DECLARE Kill_cur cursor fast_forward for

SELECT 'Kill ' + cast(spid as varchar) 
FROM master.dbo.sysprocesses 
WHERE dbid = db_id(@DBName) And
	     memusage > 0

OPEN Kill_Cur
Fetch Next From Kill_Cur into @Sql
While @@fetch_status = 0
Begin
   EXEC(@Sql)
   Fetch Next From Kill_Cur into @Sql
End
CLOSE Kill_Cur
DEALLOCATE Kill_Cur
GO

Ciao a Tutti Wink