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.

Comentários

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

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.