Conceito Básico - Checkpoints ou pontos de verificação
Tecnicamente um servidor SQL deve operar para sempre de maneira confiável, rápida, mas ele tem que fazer muitas tarefas e por esse motivo divide a execução dessas
tarefas por tempo ( chama-se time sharing ). Então se o sql esta atualizando um monte de dados ele vai gerar um ckeckpoint ou Ponto de verificação em
um determinado momento para gravar essas informações antes que perca tudo. Ele pára temporariamente de executar a tarefa, vai executar outra tarefa e no
final desta nova tarefa, volta para a tarefa anterior. Portanto o ckeckpoint é um ponto no tempo que o SQL cria para gerar uma 'quebra' no processo atual
e permite que outras tarefas fundamentais do processo sejam executadas, cada uma por um tempo limitado até terminar. É como um batalhão marchando, eles
marcam o passo para não perder a sincronia num desfile mas em cada 'manobra' (uma virada por exemplo) eles precisam revisar a marcação de passo e recuperar a
sincronia, é isso que faz o checkpoint, cria uma ordem para que tudo que não está certo seja acertado pelos processos do servidor.
O SQL Server gera pontos de verificação e cria controles para que a restauração até esse ponto seja possível. Digamos que o Servidor SQL parte de um
estado
estável
( onde tudo está correto ) e faz uma modificação ( grava uma atualização no disco, por exemplo ) e depois no próximo checkpoint verifica se tudo
ocorreu ok e gera um novo ponto estável nos processos do servidor e tudo se repete novamente.
Backup e o Recovery Model
Todo processo em informática é passível de falhas. O Recovery Model determina como vai ser a recuperação das informações em caso de falha.
Seja qual for o backup escolhido haverá um custo e um benefício. Quanto maior o custo maior será o benefício mas
nem todas as empresas
estão dispostas a arcar certos custos com os servidores SQL
.
Portanto é fundamental no momento da escolha do processo de backup que o pessoal de ti e da empresa estejam acordados, cientes dos riscos, das
opções que foram tomadas. Costumo fazer um documento mencionando o que está coberto e o que será perdido em caso de um acidente.
O backup esta diretamente ligado ao Recovery Model e determinará o que será recuperado e o que será perdido no caso de uma falha.
A opção Recovery Model determina a forma de recuperação do banco de dados após um desastre e as opções de backups e restore disponíveis.
Um modelo de recuperação é uma opção de configuração do banco de dados que determina o tipo de backup que se pode executar e fornece a
capacidade de restaurar os dados ou recuperá-los de uma falha.
O modelo de recuperação decide como o log de transações de um banco de dados deve ser mantido e protege as alterações de dados em uma sequência específica,
que pode ser usada posteriormente para uma operação de restauração de banco de dados.
Existe três opções de Recovery Model disponíveis: Full, Simple e bulk-Logged..
• Full: Todas as operações são mantidas no log transaction, este log nunca é trucado.
• Simple: O mínimo de operações são mantidas no log transaction, e a cada checkpoint o log
transaction é trucado.
• Bulk-Logged: O mínimo de operações é mantido, não ha suporte a restore no ponto de falha.
Cada método tem vantagens e desvantagens sobre o outro, nenhum é melhor ou pior que outro. Um se adequa melhor que outro ao seu negócio.
Recovery Model : SIMPLE
O modelo de recuperação SIMPLE é o mais simples entre os modelos disponíveis e se baseia em backups do banco de dados. Até o último backup os dados
poderão ser recuperados, depois disso até o momento da falha tudo será perdido. Isto ocorre porque não há backup do log de transações e, neste modelo, o log de
transações não são suportados.
Ele suporta backups completos (FULL), diferenciais e em nível de arquivo, mas não suporta os backups incrementais.
O Log é o calcanhar de aquiles deste modelo. O espaço do log é reutilizado sempre que ocorre a operação do ponto de verificação do processo
em segundo plano do SQL Server. A parte inativa do arquivo de log é removida e disponibilizada para reutilização.
Não há suporte para restauração pontual e de página, apenas a restauração dos dados pelos arquivos de backup.
Razões para escolher o modelo SIMPLES de recuperação de banco de dados
1-É o de menor custo portanto ideal para bancos de dados de desenvolvimento e teste.
2-Só deve ser utilizado onde a perda de dados por um período x é aceitável.
A recuperação de ponto de falha é exclusivamente para backups completos e diferenciais
• Suporta:
• Backup completo (Full Backup)
• Backup diferencial (Differencial Backup)
• Backup somente cópia (Copy-Only Backup)
• Backup de arquivo (File Backup)
• Backup parcial (Partial Backup)
Recovery Mode : FULL
Este é o melhor e portanto mais caro backup, tanto em termos de carga do servidor SQL como em custo porque ele é uma cópia FIEL do banco de dados.
Com certeza, com um backup full podemos restaurar o servidor completamente.
Nesse modelo de recuperação, todas as transações (DDL (Data Definition Language) e DML (Data Manipulation Language)) são totalmente registradas no arquivo de log
de transações.
e a sequência do log é ininterrupta o que preserva todas as informações para a restauração dos bancos de dados.
Diferentemente do modelo de recuperação Simples, o arquivo de log de transações NUNCA é truncado automaticamente durante as operações do CHECKPOINT.
É no LOG que podemos restaurar a base de dados até qualquer período de tempo coberto pelo backup.
Todas as operações de restauração são suportadas, incluindo restauração point-in-time, restauração de página e restauração de arquivos.
Razões para escolher o modelo completo de recuperação de banco de dados:
1-Suporte a aplicativos de missão crítica onde não podemos perder dados.
2-Deve ser usado em projeto e soluções de alta disponibilidade
3-Facilita a recuperação de todos os dados com perda de dados zero ou mínima
4-Se o banco de dados foi projetado para ter vários grupos de arquivos e você deseja executar uma restauração fragmentada de grupos de arquivos secundários de
leitura / gravação e, opcionalmente, grupos de arquivos somente leitura.
5-Permite a restauração point-in-time ( num ponto determinado do tempo coberto pelo backup) arbitráriamente escolhida pelo operador.
6-Permite restaurar páginas individuais de dados.
• Ele suporta todos os tipos de backups a seguir
• Backup completo
• Backup diferencial
• Backup do log de transações
• Backup somente cópia
• Backup de arquivo e / ou grupo de arquivos
• Backup parcial
Recovery Model BULK_LOGGED
Este tipo de backup é um intermediário entre o simples e o completo e por esse motivo só em situações especiais é utilizado.
É uma opção de configuração de banco de dados para fins especiais e funciona de maneira semelhante ao modelo de recuperação COMPLETO, exceto que certas
operações em massa podem ser minimamente registradas, ou seja, é registrada a ação mas o conteúdo atingido pela ação é perdido porque não é gravado
no LOG.
Este backup pode ser usado em sistemas onde praticamente nunca ninguém usa comandos de atualização em massa dos seus dados, que é o mais comum.
Sendo assim é um backup muito mais leve para o servidor porque o LOG fica menor.
O problema é que não é possível restaurar dados pontuais específicos.
Razões para escolher o modelo de recuperação de log em massa:
1-Usa a técnica mínima de registro no log para impedir o crescimento do arquivo em operações extensas ou que nunca ocorrem.
Ele suporta todos os tipos de backups:
• Backup completo
• Backup diferencial
• Backup do log de transações
• Backup somente cópia
• Backup de arquivo e / ou grupo de arquivos
• Backup parcial
Transaction Log Internals-Como funciona o log de transações internamente
O Log de transações armazena cada operação que o SQL Server faz e não é possível desligar ou não usar o Log de transações.
No banco de dados Oracle isto é possível porque ele funciona de outra maneira.
1-Sempre que houver uma transação (DDL e DML), os detalhes de cada operação serão registrados no arquivo de log de transações
2-O backup do log de transações garante durabilidade transacional e consistência dos dados usando um mecanismo conhecido como WAL
(Write-Ahead-Logging - escreve no log antes de executar a atividade).
3-As transações que ocorrem no banco de dados primeiro são registradas no arquivo de log de transações e, em seguida, os dados são gravados no disco.
4-Isso facilita o SQL Server a reverter ou avançar cada etapa do processo de recuperação
5-Permite restauração point-in-time de bancos de dados
6-O SQL Server sempre grava no arquivo de log de transações sequencialmente. Ao chegar no fim do espaço arquivo de LOG ele pode reescrever as informações
usando um ciclo de reutilização do espaço ou pode optar para crescer o log se for configurado para isso, até atingir um tamanho máximo.
O arquivo de log de transações pode ser dividido em blocos que são mapeados logicamente usando os VLFs (arquivos de log virtuais). Portanto o arquivo de log é
um mas seccionado em partes e podemos tirar backup dessas partes separadamente e independentemente.
7-Os registros de log nos blocos que não são mais necessários são considerados "inativos" e essa parte dos blocos de log pode ser truncada, ou seja, os segmentos
inativos dos blocos de log são substituídos por novas transações. Esses segmentos ou parte do arquivo de log são conhecidos como arquivos de log virtual (VLFs).
8-Qualquer VLF inativo pode ser truncado, embora o ponto em que esse truncamento possa ocorrer dependa do modelo de recuperação do banco de dados.
9-No modelo de recuperação SIMPLE, o truncamento do LOG pode ocorrer imediatamente após a ocorrência de uma operação CHECKPOINT.
As páginas no cache de dados são descarregadas para o disco, depois de "endurecer" as alterações no arquivo de log.
O espaço em qualquer VLFs que se torna inativo como resultado e é disponibilizado para reutilização
10-Um banco de dados só tem um log que pode ser dividido em vários arquivos de log, mas é obrigatório ter pelo menos um.
Ele só grava em um arquivo de log por vez e ter mais de um arquivo não aumenta a velocidade ou a taxa de transferência de gravação.
De fato, ter mais arquivos múltiplos pode resultar em degradação do desempenho, se cada arquivo não for dimensionado corretamente ou tiver tamanho diferente.
Qualquer incompatibilidade leva a uma maior duração da recuperação do banco de dados
Para bancos de dados críticos para os negócios, é recomendável iniciar backups completos do banco de dados, seguidos por uma série de backups freqüentes de logs
de transações, seguidos por outro backup completo, e assim por diante.
Como parte da operação de restauração do banco de dados, podemos restaurar o backup completo mais recente (mais diferenciais, se necessário), seguido pela
cadeia de backups de arquivos de log disponíveis, até o que cobre o momento no qual desejamos restaurar o backup. base de dados
Visão geral do modelo de recuperação
Simples
Descrição
• Não há backups de log de transações.
• No Modelo de Recuperação Simples, o log de transações é limpo automaticamente e o tamanho do arquivo é
mantido intacto.Por esse motivo, não é possível fazer backups de log nesse caso.
• Suporta apenas operações de backup completas e bulk_logged.
• Os recursos não suportados no modelo de recuperação simples são:
• envio de log,
• AlwaysOn
• espelhamento e restauração pontual
• Perda de dados : Sim. Não podemos restaurar o banco de dados para um ponto arbitrário no tempo.
Isso significa que, no caso de uma falha, só é possível restaurar o banco de dados tão atual quanto o último backup
completo ou diferencial, e a perda de dados é uma possibilidade real
• Restauração point-in-time : Não
Full
Descrição
• Suporta backups de log de transações.
• Nenhum trabalho é perdido devido a um arquivo de dados perdido ou danificado.
• O modelo de recuperação de banco de dados completo registra completamente todas as transações que ocorrem no banco de
dados.
• Pode-se escolher arbitrariamente um ponto no tempo para a restauração do banco de dados.
• Isso é possível restaurando primeiro um backup completo, o diferencial mais recente e depois reproduzindo
as alterações registradas no log de transações. Se não houver um backup diferencial, a série de logs t será aplicada.
• Suporta recuperação de dados point-in-time.
• Se o banco de dados usar o modelo de recuperação completa, o log de transações aumentará infinitamente, e
isso será um problema. Portanto, precisamos ter certeza de que fazemos backups de log de transações regularmente.
• Perda de dados: Perda de dados mínima ou nula.
• Restauração point-in-time: Essa configuração permite mais opções.
• Recuperação pontual.
Bulk-Logged (Registro em massa)
Descrição
• Esse modelo é semelhante ao Modelo de recuperação completa, pois um log de transações é mantido, mas
certas transações, como operações de carregamento em massa, são minimamente registradas, embora registre outra transação.
Isso faz com que as importações de dados em massa sejam mais rápidas e mantém o tamanho do arquivo do log de transações, mas
não suporta a recuperação pontual dos dados.
• Isso pode ajudar a aumentar as operações de carregamento em massa de desempenho.
• Reduz o uso do espaço de log usando o log mínimo para a maioria das operações em massa.
• Perda de dados: Se você executar transações no modelo de recuperação com registro em massa que possa exigir
uma restauração do log de transações, essas transações poderão ficar expostas à perda de dados.
• Restauração point-in-time: A recuperação point-in-time só é possível se as condições abaixo forem atendidas
• Atualmente, os usuários não são permitidos no banco de dados (bd in single mode).
• Se você conseguir executar novamente os processos em massa (bulk processes).
Alternando modelos de recuperação
Full and bulk-Looged - Logs completos e em massa:
• Iniciar um backup de log
• Execute operações em massa, retorne imediatamente o banco de dados ao modelo de recuperação completa
• Iniciar backup do log de transações
Simples a COMPLETO ou Diferencial
• Iniciar um backup completo (ou diferencial, se já estiver disponível)
• Agendar backups de log t
FULL ou BULK_Logged para Simple
• Desativar a tarefa de backup do log de transações
• Verifique se há um trabalho para fazer backup completo
• Visualize ou altere o modelo de recuperação de banco de dados usando as seguintes opções:
Notas :
1- É possível verificar o qual o recovery model utilizado no banco de dados pelo SSMS ou através da query abaixo:
select name, recovery_model_desc from sys.databases
2- É possível alterar o recovery model através da query abaixo as opções disponíveis são(FULL|SIMPLE|BULK_LOGGED) :
-- alterando o recovery da base de dados data para SIMPLE
alter database data set recovery SIMPLE
3- Em bases de produção é recomendado o uso do recovery model FULL com backups diferenciais de hora em hora ou num período que a perda
de dados seja tolerável.
2-Retirando backup de todas as bases da instância
Alter procedure GERA_BACKUP as begin
--CREATE procedure GERA_BACKUP as begin
declare GERA_BACKUP cursor fast_forward for
select name from master.dbo.SysDatabases
declare @database varchar(200)
declare @cmd varchar(200)
declare @data varchar(20)
declare @resultado varchar(7500)
-- msg de inicio do processo
set @data=getdate()
print 'inicio:' + @data
-- eliminando o backup do dia anterior
exec xp_cmdshell 'del C:\BKP_LOCAL_GTD01\BKP_GTD01.bak'
open GERA_BACKUP
fetch next from GERA_BACKUP into @database
while (@@fetch_status <> -1) begin
if (@@fetch_status <> -2) and (@database <> 'tempdb') and (@database <> 'master') and (@database <> 'model') and (@database <> 'msdb') begin
set @cmd = 'backup database ' + @database + ' to BKP'
-- print ''
-- print '---------------------------------------'
-- print '-- TIRANDO BACKUP DA BASE DE DADOS : --'
-- print @cmd
-- print '---------------------------------------'
exec (@cmd)
end
fetch next from GERA_BACKUP into @database
END
--msg de fim de backup
set @data = CONVERT(VARCHAR(20),getdate())
print 'fim:' + @data
end
close GERA_BACKUP
DEALLOCATE GERA_BACKUP
/*
-- formato : backup database base_dados to device
exec GERA_BACKUP
*/
3-Backup Diário das bases de dados
alter procedure proc_backup_diario as begin
--create procedure proc_backup_diario as begin
set nocount on
declare @base_dados varchar(50)
declare @data datetime
declare @periodicidade varchar(20)
declare @servidor varchar(50)
declare @utilizacao varchar(2000)
declare @site varchar(500)
declare @responsavel varchar(50)
declare @table_name varchar(150)
declare @comando varchar(2000)
declare @usuario varchar(200)
declare @senha varchar(200)
declare cursor_backup_diario Cursor for
select * from tab_controle_backup
Open cursor_backup_diario
fetch next from cursor_backup_diario
into @base_dados, @data, @periodicidade, @servidor,
@utilizacao, @site, @responsavel
while (@@fetch_status = 0 ) begin
if @periodicidade = 'DIARIA' begin
if datediff(d,@data,getdate()) >= 1 begin
print 'precisa tirar backup DIARIO : ' + @base_dados + ', data ult bkp : ' + convert(varchar(15),@data)
-- bases de dados
-- select name from master..sysdatabases where dbid > 4
--tabelas dentro de uma base de dados
--use INFO_ATIV_COM
--sp_tables @table_name = '%'
--where table_owner <> 'INFORMATION_SCHEMA'
--and table_owner <> 'sys'
-- buscando as tabelas da base de dados
set @comando = 'bcp ' + Char(34) + @base_dados + '.dbo.' + @table_name
set @comando = @comando + Char(34) + ' out ' + Char(34) + @base_dados + '.dbo.' + @table_name + '.txt'
set @comando = @comando + Char(34) + ' -e' + Char(34) + @base_dados + '_dbo_' + @table_name + '.err' + Char(34)
set @comando = @comando + ' -S' + @servidor + ' -U' + @usuario + ' -P' + @senha + ' -n'
print @comando
end
end
if @periodicidade = 'MENSAL' begin
if datediff(m,@data,getdate()) >= 1 begin
print 'precisa tirar backup MENSAL : ' + @base_dados + ', data ult bkp : ' + convert(varchar(15),@data)
end
end
fetch next from cursor_backup_diario
into @base_dados, @data, @periodicidade, @servidor,
@utilizacao, @site, @responsavel
end
close cursor_backup_diario
deallocate cursor_backup_diario
end
/*
exec proc_backup_diario
*/
4-Backup manual
-- eliminando o dispositivo de backup anterior
--sp_dropdevice 'BKP'
-- eliminando o backup anterior
exec xp_cmdshell 'DEL C:\BKP_LOCAL_GTD01\BKP_GTD01.bak'
-- criando o dispositivo de backup
/*
exec sp_addumpdevice
@devtype = 'disk',
@logicalname = 'BKP_GTD01',
@physicalname = 'C:\BKP_LOCAL'
*/
Backup e o Recovery Model
O backup esta diretamente ligado ao Recovery Model.
A opção Recovery Model determina a forma de recuperação do banco de dados após um desastre e as opções de backups
e restore disponíveis.
Um modelo de recuperação é uma opção de configuração do banco de dados que determina o tipo de backup que se pode
executar e fornece a capacidade de restaurar os dados ou recuperá-los de uma falha.
O modelo de recuperação decide como o log de transações de um banco de dados deve ser mantido e protege as alterações
de dados em uma sequência específica, que pode ser usada posteriormente para uma operação de restauração de banco de
dados.
Existe três opções de Recovery Model disponíveis: Full, Simple e bulk-Logged.
•Full: Todas as operações são mantidas no log transaction, este log nunca é trucado.
•Simple: O mínimo de operações são mantidas no log transaction, e a cada checkpoint o log
transaction é trucado.
•Bulk-Logged: O mínimo de operações é mantido, não a suporte a restore no ponto de falha.
Recovery Model : SIMPLE
• O modelo de recuperação SIMPLE é o mais simples entre os modelos disponíveis.
• Ele suporta backups completos, diferenciais e em nível de arquivo.
• Os backups do log de transações não são suportados.
• O espaço do log é reutilizado sempre que ocorre a operação do ponto de verificação do processo em segundo plano do SQL
Server.
• A parte inativa do arquivo de log é removida e disponibilizada para reutilização.
• Não há suporte para restauração pontual e de página, apenas a restauração do arquivo secundário somente leitura.
Razões para escolher o modelo simples de recuperação de banco de dados
• Mais adequado para bancos de dados de desenvolvimento e teste
• Relatórios simples ou banco de dados de aplicativos, onde a perda de dados é aceitável
• A recuperação de ponto de falha é exclusivamente para backups completos e diferenciais
• Nenhuma sobrecarga administrativa
• Suporta:
• Backup completo (Full Backup)
• Backup diferencial (Differencial Backup)
• Backup somente cópia (Copy-Only Backup)
• Backup de arquivo (File Backup)
• Backup parcial (Partial Backup)
Recovery Mode : FULL
• Nesse modelo de recuperação, todas as transações (DDL (Data Definition Language) +
DML (Data Manipulation Language)) são totalmente registradas no arquivo de log de transações.
• A sequência do log é ininterrupta e é preservada para as operações de restauração dos bancos de dados.
• Diferentemente do modelo de recuperação Simples, o arquivo de log de transações não é truncado
automaticamente durante as operações do CHECKPOINT.
• Todas as operações de restauração são suportadas, incluindo restauração point-in-time, restauração de
página e restauração de arquivos.
Razões para escolher o modelo completo de recuperação de banco de dados:
• Suporte a aplicativos de missão crítica
• Projeto de soluções de alta disponibilidade
• Para facilitar a recuperação de todos os dados com perda de dados zero ou mínima
• Se o banco de dados foi projetado para ter vários grupos de arquivos e você deseja executar uma
restauração fragmentada de grupos de arquivos secundários de leitura / gravação e, opcionalmente, grupos de arquivos
somente leitura.
• Permitir restauração point-in-time arbitrária
• Restaurar páginas individuais
• Incorrer em alta sobrecarga administrativa
• Ele suporta todos os tipos de backups a seguir
• Backup completo
• Backup diferencial
• Backup do log de transações
• Backup somente cópia
• Backup de arquivo e / ou grupo de arquivos
• Backup parcial
Recovery Model BULK_LOGGED
• É uma opção de configuração de banco de dados para fins especiais e funciona de maneira semelhante ao
modelo de recuperação COMPLETO, exceto que certas operações em massa podem ser minimamente registradas.
• O arquivo de log de transações usa uma técnica conhecida como log mínimo para operações em massa.
• O problema é que não é possível restaurar dados pontuais específicos.
Razões para escolher o modelo de recuperação de log em massa:
• Us1 a técnica mínima de log para impedir o crescimento do arquivo de log
• Se o banco de dados estiver sujeito a operações em massa periódicas
Ele suporta todos os tipos de backups:
• Backup completo
• Backup diferencial
• Backup do log de transações
• Backup somente cópia
• Backup de arquivo e / ou grupo de arquivos
• Backup parcial
Transaction Log Internals-Como funciona o log de transações internamente
O Log de transações armazena cada operação que o SQL Server faz e não é possível desligar ou não usar
o Log de transações. No banco de dados Oracle isto é possível porque ele funciona de outra maneira.
• 1-Sempre que houver uma transação (DDL e DML), os detalhes de cada operação serão registrados no arquivo de
log de transações
• 2-O backup do log de transações garante durabilidade transacional e consistência dos dados usando um
mecanismo conhecido como WAL (Write-Ahead-Logging - escreve no log antes de executar a atividade).
• 3-As transações que ocorrem no banco de dados primeiro são registradas no arquivo de log de transações e,
em seguida, os dados são gravados no disco.
• 4-Isso facilita o SQL Server a reverter ou avançar cada etapa do processo de recuperação
• 5-Permite restauração point-in-time de bancos de dados
• 6-O SQL Server sempre grava no arquivo de log de transações sequencialmente.
É de natureza cíclica.
O arquivo de log de transações é dividido em blocos de log que são mapeados logicamente usando os VLFs (arquivos de
log virtuais)
• 7-Os registros de log nos blocos que não são mais necessários são considerados "inativos" e essa parte dos
blocos de log pode ser truncada, ou seja, os segmentos inativos dos blocos de log são substituídos por novas transações.
Esses segmentos ou parte do arquivo de log são conhecidos como arquivos de log virtual (VLFs)
• 8-Qualquer VLF inativo pode ser truncado, embora o ponto em que esse truncamento possa ocorrer dependa do
modelo de recuperação do banco de dados
• 9-No modelo de recuperação SIMPLE, o truncamento pode ocorrer imediatamente após a ocorrência de uma
operação CHECKPOINT.
As páginas no cache de dados são descarregadas para o disco, depois de "endurecer" as alterações no arquivo de log.
O espaço em qualquer VLFs que se torna inativo como resultado e é disponibilizado para reutilização
• 10-Um banco de dados pode ter vários arquivos de log, mas é obrigatório ter pelo menos um.
Ele só grava em um arquivo de log por vez e ter mais de um arquivo não aumenta a velocidade ou a taxa de transferência
de gravação.
De fato, ter mais arquivos múltiplos pode resultar em degradação do desempenho, se cada arquivo não for dimensionado
corretamente ou tiver tamanho diferente.
• Qualquer incompatibilidade leva a uma maior duração da recuperação do banco de dados
Para bancos de dados críticos para os negócios, é recomendável iniciar backups completos do banco de dados,
seguidos por uma série de backups freqüentes de logs de transações, seguidos por outro backup completo, e assim
por diante.
• Como parte da operação de restauração do banco de dados, podemos restaurar o backup completo mais recente (mais
diferenciais, se necessário), seguido pela cadeia de backups de arquivos de log disponíveis, até o que cobre o momento
no qual desejamos restaurar o backup. base de dados
Visão geral do modelo de recuperação
Simples
Descrição
• Não há backups de log de transações.
• No Modelo de Recuperação Simples, o log de transações é limpo automaticamente e o tamanho do arquivo é
mantido intacto.Por esse motivo, não é possível fazer backups de log nesse caso.
• Suporta apenas operações de backup completas e bulk_logged.
• Os recursos não suportados no modelo de recuperação simples são:
• envio de log,
• AlwaysOn
• espelhamento e restauração pontual
• Perda de dados : Sim. Não podemos restaurar o banco de dados para um ponto arbitrário no tempo.
Isso significa que, no caso de uma falha, só é possível restaurar o banco de dados tão atual quanto o último backup
completo ou diferencial, e a perda de dados é uma possibilidade real
• Restauração point-in-time : Não
Full
Descrição
• Suporta backups de log de transações.
• Nenhum trabalho é perdido devido a um arquivo de dados perdido ou danificado.
• O modelo de recuperação de banco de dados completo registra completamente todas as transações que ocorrem no banco de
dados.
• Pode-se escolher arbitrariamente um ponto no tempo para a restauração do banco de dados.
• Isso é possível restaurando primeiro um backup completo, o diferencial mais recente e depois reproduzindo
as alterações registradas no log de transações. Se não houver um backup diferencial, a série de logs t será aplicada.
• Suporta recuperação de dados point-in-time.
• Se o banco de dados usar o modelo de recuperação completa, o log de transações aumentará infinitamente, e
isso será um problema. Portanto, precisamos ter certeza de que fazemos backups de log de transações regularmente.
• Perda de dados: Perda de dados mínima ou nula.
• Restauração point-in-time: Essa configuração permite mais opções.
• Recuperação pontual.
Bulk-Logged (Registro em massa)
Descrição
• Esse modelo é semelhante ao Modelo de recuperação completa, pois um log de transações é mantido, mas
certas transações, como operações de carregamento em massa, são minimamente registradas, embora registre outra transação.
Isso faz com que as importações de dados em massa sejam mais rápidas e mantém o tamanho do arquivo do log de transações, mas
não suporta a recuperação pontual dos dados.
• Isso pode ajudar a aumentar as operações de carregamento em massa de desempenho.
• Reduz o uso do espaço de log usando o log mínimo para a maioria das operações em massa.
• Perda de dados: Se você executar transações no modelo de recuperação com registro em massa que possa exigir
uma restauração do log de transações, essas transações poderão ficar expostas à perda de dados.
• Restauração point-in-time: A recuperação point-in-time só é possível se as condições abaixo forem atendidas
• Atualmente, os usuários não são permitidos no banco de dados (bd in single mode).
• Se você conseguir executar novamente os processos em massa (bulk processes).
Alternando modelos de recuperação
Full and bulk-Looged - Logs completos e em massa:
• Iniciar um backup de log
• Execute operações em massa, retorne imediatamente o banco de dados ao modelo de recuperação completa
• Iniciar backup do log de transações
Simples a COMPLETO ou Diferencial
• Iniciar um backup completo (ou diferencial, se já estiver disponível)
• Agendar backups de log t
FULL ou BULK_Logged para Simple
• Desativar a tarefa de backup do log de transações
• Verifique se há um trabalho para fazer backup completo
• Visualize ou altere o modelo de recuperação de banco de dados usando as seguintes opções:
Notas :
1- É possível verificar o qual o recovery model utilizado no banco de dados pelo SSMS ou através da query abaixo:
select name, recovery_model_desc from sys.databases
2- É possível alterar o recovery model através da query abaixo as opções disponíveis são(FULL|SIMPLE|BULK_LOGGED) :
-- alterando o recovery da base de dados data para SIMPLE
alter database data set recovery SIMPLE
3- Em bases de produção é recomendado o uso do recovery model FULL.
2-Retirando backup de todas as bases da instância
Alter procedure GERA_BACKUP as begin
--CREATE procedure GERA_BACKUP as begin
declare GERA_BACKUP cursor fast_forward for
select name from master.dbo.SysDatabases
declare @database varchar(200)
declare @cmd varchar(200)
declare @data varchar(20)
declare @resultado varchar(7500)
-- msg de inicio do processo
set @data=getdate()
print 'inicio:' + @data
-- eliminando o backup do dia anterior
exec xp_cmdshell 'del C:\BKP_LOCAL_GTD01\BKP_GTD01.bak'
open GERA_BACKUP
fetch next from GERA_BACKUP into @database
while (@@fetch_status <> -1) begin
if (@@fetch_status <> -2) and (@database <> 'tempdb') and (@database <> 'master') and (@database <> 'model') and (@database <> 'msdb') begin
set @cmd = 'backup database ' + @database + ' to BKP'
-- print ''
-- print '---------------------------------------'
-- print '-- TIRANDO BACKUP DA BASE DE DADOS : --'
-- print @cmd
-- print '---------------------------------------'
exec (@cmd)
end
fetch next from GERA_BACKUP into @database
END
--msg de fim de backup
set @data = CONVERT(VARCHAR(20),getdate())
print 'fim:' + @data
end
close GERA_BACKUP
DEALLOCATE GERA_BACKUP
/*
-- formato : backup database base_dados to device
exec GERA_BACKUP
*/
3-Backup Diário das bases de dados
alter procedure proc_backup_diario as begin
--create procedure proc_backup_diario as begin
set nocount on
declare @base_dados varchar(50)
declare @data datetime
declare @periodicidade varchar(20)
declare @servidor varchar(50)
declare @utilizacao varchar(2000)
declare @site varchar(500)
declare @responsavel varchar(50)
declare @table_name varchar(150)
declare @comando varchar(2000)
declare @usuario varchar(200)
declare @senha varchar(200)
declare cursor_backup_diario Cursor for
select * from tab_controle_backup
Open cursor_backup_diario
fetch next from cursor_backup_diario
into @base_dados, @data, @periodicidade, @servidor,
@utilizacao, @site, @responsavel
while (@@fetch_status = 0 ) begin
if @periodicidade = 'DIARIA' begin
if datediff(d,@data,getdate()) >= 1 begin
print 'precisa tirar backup DIARIO : ' + @base_dados + ', data ult bkp : ' + convert(varchar(15),@data)
-- bases de dados
-- select name from master..sysdatabases where dbid > 4
--tabelas dentro de uma base de dados
--use INFO_ATIV_COM
--sp_tables @table_name = '%'
--where table_owner <> 'INFORMATION_SCHEMA'
--and table_owner <> 'sys'
-- buscando as tabelas da base de dados
set @comando = 'bcp ' + Char(34) + @base_dados + '.dbo.' + @table_name
set @comando = @comando + Char(34) + ' out ' + Char(34) + @base_dados + '.dbo.' + @table_name + '.txt'
set @comando = @comando + Char(34) + ' -e' + Char(34) + @base_dados + '_dbo_' + @table_name + '.err' + Char(34)
set @comando = @comando + ' -S' + @servidor + ' -U' + @usuario + ' -P' + @senha + ' -n'
print @comando
end
end
if @periodicidade = 'MENSAL' begin
if datediff(m,@data,getdate()) >= 1 begin
print 'precisa tirar backup MENSAL : ' + @base_dados + ', data ult bkp : ' + convert(varchar(15),@data)
end
end
fetch next from cursor_backup_diario
into @base_dados, @data, @periodicidade, @servidor,
@utilizacao, @site, @responsavel
end
close cursor_backup_diario
deallocate cursor_backup_diario
end
/*
exec proc_backup_diario
*/
4-Backup manual
-- eliminando o dispositivo de backup anterior
--sp_dropdevice 'BKP'
-- eliminando o backup anterior
exec xp_cmdshell 'DEL C:\BKP_LOCAL_GTD01\BKP_GTD01.bak'
-- criando o dispositivo de backup
/*
exec sp_addumpdevice
@devtype = 'disk',
@logicalname = 'BKP_GTD01',
@physicalname = 'C:\BKP_LOCAL'
*/