Obtendo tamanho dos databases usando sys.master_files

Eventualmente precisamos identificar o tamanho atual dos arquivos de dados e T-log dos databases do SQL Server, e também determinar a localização dos mesmos para avaliar se haverá necessidade de realizar upgrade de disco ou mover os arquivos para outra unidade. Para obter essas informações podemos utilizar uma DMV de sistema: sys.master_files.

Sys.master_files é uma dynamic management view que retorna informações como nome dos databases, tamanho, path, descrição, entre outras. Vamos a um exemplo:

select * from sys.master_files

O resultado é exibido abaixo:

sys_master_files

Como pode ser verificado pela imagem, o resultado exibido não é funcional e alguns campos importantes, como SIZE, não retornam valores de fácil identificação. Vamos então elaborar a query de forma a retornar resultados mais “amigáveis”:

select name AS Database_Name, physical_name, (size*8) / 1024  AS SizeMB
from sys.master_files

Após execução da query, é exibido um resultado parecido com o da figura abaixo:

sys_master_files_2

Como pode ser verificado pela query, o valor retornado no campo size,que nomeie como SizeMB, é convertido para megabyte, pois o resultado padrão do campo é retornar os valores por página de dados, ou seja, 8 Kbytes, e como cada extent de página é composta de 64 Kbytes, fiz a multiplicação do valor atual da extent e dividi por 1024 para definir em megabyte.

Abraços e até a próxima.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s