Identificando Database Online e Offline no SQL Server 2005

Script mostra se o database está online ou offline

 

por Darci Leandro

 

Olá pessoal,

É comum você administrar servidores de banco de dados que contenham databases Online e alguns Offline.

Muitas vezes as rotinas administrativas é para serem executadas apenas nos databases que estão Online e para isso criei um script que identifica o status de cada database no servidor.

 

         Script

Nesse script estou utilizando ‘System Table’ e ‘Cursor’.

 

--Declarando variáveis e Definindo cursor

DECLARE @dbName varchar(30), @Status int

DECLARE cursor_DBOnlineOffline CURSOR FOR

 

--Selecionando os databases que serão processados

SELECT name, status FROM master..SYSDATABASES

WHERE name NOT IN ('master', 'msdb', 'model', 'tempdb')

ORDER BY 2 DESC

 

--Atribuindo o resultado do select acima no cursor que foi definido

OPEN cursor_DBOnlineOffline

FETCH NEXT FROM cursor_DBOnlineOffline

INTO @dbName, @Status

 

--Iniciando o while do cursor

WHILE @@FETCH_STATUS = 0

BEGIN

         --Verifica se está Online ou Offline

         IF @Status = 66048

Print 'Database OFFLINE --> ' + @dbName

         ELSE

Print 'Database ONLINE --> ' + @dbName

        

         --Posiciona no próximo registro do cursor

         FETCH NEXT FROM cursor_DBOnlineOffline

         INTO @dbName, @Status

END

--Término do while e encerrando o cursor

CLOSE cursor_DBOnlineOffline

DEALLOCATE cursor_DBOnlineOffline

 

Resultado

O resultado será o Status e o Nome de cada database existente no seu servidor.

 

Database ONLINE --> DBCenterPRD

Database ONLINE --> DBCenterTST

Database ONLINE --> DBCenterDES

Database OFFLINE --> DLTecnologia

Database OFFLINE --> EquipeDBA

 

Conclusão

Esse script é muito útil para quem administra vários servidores e em cada servidor existir vários databases. Também é possível armazenar o resultado em alguma tabela e sempre antes de fazer alguma rotina administrativa consultar essa tabela para ver o status do database, assim, você irá evitar que mensagens desnecessárias apareçam em sua aplicação.

 

Boa sorte a todos e até a próxima...