Exibir o tamanho do arquivo esparso de um instantâneo de banco de dados (Transact-SQL)
Aplica-se a: SQL Server
Este tópico descreve como usar o Transact-SQL para verificar se um arquivo de banco de dados do SQL Server é um arquivo esparso e descobrir seu tamanho real e máximo. Arquivos esparsos, que são um recurso do sistema de arquivos NTFS, são usados por instantâneos do banco de dados do SQL Server.
Observação
Durante a criação do instantâneo do banco de dados, arquivos esparsos são criados usando os nomes de arquivo na instrução CREATE DATABASE. Esses nomes de arquivo são armazenados em sys.master_files na coluna physical_name . Em sys.database_files (quer seja no banco de dados de origem ou em um instantâneo), a coluna physical_name sempre contém os nomes dos arquivos de banco de dados de origem.
Verificar se um arquivo de banco de dados é um arquivo esparso
Na instância do SQL Server:
Selecione a coluna is_sparse de sys.database_files no instantâneo do banco de dados ou de sys.master_files. O valor indica se o arquivo é um arquivo esparso, como segue:
1 = O arquivo é um arquivo esparso.
0 = O arquivo não é um arquivo esparso.
Descobrir o tamanho real de um arquivo esparso
Observação
Arquivos esparsos crescem em incrementos de 64 KB (quilobyte); portanto, o tamanho de um arquivo esparso no disco sempre é um múltiplo de 64 KB.
Para exibir o número de bytes que cada arquivo esparso de um instantâneo está usando no disco no momento, consulte a coluna do SQL Server size_on_disk_bytes da exibição de gerenciamento dinâmico do , sys.dm_io_virtual_file_stats.
Para exibir o espaço em disco usado por um arquivo esparso, clique com o botão direito do mouse no Microsoft Windows, clique em Propriedadese examine o valor de Tamanho em disco .
Descobrir o tamanho máximo de um arquivo esparso
O tamanho máximo de crescimento de um arquivo esparso é o tamanho do arquivo de banco de dados de origem correspondente, no momento da criação do instantâneo. Para saber qual é este tamanho, você pode usar uma das alternativas seguintes:
Usando o prompt de comando do Windows:
Use os comandos dir do Windows.
Selecione o arquivo esparso, abra a caixa de diálogo Propriedades do arquivo no Windows, e consulte o valor Tamanho .
Na instância do SQL Server:
Selecione a coluna size em sys.database_files no instantâneo do banco de dados ou em sys.master_files. O valor da coluna size reflete o espaço máximo, em páginas SQL, que o instantâneo pode vir a usar; esse valor é equivalente ao campo Tamanho do Windows, a não ser que seja representado em número de páginas SQL no arquivo; o tamanho em bytes é:
( number_of_pages * 8192)
Exemplo
O script a seguir mostrará o tamanho em disco, em quilobytes, de cada arquivo esparso. O script também mostrará o tamanho máximo em megabytes que um arquivo esparso pode atingir. Execute o script Transact-SQL no SQL Server Management Studio.
SELECT DB_NAME(sd.source_database_id) AS [SourceDatabase],
sd.name AS [Snapshot],
mf.name AS [Filename],
size_on_disk_bytes/1024 AS [size_on_disk (KB)],
mf2.size/128 AS [MaximumSize (MB)]
FROM sys.master_files mf
JOIN sys.databases sd
ON mf.database_id = sd.database_id
JOIN sys.master_files mf2
ON sd.source_database_id = mf2.database_id
AND mf.file_id = mf2.file_id
CROSS APPLY sys.dm_io_virtual_file_stats(sd.database_id, mf.file_id)
WHERE mf.is_sparse = 1
AND mf2.is_sparse = 0
ORDER BY 1;
Confira também
Instantâneos de banco de dados (SQL Server)
sys.fn_virtualfilestats (Transact-SQL)
sys.database_files (Transact-SQL)
sys.master_files (Transact-SQL)