Situatie
Mai jos este un script care, rulat pe un server Microsoft SQL trece toate bazele create de useri (adica nu cele de system) in statusul OFFLINE.
Solutie
USE MASTER
GO
DECLARE @DatabaseName AS VARCHAR(128)
DECLARE Curs CURSOR FOR
SELECT name from
sys.databases
where database_id>4
OPEN Curs
FETCH Next FROM Curs INTO @DatabaseName
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @Spid INT
DECLARE KillProcessCurs CURSOR FOR
SELECT spid
FROM sys.sysprocesses
WHERE dbid = DB_ID(@DatabaseName)
OPEN KillProcessCurs
FETCH Next FROM KillProcessCurs 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 KillProcessCurs INTO @Spid
END
CLOSE KillProcessCurs
DEALLOCATE KillProcessCurs
DECLARE @SQLDropDB NVARCHAR(MAX)=NULL
SET @SQLDropDB=’Alter Database [‘+@DatabaseName+’] set offline’
Print @SQLDropDB
EXEC (@SQLDropDB)
FETCH Next FROM Curs INTO @DatabaseName
END
CLOSE Curs
DEALLOCATE Curs
Select name as DBName, state_desc as DBStatus
from sys.databases
where database_id>4
Leave A Comment?