Como agendar e automatizar backups de bancos de dados SQL Server no SQL Server Express

Traduções deste artigo Traduções deste artigo
ID do artigo: 2019698
Expandir tudo | Recolher tudo

Sumário

SQL Server Express editions não oferecem uma maneira de agendar trabalhos ou planos de manutenção, porque o componente SQL Server Agent não está incluído nessas edições. Portanto, você precisa adotar uma abordagem diferente para fazer backup de seus bancos de dados quando você usar essas edições.   

Atualmente usuários SQL Server Express podem fazer backup de seus bancos de dados usando um dos seguintes métodos:

Use o SQL Server Management Studio Express. Isso é instalado com o SQL Server Express Advanced Service ou SQL Server Express Toolkit. Para obter mais informações, visite o seguinte site da Microsoft Developer Network (MSDN):

Criar um Backup completo do banco de dados (SQL Server)

  • Use um script Transact-SQL que usa a família de comandos de banco de dados de BACKUP. Para obter mais informações, acesse o seguinte site da MSDN:

    BACKUP (Transact-SQL)

    Este artigo descreve como usar um script Transact-SQL com o Agendador de tarefas do Windows para automatizar backups de bancos de dados SQL Server Express regularmente.

  • Mais Informações

    Você tem três etapas para fazer backup de seus bancos de dados SQL Server usando o Agendador de tarefas do Windows:

    Etapa um: uso SQL Server Management Studio Express ou Sqlcmd para criar o procedimento armazenado no banco de dados mestre:

    / / Copyright © Microsoft Corporation.  Todos os direitos reservados.

    / / Este código lançado sob os termos da

    / / Licença pública do Microsoft (MS-PL http://opensource.org/licenses/ms-pl.html.)

    [Mestre] uso
    GO 
    / ****** Objeto: StoredProcedure [dbo].[sp_BackupDatabases] ****** /
    SET ANSI_NULLS ON
    Ir
    SET QUOTED_IDENTIFIER ON
    Ir
    -=============================================
    -Autor: Microsoft
    -Data de criação: 06-02-2010
    -Descrição: bancos de dados de Backup para SQLExpress
    -Parâmetro1: databaseName
    -Parâmetro2: TipoDeBackup F = completo, D = diferencial, L = log
    -Parâmetro3: local do arquivo de backup
    -=============================================
    procedimento CREATE [dbo]. [sp_BackupDatabases]
    @ sysname databaseName = null,
    @ TipoDeBackup char (1),
    @ backupLocation nvarchar(200)
    como
    SET NOCOUNT ON; 
               
                DECLARE @DBs TABLE
                (
                      ID int IDENTITY PRIMARY KEY,
                      DBNAME nvarchar(500)
                )
               
                 -- Pick out only databases which are online in case ALL databases are chosen to be backed up
                 -- If specific database is chosen to be backed up only pick that out from @DBs
                INSERT INTO @DBs (DBNAME)
                SELECT Name FROM master.sys.databases
                where state=0
                AND name=@DatabaseName
                OR @DatabaseName IS NULL
                ORDER BY Name
               
                -- Filter out databases which do not need to backed up
                IF @backupType='F'
                      BEGIN
                      Excluir @ DBs onde DBNAME em ('tempdb', 'Northwind', 'pubs', 'AdventureWorks')
    final
    ELSE IF @ TipoDeBackup = tinha '
    começar
    DELETE @ DBs onde DBNAME em ('tempdb', 'Northwind', 'pubs' 'mestre', 'AdventureWorks')
    final
    ELSE IF @ TipoDeBackup = 'l'
    começar
    DELETE @ DBs onde DBNAME em ('tempdb', 'Northwind', 'pubs' 'mestre', 'AdventureWorks')
    final
    ELSE
    começar
    retornar
    final
    -declarar variáveis
    DECLARE @ NomeDoBackup varchar(100)
    DECLARE @ BackupFile varchar(100)
    DECLARE @ DBNAME varchar(300)
    DECLARE @ sqlCommand NVARCHAR(1000)
    DECLARE @ dateTime NVARCHAR(20)
    @ Loop DECLARAR int
    -Loop pelos bancos de dados, um por um
    selecione @ Loop = min(ID) de @ DBs
    ENQUANTO @ Loop É não nulo
    começar
    ? têm nomes de banco de dados no formato [dbname], pois alguns têm - ou _ no nome de
          Definir @ DBNAME = '[' +(SELECT DBNAME FROM @DBs WHERE ID = @Loop) +']'
    - definir o formato de n yyyyhhmmss de data e hora atual
    conjunto @ dateTime = substituir (converter (VARCHAR, GETDATE(),101),'/','') + '_' + substituir (converter (VARCHAR, GETDATE(),108),':','')
    - - criar o arquivo backup no formato path\filename.extension para backups de log, comparação e completo
    se @ TipoDeBackup = 'F'
    definir @ BackupFile = @ backupLocation + REPLACE (substituir (@ DBNAME, ' [', '),'] ', ') '_FULL_' + @ dateTime + '.BAK'
    ELSE IF @ TipoDeBackup = tinha '
    definir @ BackupFile = @ backupLocation + REPLACE (substituir (@ DBNAME, ' [', '),'] ', ') '_DIFF_' + @ dateTime + '.BAK'
    ELSE IF @ TipoDeBackup = 'l'
    definir @ BackupFile = @ backupLocation + REPLACE (substituir (@ DBNAME, ' [', '),'] ', ') '_LOG_' + @ dateTime + '.TRN'
    ? Forneça um nome para o armazenamento em mídia de backup
    se @ TipoDeBackup = 'F'
    definir @ NomeDoBackup = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' backup completo para ' + @ dateTime
    se @ TipoDeBackup = tinha '
    definir @ NomeDoBackup = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' backup diferencial para ' + @ dateTime
    se @ TipoDeBackup = 'l'
    definir @ NomeDoBackup = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' backup de log de ' + @ dateTime
    - gerar o comando SQL dinâmico a ser executado
    se @ TipoDeBackup = 'F'
    começar
    conjunto @ sqlCommand = 'BACKUP DATABASE' +@DBNAME+ ' para disco = ' ' +@BackupFile+ ' ' WITH INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'
                      END
           IF @backupType = 'D'
                      BEGIN
                   SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH DIFFERENTIAL, INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'        
                      END
           IF @backupType = 'L' 
                      BEGIN
                   SET @sqlCommand = 'BACKUP LOG ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'        
                      END
     
    -- Execute the generated SQL command
           EXEC(@sqlCommand)
     
    -- Goto the next database
    SELECT @Loop = min(ID) FROM @DBs where ID > Loop @
    final

    Etapa B: em um editor de texto, crie um arquivo em lotes chamado Sqlbackup.bat e copie o texto de um dos exemplos a seguir no arquivo, dependendo do cenário:

    Exemplo1:Backups completos de todos os bancos de dados na instância local nomeado do SQLEXPRESS usando a autenticação do Windows

    / / Sqlbackup.bat

    sqlcmd -S. ? e \EXPRESS -Q "EXEC sp_BackupDatabases @ backupLocation = tinha: \SQLBackups\', @ TipoDeBackup = 'F'" 

    Exemplo2: backups diferenciais de todos os bancos de dados na instância local nomeado do SQLEXPRESS usando um SQLLogin e sua senha

    / / Sqlbackup.bat

    Sqlcmd - U SQLLogin -P senha -S. \SQLEXPRESS -Q "EXEC sp_BackupDatabases @ backupLocation = 'D:\SQLBackups', @ TipoDeBackup = tinha '"

    Observação: O SQLLogin shouldhave pelo menos a função de operador de Backup SQL Server.


    Exemplo 3:Backups de log de todos os bancos de dados local chamado instância SQLEXPRESS usando a autenticação do Windows

    / / Sqlbackup.bat

    Sqlcmd -S. \SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @ backupLocation='D:\SQLBackups\',@backupType='L'"

    Exemplo 4:Backups completos do banco de dados USERDB na instância local nomeada do SQLEXPRESS usando a autenticação do Windows

    / / Sqlbackup.bat

    Sqlcmd -S. \SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @ backupLocation = tinha: \SQLBackups\', @ databaseName = 'USERDB', @ TipoDeBackup = 'F'"

    Da mesma forma, você pode fazer um diferencial backup de USERDB colando no seria ' para o parâmetro @ TipoDeBackup e um backup de log de USERDB, colando 'L' para o parâmetro @ TipoDeBackup .

    Etapa c:Agendar um trabalho usando o Agendador de tarefas do Windows para executar o arquivo em lotes criado na etapa B. Para isso, siga estas etapas:

    1. No computador que está executando o SQL Server Express, clique em Iniciar, aponte para Programas, aponte para Acessórios, aponte para Ferramentas do sistemae clique em tarefas agendadas. 
    2. Clique duas vezes em Adicionar tarefa agendada. 
    3. No Assistente de tarefa agendada, clique em Avançar. 
    4. clique em Procurar, clique no arquivo em lotes criado na etapa b e clique em Abrir. 
    5. Digite SQLBACKUP para o nome da tarefa, clique em diárioe clique em Avançar. 
    6. Especifique informações de uma agenda executar a tarefa. (Recomendamos que você execute essa tarefa pelo menos uma vez por dia.) Em seguida, clique em Avançar.
    7. No campo Digite o nome do usuário , digite um nome de usuário e digite uma senha no campo Digite a senha .

      Observação Este usuário menos deve atribuído a função BackupOperator no nível de SQL Server se você estiver usando um dos arquivos de lote no exemplo 1, 3 ou 4.
    8. Clique em Avançare em Concluir. 
    9. Execute a tarefa agendada pelo menos uma vez para certificar-se de que o backup é criado com êxito.

      Observaçãoa pasta para o executável SQLCMD é geralmente em variáveis de caminho para o servidor depois de SQL Server é instalado, mas se a variável Path não lista nesta pasta, pode encontrar em < local > \90\Tools\Binn (por exemplo: C:\Program Files\Microsoft SQL Server\90\Tools\Binn).

      Estar ciente do seguinte ao usar o procedimento documentado neste artigo:

      • O serviço Agendador de tarefas do Windows deve estar executando no momento em que o trabalho é agendado para execução. Recomendamos que você defina o tipo de inicialização para este serviço como automático. Isso garante que o serviço será executado mesmo em uma reinicialização.
      • deve ser muito espaço na unidade em que os backups estão sendo gravados. Recomendamos que você limpe os arquivos antigos na pasta de backup regularmente para certificar-se de que você não execute espaço em disco. O script não contém a lógica para limpar arquivos antigos.

      Referências adicionais

    Propriedades

    ID do artigo: 2019698 - Última revisão: quinta-feira, 28 de junho de 2012 - Revisão: 1.0
    Palavras-chave: 
    kbmt KB2019698 KbMtpt
    Tradução automática
    IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
    Clique aqui para ver a versão em Inglês deste artigo: 2019698

    Submeter comentários

     

    Contact us for more help

    Contact us for more help
    Connect with Answer Desk for expert help.
    Get more support from smallbusiness.support.microsoft.com