Fala aee pessoal, espero que estejam todos ótimos !!
Continuando com os posts sobre backups, e agora que entendemos a diferença do Recovery Full e Recovery Simple. Vamos entender como funciona o backup, e como executá-lo.
Tipos de Backup
Antes de tudo precisamos nos atentar aos tipos de backups que podemos realizar em nosso ambiente:
Os principais modelos de backup são:
Backup Full
Backup Diferencial
Backup do Log.
Backup Full: Como o próprio nome já diz, ele efetua o backup da sua base por completo.
*Importante: Na execução do backup full, o SQL consegue salvar todas as transações que ocorrem durante a execução do mesmo.
Ainda segundo o link https://social.technet.microsoft.com/wiki/pt-br/contents/articles/13799.tipos-de-backup-no-sql-server.aspx
“Têm como propósito realizar o backup de todos os dados armazenados em um banco. Este tipo de backup leva todas as características e atributos do objeto do banco de dados. ”
Backup Diferencial: O backup diferencial, funciona a partir do backup full, salvando todas as informações do último backup full até a execução do backup diferencial.
Segundo o https://social.technet.microsoft.com/wiki/pt-br/contents/articles/13799.tipos-de-backup-no-sql-server.aspx , “o maior propósito de um backup diferencial é reduzir o número de transactions log’s backups que precisam ser restaurados em um processo de restore.”
Backup do Log: Este tipo de backup é obrigatório, quando o Recovery model estiver configurado como Full ou Bulk Logged.
Como vimos no post anterior, quando nossa base está configurada com o Recovery Model FULL, toda transação que executamos (Insert – Update – Delete), primeiramente o SQL “registra” isso no arquivo LDF (Log Database File), para depois aplicar essas transações no arquivo MDF (Master Data File).
E é justamente isso que o backup do LOG nos auxilia, efetuando o backup dessas transações e depois limpando o arquivo LDF, evitando assim, que este arquivo cresça muito, e ocupe muito espaço do disco.
Recomendo a leitura desse artigo.
Vamos colocar a mão na massa
Agora que entendemos os tipos de backups, e já sabemos que a origem de nosso backup sempre será a partir de um backup full.
Executaremos o backup full.
Quando criamos a nossa base de Estudos, ainda não conhecíamos o Recovery Model, consequentemente, a mesma buscou da base model, no meu caso estava como Simple, vamos alterar para Full.
ALTER DATABASE Estudos SET RECOVERY FULL
“Após alterar o recovery model de simple para full, o sql só consegue aplicar esta alteração após a realização do backup full” https://docs.microsoft.com/pt-br/sql/relational-databases/backup-restore/view-or-change-the-recovery-model-of-a-database-sql-server?view=sql-server-ver15
BACKUP DATABASE Estudos --- Definindo a base em que iremos efetuar o backup
TO DISK = 'D:\Backups\Estudos_Dados.bak' --- Definindo o caminho onde será salvo o backup (Certifique-se que o caminho exista)
WITH INIT, CHECKSUM, STATS = 10
--- with init: definirá se o backup será sobrescrito, ou se acumulará varios backups em um mesmo arquivo
--- init não acumula, noinit acumula, default do sql é acumular.
---stats = 10 é uma exibição do percentual do andamento do backup
Coloquei no script um comentário de cada linha, para que fique claro o que cada comando executou.
CHECKSUM: Esse carinha merece um post, devido à importância. Mas como não é nosso foco, vou deixar um artigo da Microsoft explicando sobre o tema, via de regra sempre use. https://docs.microsoft.com/pt-br/sql/relational-databases/policy-based-management/set-the-page-verify-database-option-to-checksum?view=sql-server-ver15 .
Este script retorna o page verify de cada base do seu ambiente.
SELECT name, page_verify_option_desc
FROM sys.databases
Ou ainda se preferir, basta clicar com o botão direito na base, Properties, Options, no grid, procure a opção Recovery, e analise seu Page Verify

Quero deixar uma ressalva aqui, que estou usando o SQL EXPRESS e, portanto, não tenho alguns recursos, como o COMPRESSION.

Agora vamos executar um backup diferencial.
BACKUP DATABASE Estudos
TO DISK = 'D:\Backups\Estudos_Dados_diff.bak'
WITH DIFFERENTIAL, INIT, CHECKSUM, STATS = 10
O que mudou na sintaxe, entre um script e outro foi apenas a inclusão do “DIFFERENTIAL”.

Vejam o tamanho dos dois arquivos.
Agora por fim, vamos executar o backup do Log
BACKUP LOG Estudos
TO DISK = 'D:\Backups\Estudos_Dados_Log_1.bak'
WITH INIT, CHECKSUM, STATS = 10

No GitHub do Fabricio Lima https://github.com/soupowertuning/SQLScripts, encontrei um script fantástico que verifica o histórico dos backups realizados:
SELECT
database_name, name, backup_start_date, backup_finish_date, datediff(mi, backup_start_date, backup_finish_date) [tempo (min)],
position, first_lsn, last_lsn, server_name, recovery_model, isnull(logical_device_name, ' ') logical_device_name, device_type,
type, cast(backup_size/1024/1024 as numeric(15,2)) [Tamanho (MB)], B.is_copy_only
FROM msdb.dbo.backupset B
INNER JOIN msdb.dbo.backupmediafamily BF ON B.media_set_id = BF.media_set_id
where backup_start_date >= dateadd(hh, -24 ,getdate())
and type in ('D','I','L')
and database_name = 'Estudos'
order by backup_start_date desc
Podemos percebe que estamos filtrando o type por (‘D’,’I’,’L’), D, significal Full, I, significa Diferencial, e L significa Log.

No próximo post, vamos conversar sobre o Restore.
Espero que tenham gostado.
Um abraço!!
E até a próxima!!!
Bom dia
Muito interessante, não sabia que tinha tantas opções de BK, até então eu só havia utilizado Backup Full e mesmo assim por default.