Por que um arquivo .bacpac é tão pequeno em comparação com um arquivo .bak do mesmo banco de dados?

39

Fiz backups dos meus bancos de dados do SQL Server 2014 Express para importação para outros servidores e notei uma diferença no tamanho do arquivo entre .bacpace .bak.

Por que um .bacpacarquivo é tão pequeno comparado a um .bakarquivo do mesmo banco de dados?

Obrigado por qualquer insight!

Chris
fonte

Respostas:

42

UMA

  • .bacpacfile = Esquema + Dados. Observe que os dados são eliminados por BCP usando o formato nativo (não legível por humanos).

    • Você pode renomear o .bacpacpara .zippara ver o conteúdo real.

    • Você pode usar a ...DAC\bin\sqlpackage.exelinha de comando para extrair o .bacpacconteúdo programaticamente.

    • É um instantâneo que inclui dados do usuário + esquema do SQL Server ou do Banco de Dados SQL do Azure.

-

  • Backup (geralmente possui .bakextensão) = Um backup COMPLETO do banco de dados contém uma cópia completa do banco de dados e fornece um único momento no 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 se tornar transacionalmente consistente.

A BACPACnão substitui 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

insira a descrição da imagem aqui

Kin Shah
fonte
3
Então, quais informações estão faltando .bacpac que o arquivo .bak possui, que o torna menor?
AllTradesJack
11
O arquivo de log é provavelmente o maior motivo para a diferença de tamanho.
Paul Spangle 17/02
6
Eu diria que também não há dados de índice no .bacpac, o que provavelmente será um grande colaborador do tamanho do arquivo.
Rory
9
Nesse caso, quando você restaura o .bacpac, você precisa reconstruir os índices de alguma forma ou isso é feito automaticamente?
jocull