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 