Uma pergunta recente me fez olhar para o MS Documents e me perguntar.
Existe um limite para quantos backups podem ser anexados a um único arquivo?
Por padrão, o SQL Server usa NOINIT
para anexar novos backups ao arquivo de backup antigo.
{ NOINIT | INIT } Controla se a operação de backup anexa ou substitui os conjuntos de backup existentes na mídia de backup. O padrão é anexar ao conjunto de backup mais recente na mídia (NOINIT). Fonte
Os documentos dizem claramente que a falta de espaço livre em disco fará com que um backup anexado falhe.
Se um arquivo de disco for preenchido enquanto uma operação de backup estiver anexando um backup ao conjunto de mídia, a operação de backup falhará. O tamanho máximo de um arquivo de backup é determinado pelo espaço livre em disco disponível no dispositivo de disco; portanto, o tamanho apropriado para um dispositivo de disco de backup depende do tamanho de seus backups. Fonte
A resposta em SQL Recover from .bak file with NOINIT indica que o Position
from RESTORE HEADERONLY
indica o backup individual no arquivo. Que é um campo "pequeno", que deve ter no máximo 32.767
Na maioria das vezes, ao pesquisar no Google, você encontra pessoas que estão anexando acidentalmente seus backups e não conseguem entender por que os backups são tão grandes.
Não encontro referências claras sobre quantos backups podem ser anexados, assumindo espaço em disco suficiente. O limite é 32.767 ou algo totalmente diferente?
TL:DR; É possível colocar mais de 32.000 backups em um único arquivo. Se isso é bom ou se você pode recuperar de um backup neste arquivo, não é abordado aqui.
Comecei a fazer backups de tlog ontem à noite, em um banco de dados existente (231682) sem atividade. Eu usei um loop while e um contador para que eu pudesse obter um total em execução.
sp_whoisactive
mostra informações de espera (2029ms)BACKUPTHREADsp_whoisactive
mostra informações de espera (52113 ms) O tempo de BACKUPTHREAD entre os backups diminuiu para cerca de 70 segundos por backup de log.restore headeronly from disk='G:\SQLBackups\Test_Tlog.trn'
Não tentou restaurar o banco de dados, pois seria muito doloroso. Defina o contador para iniciarSET @counter = 13717
e reiniciar a adição de backups ao mesmo arquivo com o mesmo código. Os backups são retomados e estão demorando cerca de 80 segundosRAISERROR(N'Count equals :%d', 16, 1, @counter ) WITH LOG;
para que a contagem em execução seja exibida em o log de erros do SQL Obrigado @Erik Darlingrestore headeronly from disk='G:\SQLBackups\Test_Tlog.trn'
contagem é 32.021BackupSize
e um valor de ~4.000 paraCompressedBackupSixe
. O tamanho compactado varia em cada backup.Estou compactando backups por padrão nesta instância.
Semana 3 Nota: O tamanho do arquivo e o tempo de backup estão crescendo desproporcionalmente ao número de backups. Observando os cabeçalhos tlog, vemos que o backup na posição 2 tem um tamanho de 75766 bytes e um tempo de início ao término de um segundo ou menos. O backup na posição 22919 também tem um tamanho de 75766 bytes e um tempo de início para término de um segundo ou menos. A sobrecarga de anexar os backups ao mesmo arquivo parece estar causando a lentidão. O crescimento anormal provavelmente está relacionado a tarefas de manutenção semanais que executei na instância.
Backups externos, parece que minha solução de backup externo (IBM Spectrum) não está fazendo backup do arquivo trn. Eu suspeito que isso é porque o arquivo está sendo constantemente editado.
Edite , algum tempo depois. Eu estava pensando em fazer outro experimento para testar a recuperação em cerca de 30.000 backups. Para evitar os problemas de tentar restaurar vários t-logs, analisei o uso de backups diferenciais. Criei um banco de dados vazio, fiz um backup completo e depois fiz 10 backups diferenciais. Então fiz 10 backups de t-logs e usando
RESTORE HEADERONLY FROM DISK
eu comparei o tamanho, os backups diferenciais são significativamente maiores que os t-logs, não tenho espaço suficiente para realizar um bom teste.Backups diferenciais 2-10 ( o primeiro é sempre um pouco maior )
Backups T-Logs 2-10 ( o primeiro é sempre um pouco maior )
Os backups diferenciais são cerca de 16 vezes maiores, na melhor das hipóteses eu só poderia obter cerca de 2.000 deles, não estou fazendo mais testes no momento.
Não deve haver outro limite além do tamanho máximo de arquivo possível. O arquivo de backup é gravado no formato de fita da Microsoft e novos cabeçalhos são simplesmente anexados ao arquivo.
3285.
Na verdade, isso até onde eu cheguei. O arquivo de backup chegou a 10 GB e cada backup estava demorando 10 segundos, então eu não estava disposto a esperar mais.
Usando: