Mergulhando em dba.stackexchange.com encontrei uma boa resposta que me ensina como abrir um .bacpac
arquivo com o File Explorer.
Eu tentei com o banco de dados AdventureWorks2008R2
e tudo o que fiz foi:
- Salve o banco de dados como
.bacpac
arquivo - Renomeie a extensão do arquivo para
.zip
- Descompacte-o
E pronto, você pode ver as tabelas do banco de dados como pastas e dentro de cada pasta você pode ver os dados brutos.
Mas quando abro a pasta Person.Address
, vejo que há 38 arquivos nela com extensão .BCP
.
No início eu ensinei que eram as páginas em que os dados são divididos. Mas essas não podem ser páginas porque pesam cerca de 67KB
. As páginas devem pesar 8KB
.
Então eu verifiquei o número de páginas com esta consulta:
-- Total # of pages, used_pages, and data_pages for a given heap/clustered index
SELECT
t.NAME AS TableName,
p.rows AS RowCounts,
SUM(a.total_pages) AS TotalPages,
SUM(a.used_pages) AS UsedPages,
(SUM(a.total_pages) - SUM(a.used_pages)) AS UnusedPages
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
WHERE
t.NAME NOT LIKE 'dt%'
AND t.is_ms_shipped = 0
AND i.OBJECT_ID > 255
GROUP BY
t.Name, p.Rows
ORDER BY
t.Name
E descobri que a Person.Address
tabela tem 689
páginas.
Então, quais são esses 38 .BCP
arquivos?
Os dados em um
BACPAC
arquivo são exportados do banco de dados usando o utilitário Bulk Copy (BCP) . Dos documentos:BACPAC
Os arquivos contêm dados que são exportados usando o formato de arquivo "nativo" do BCP, que é um arquivo do tipo binário. Os dados da tabela são simplesmente exportados em vários arquivos, em vez de um arquivo grande. Se você examinar os.bcp
arquivos em diferentes tabelas, descobrirá que o tamanho do arquivo varia, com a distorção no tamanho relacionada à variação em diferentes linhas com larguras de dados diferentes. Por exemplo, quando crio um arquivobacpac
do AdventureWorks, os.bcp
arquivos paraPurchasing.PurchaseOrderDetail
variam de 39kb a 62kb.O BCP (e, portanto,
BACPAC
a geração) não faz backup de dados copiando páginas de dados como um backup padrão, mas está fazendo consultas e exportações em nível de tabela.