Tecnologia

Procedure de Backup no SQL Server

Já teve que fazer backup do banco de dados de algum dos seus clientes e percebeu que algumas rotinas não funcionam bem?

Pois é tive que criar recentemente uma rotina de backup para um cliente, mas com um detalhe o backup deveria ser feito compactado (formato rar), deveria rodar todo dia de madrugada e claro deveria ficar somente o último backup.

Então mãos à obra

A procedure XP_CMDSHELL em alguns servidores não está disponível, e para habilita-la via surface do SQL Server você teria que reiniciar o banco, o que em alguns casos é impossível pois você não pode parar uma empresa toda para isso correto? Então como fazer?

Mãos à obra [2] – Go Horse!

−− Para permitir que as opções avançadas possam ser alteradas.
EXEC sp_configure 'show advanced options', 1 GO
−− Para atualizar o valor configurado no momento para as opções avançadas.
RECONFIGURE GO
−− Para habilitar o recurso.
EXEC sp_configure 'xp_cmdshell', 1 GO
−− Para atualizar o valor configurado no momento para esta funcionalidade.
RECONFIGURE GO

Em seguida podemos criar uma tarefa no Task Scheduler e adicionar um arquivo bat com o seguinte conteúdo:

sqlcmd -S seubanco -U seuusuário -P suasenha -Q "meubanco..MSP_BACKUP"

Pronto, mais um cliente feliz! Espero que você faça bom uso desta pequena procedure. Dúvidas ou sugestões? Comente.

Coimbra, PMP on FacebookCoimbra, PMP on LinkedinCoimbra, PMP on TwitterCoimbra, PMP on Youtube
Coimbra, PMP
CEO do portal, apaixonado por gestão de projetos, metodologias, minha família, professor, consultor, certificado PMP, Six Sigma White Belt.

2 thoughts on “Procedure de Backup no SQL Server

  1. Bom dia, consegui fazer o código, de primeira até funcionou, mas depois quando mando executar parece q fica em looping pois só fica executing query no sql server 2008.

    Poderiam me ajudar??

     

    exec DBO.MSP_BACKUP

    CREATE PROCEDURE DBO.MSP_BACKUP
    @PATH VARCHAR(200)='C:BACKUP'
    AS
    DECLARE @DATA VARCHAR(1000), @ARQ  VARCHAR(1000), @ZIP  VARCHAR(4000)
    SET @ARQ = 'DBCOTACAO' +CAST(DATEPART(DD, GETDATE())AS VARCHAR(2)) + '−' +
    CAST(DATEPART(MM, GETDATE()) AS VARCHAR(2)) + '−' +
    CAST(DATEPART(YYYY, GETDATE()) AS VARCHAR(4)) + '−' +
    CAST(DATEPART(HH, GETDATE()) AS VARCHAR(2)) + '−' +
    CAST( DATEPART(MM, GETDATE()) AS VARCHAR(2)) + '−' +
    CAST(DATEPART(SS, GETDATE()) AS VARCHAR(2)) + '−' +
    CAST(DATEPART(MS, GETDATE()) AS VARCHAR(6))
    SELECT @DATA = @PATH + @ARQ + '.BAK'
    BACKUP DATABASE dbcotacao TO  DISK = @DATA WITH  INIT ,  NOUNLOAD , NOSKIP ,  STATS = 10,  NOFORMAT
    SELECT @DATA
    SET @ZIP = 'C:PROGRA~1WINRARWINRAR.EXE A “' + @PATH + @ARQ + '.RAR” ' + '”' + @DATA + '”'
    PRINT @ZIP
    EXEC XP_CMDSHELL @ZIP
    SET @ZIP = 'DEL “' + @DATA + '”'
    PRINT @ZIP
    EXEC XP_CMDSHELL @ZIP

    EXEC sp_configure 'show advanced options', 1
    GO
    –Para atualizar o valor configurado no momento para as opções avançadas.
    RECONFIGURE
    GO
    –Para habilitar o recurso.
    EXEC sp_configure 'xp_cmdshell', 1
    GO
    –Para atualizar o valor configurado no momento para esta funcionalidade.
    RECONFIGURE
    GO

Deixe uma resposta