top of page
  • Foto do escritorCloudDB

SQL Server - Script Único Implanta Check DB Com Envio De Alerta


E agora? sistemas com erros e tudo indica que são os Bancos de Dados? Você é o responsável e precisa garantir que os
Bancos de Dados estão ok? Os erros começaram a alguns dias atrás?

Então, você pode rodar o script Autoridade_SQL_Server_script_unico_implanta_checkDB_com_envio_alerta_v3 e configurar 
para receber e-mail em caso de falha, ou seja, você será o primeiro a saber do problema e poderá atuar antes da situação 
se agravar sem a menor necessidade.

O script cria uma stored procedure para checagem e um job já schedulado para execução, diária, as 00:00 am.

Ponto de atenção para não ficar famoso: Acompanhe a primeira execução no horário mais adequado porque se o Banco de Dados
for muito grande pode haver um crescimento do TempDB, embora a rotina não cause bloqueios haverá mais uso de recursos.

Reportou sucesso ou falha? Caso haja feedback, dúvidas ou necessidade fineza enviar e-mail para mentor@clouddbm.com

USE [master] GO /****** Object: StoredProcedure [dbo].[spu_verifica_todos_bancos_gerenciabd] Script Date: 05/10/2012 12:49:50 ******/ IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[dbo].[spu_verifica_todos_bancos_gerenciabd]')) drop procedure spu_verifica_todos_bancos_gerenciabd go CREATE procedure spu_verifica_todos_bancos_gerenciabd as /* This procedure will check all users databases */ --use master DECLARE @DatabaseName varchar(130) DECLARE @Mensagem varchar(175) DECLARE @CmdLine varchar(1250) -- DECLARE DBNames_cursor CURSOR FOR SELECT name FROM master..sysdatabases (nolock) where name not in ('tempdb', 'Northwind', 'pubs') OPEN DBNames_cursor FETCH NEXT FROM DBNames_cursor INTO @DatabaseName WHILE (@@fetch_status <> -1) BEGIN IF (@@fetch_status <> -2) BEGIN Select @Mensagem = 'Verificando o Banco [' + RTRIM(UPPER(@DatabaseName)) + ']' PRINT @Mensagem Select @CmdLine = 'dbcc checkdb ([' + @DatabaseName + ']) with NO_INFOMSGS' --print @cmdline EXEC (@CmdLine) END FETCH NEXT FROM DBNames_cursor INTO @DatabaseName END PRINT ' ' PRINT ' ' SELECT @Mensagem = '************* NO MORE DATABASES *************' PRINT @Mensagem PRINT ' ' --PRINT 'All users databases were backed up' DEALLOCATE DBNames_cursor go USE [master] GO /****** Object: StoredProcedure [dbo].[spu_envia_alerta_falha_checkdb_gerenciabd] Script Date: 04/23/2013 08:53:03 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO USE [msdb] GO /****** Object: Job [Manuten��o - CheckDB Todos os Bancos] Script Date: 04/23/2013 09:46:24 ******/ BEGIN TRANSACTION DECLARE @ReturnCode INT SELECT @ReturnCode = 0 /****** Object: JobCategory [[Uncategorized (Local)]]] Script Date: 04/23/2013 09:46:24 ******/ IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1) BEGIN EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback END DECLARE @jobId BINARY(16) EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'Manuten��o - CheckDB Todos os Bancos', @enabled=1, @notify_level_eventlog=0, @notify_level_email=0, @notify_level_netsend=0, @notify_level_page=0, @delete_level=0, @description=N'No description available.', @category_name=N'[Uncategorized (Local)]', @owner_login_name=N'sa', @job_id = @jobId OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback /****** Object: Step [exec spu_verifica_todos_bancos] Script Date: 04/23/2013 09:46:25 ******/ EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'exec spu_verifica_todos_bancos', @step_id=1, @cmdexec_success_code=0, @on_success_action=1, @on_success_step_id=0, @on_fail_action=2, @on_fail_step_id=0, @retry_attempts=0, @retry_interval=0, @os_run_priority=0, @subsystem=N'TSQL', @command=N'exec spu_verifica_todos_bancos_gerenciabd', @database_name=N'master', @output_file_name=N'C:\checkdb_todos_bancos.txt', @flags=0 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Manh�', @enabled=1, @freq_type=4, @freq_interval=1, @freq_subday_type=1, @freq_subday_interval=0, @freq_relative_interval=0, @freq_recurrence_factor=0, @active_start_date=20130308, @active_end_date=99991231, @active_start_time=000000, @active_end_time=235959 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback COMMIT TRANSACTION GOTO EndSave QuitWithRollback: IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION EndSave: GO

25 visualizações0 comentário

Posts recentes

Ver tudo

ALERTA DE NUMERO DE CONEXOES

Este código em T-SQL realiza várias operações relacionadas ao monitoramento e alerta do número de conexões em um servidor SQL Server. Aqui está uma resenha das principais funcionalidades do código: Cr

bottom of page