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...