Estou usando o SQL Server 2005 Express Edition. Percebi que Recovery Model
está definido como Simple
, por padrão. Alterei esta opção para, Full
mas quero saber quais outras opções ativar para garantir a recuperação total se não houver backup.
Existe alguma maneira de fazer backups agendados dos bancos de dados do SQL Server 2005 Express?
Uma resposta a ser adicionada para ajudar a explicar os modelos de recuperação em poucas palavras, a terminologia (especialmente com Full também sendo um tipo de backup) confunde as pessoas.
Iremos ignorar o registro em massa, que é um modelo de recuperação híbrido ideal quando você está realizando determinadas operações em massa e pode alterar programaticamente seu modelo de recuperação como parte do processamento.
Histórico rápido - o SQL Server mantém um log de transações de gravação antecipada. No exemplo de seu aplicativo fazendo uma atualização - a atualização é gravada no log primeiro (e TEM que ser gravada para que a transação seja considerada confirmada). A gravação eventualmente chegará aos arquivos de dados em determinados pontos, mas não precisa ser no caso de uma reinicialização/falha do SQL Server. Por ser protegido no arquivo de log, o SQL tem as informações corretas para recuperar ou "repetir" aquela transação se ela foi toda feita antes da falha ou revertê-la ou "desfazer" a transação se ela não foi toda feita. Este arquivo de log continua a crescer e crescer dependendo do seu modelo de recuperação:
Modo de recuperação total --> Você está dizendo ao SQL Server "Eu realmente me preocupo em poder restaurar para um ponto no tempo". Portanto, isso significa, essencialmente, que você deseja que o SQL mantenha seus registros de log de transações além do necessário apenas para a recuperação de falhas, mas deseja manter os registros de log, fazer backup deles em um cronograma e ter a capacidade de restaurar para um determinado ponto no tempo. Sob este modelo de recuperação, seu arquivo de log continua a crescer até que você faça um backup e, em seguida, pode ser truncado (o tamanho físico permanece onde cresceu, mas parte do arquivo de log pode ser reutilizado com base em algumas outras regras)
Modo de Recuperação Simples --> "Não preciso ir para um ponto específico no tempo, meu último backup completo bom está bom." Você está dizendo ao SQL Server para apenas truncar esse arquivo de log ou reutilizar o espaço dentro dele como o SQL achar adequado - quando os registros não forem mais necessários para a recuperação de travamento/reinicialização, basicamente.
Em qualquer um dos modos acima, você tem a capacidade de recuperar totalmente seu banco de dados, se quiser - restaurá-lo para um bom ponto conhecido. O modo simples significa que sua recuperação só pode ser o último backup completo bom. O modo completo oferece a capacidade de restaurar para um ponto de tempo específico se o arquivo de log estiver intacto no momento da falha ou para o último backup de log válido, caso contrário.
Portanto, a questão é - quais são seus RPOs/RTOs prometidos e acordados com sua unidade de negócios (http://www.straightpathsql.com/archives/2011/02/can-you-restore-sql-server-sqlu/) para determinar qual modo. Apenas lembre-se, se estiver cheio, é imperativo que você faça backups do log de transações ou enfrente o crescimento do arquivo de log que continua. Lembre-se também de que, ao alternar de simples para completo, você deve fazer um backup completo para inicializar sua alteração antes de poder começar a fazer backups de log.
Mais sobre modelos de recuperação do SQL Server - http://msdn.microsoft.com/en-us/library/ms189275.aspx
Você ainda precisará de backups para poder se recuperar de um incidente como o post anterior . AFAIK a maioria dos scripts de gerenciamento de backup que estão em estado selvagem (SSC, Ola Hallengren etc) deve funcionar bem.
Automatizando a manutenção do banco de dados no SQL 2005 Express Edition é uma série de artigos com foco expresso, que abrange a questão adicional de agendar backups na ausência do SQL Agent.
A resposta de Mike explica os modelos de recuperação, mas responderei à sua outra pergunta:
O SQL Server Express é gratuito, mas não inclui o SQL Server Agent. Agent é a parte do agendamento de tarefas do SQL Server. Para disparar trabalhos agendados regularmente, você precisará usar o Agendador de Tarefas do Windows ou um SQL Server totalmente licenciado (Standard, Enterprise, Datacenter Edition, etc.). Eles têm o Agent integrado e você pode configurar trabalhos nesses servidores para fazer backup de seus servidores Express.