Eu tenho feito backups dos meus bancos de dados SQL Server 2014 Express para importação para outros servidores e notei uma diferença no tamanho do arquivo entre .bacpac
e .bak
.
Por que um .bacpac
arquivo é tão pequeno comparado a um .bak
arquivo do mesmo banco de dados?
Obrigado por quaisquer insights!
UMA
.bacpac
arquivo = esquema + dados. Observe que os dados são enviados por BCP usando o formato nativo (não legível por humanos).Você pode renomear o
.bacpac
para.zip
para ver o conteúdo real.Você pode usar
...DAC\bin\sqlpackage.exe
a linha de comando para extrair o.bacpac
conteúdo programaticamente.É um instantâneo que inclui dados do usuário + esquema do SQL Server ou banco de dados SQL do Azure.
-
.bak
extensão) = Um backup de banco de dados COMPLETO contém uma cópia completa do banco de dados e fornece um único ponto no tempo para o qual o banco de dados pode ser restaurado. Um backup completo contém alguns registros de log de transações para que o componente restaurado (banco de dados, arquivo ou grupo de arquivos) possa ser transacionalmente consistente.A
BACPAC
não é um substituto para um backup COMPLETO. É apenas um instantâneo que pode ser usado para mover um banco de dados de um servidor para outro (ou para a nuvem) e arquivar um banco de dados existente em um formato aberto .Do meu teste, abaixo estão os resultados
Um backup criado por meio do
BACKUP DATABASE
comando (.bak
) é uma cópia página por página de um banco de dados. Observe que o banco de dados SQL Server contém não apenas páginas de dados. Há também páginas com índices que podem ser grandes. Mais detalhes aquiUm backup criado usando a operação Export Data-Tier Application (
.bacpac
) é simplesmente uma linha exportada de um banco de dados em formato XML colocado em um arquivo. Você pode visualizar manualmente o conteúdo do BACPAC, basta alterar a extensão deste arquivo para .zip.O tamanho do
.bacpac
arquivo é diretamente proporcional ao número de registros em um banco de dados (levando em consideração a taxa de compactação).O tamanho do
.bak
arquivo depende não apenas dos dados, mas também do tamanho dos índices.Às vezes isso pode ser um problema, verifique por exemplo esta discussão antiga
Portanto, o
.bacpac
arquivo geralmente é menor em tamanho.Executei os testes mais simples com o banco de dados AdventureWorks e obtive esses resultados.
Devo usar .bacpac para reduzir o tamanho do meu backup?
Não.
Exportar \ Import Data Tier Application tem várias desvantagens significativas que são críticas para grandes bancos de dados:
O backup clássico criado usando o
BACKUP DATABASE
comando é desprovido dessas desvantagens, para economizar espaço, use Recuperação pontualA aplicação de camada de dados Export\Import pode ser considerada como uma forma de criar um backup apenas para bancos de dados pequenos, naqueles casos em que você não tem acesso ao sistema de arquivos. Nesse caso, não exporte o banco de dados ativo sob nenhuma circunstância, certifique-se de criar um instantâneo para exportação consistente.
Bem, a maior diferença é que os dados são compactados (usando zip) para o
.bacpac
arquivo que não é o caso de um.bak
arquivo normal. Basta comprimir o.bak
arquivo e ver que é bem menor ;)