Schimbare status baze de date in Offline

Configurare noua (How To)

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

Tip solutie

Permanent
Etichetare:

Voteaza

(2 din 3 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?