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

  1. 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:

    1. Use os comandos dir do Windows.

    2. 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)