Primeiro passo, desenvolvemos um arquivo (busca_fullDB.sql) que consegue verificar quais bancos estão faltando bakcup full nos últimos 6 dias e manda o comando para o TSM os parâmetros para execução.
--Declaração de variáveis necessáriasDECLARE @CMDSQL VARCHAR(1000)DECLARE @Dt_Referencia datetime--Recebe o valor do dia -1SELECT @Dt_Referencia = cast(floor(cast(GETDATE() as float))-1 as datetime) -- Hora zerada--Monta a lista de bancos que tem backup full nos últimos 6 dias.SELECT database_name, name,Backup_start_date, datediff(mi,Backup_start_date,Backup_finish_date) [tempo (min)],server_name,recovery_model, cast(backup_size/1024/1024 as numeric(15,2)) [Tamanho (MB)]into #tmp_bckFROM msdb.dbo.backupset BINNER JOIN msdb.dbo.backupmediafamily BF ON B.media_set_id = BF.media_set_idwhere Backup_start_date >= dateadd(hh, 18 ,@Dt_Referencia - 6 ) --backups realizados a partir das 18h de ontemand Backup_start_date < dateadd (day, 1, @Dt_Referencia)and type = 'D'order by 3;--mostra a lista de servidores que não tem backup fullDECLARE db_cursor CURSOR FORselect CAST(SERVERPROPERTY('Servername') AS varchar(100)) AS Server, name, database_id from sys.databases where database_id not in (1,2,3,4)and name not in (select database_name from #tmp_bck)DECLARE @Dbname VARCHAR(100)DECLARE @Servername VARCHAR(100)DECLARE @database_id INTOPEN db_cursor;FETCH NEXT FROM db_cursorINTO @Servername,@Dbname, @database_idWHILE @@FETCH_STATUS = 0BEGIN--linha que passa o DB para o TSM executar o backup fullSET @CMDSQL = ' F:\tsmdata\sql_full_bases.bat ' + @Dbname + ' '+ @ServernameEXEC master..xp_CMDShell @CMDSQLFETCH NEXT FROM db_cursor INTO @Servername,@Dbname, @database_id;ENDCLOSE db_cursorDEALLOCATE db_cursordrop table #tmp_bck
Segundo Passo, no arquivo .bat do TSM mude os parâmetros:
%sql_dir%\tdpsqlc backup %1 full /tsmoptfile=f:\tsmdata\dsm.opt /sqlserver=%2 /logfile=f:\tsmdata\sql_full_bases.log /logprune=30
como no arquivo sql a chamada do arquivo .bat passa dois parâmetros para receber os valores é preciso colocar %1 e 2%, se você precisar passar mais parâmetros basta adicionar %n.
A execução do sql pode ser feito através de um JOB do sql ou via control-m, lembrando que pelo control-m precisa criar um outro arquivo .bat pois ele não executa diretamente arquivos .sql
Nenhum comentário:
Postar um comentário