«

»

nov 22

Listar todos os arquivos da instância

Muitas vezes precisamos saber onde estão e quais são os arquivos utilizados no servidor, seja para fazer uma limpeza, para manipular os arquivos utilizados, documentar ou qualquer outra finalidade. Eu já migrei um servidor com mais de 80 bases e identificar os arquivos foi fundamental pois não havia espaço em disco para backup. Abaixo um pequeno select da tabela sys.master_files do sistema:

 

SELECT DB_NAME(database_id) AS [dbname], name AS [logical_name], physical_name AS current_file_location
FROM sys.master_files

select_master_files

 

 

Faça também um select de todo o conteúdo da tabela para ver quantas informações úteis ela pode te trazer:

 

SELECT * from sys.master_files

 

 

Evite copiar e colar. Procure digitar para memorizar o nome das tabelas de sistema e a sintaxe do SQL.

.

4 comentários

Pular para o formulário de comentário

  1. Glauco Carvalho

    tem um risco na utilização da coluna physical_name sozinha, pois mais de um registro podem ter o mesmo valor, por exemplo uma base de homologação criada a partir de uma base de produção na mesma instância. Utilizo uma pesquisa com a sys.master_files juntamente com a sys.databases para retornar também o nome logico da database. Dessa forma cada registro terá um par “Database Name x Logical Name” único. Aproveito e adicionei a query o tamanho (aproximado) e o recovery model, pois são valores que auxiliam bastante quando inicio uma análise.

    E parabéns Mercante pelo excelente trabalho e artigos publicados.

    select a.name as ‘Database Name’, b.name as ‘Logical Name’,
    a.recovery_model_desc as ‘Recovery Model’,b.physical_name as ‘Physical Name’,
    (b.size*8/1024) as SizeMB
    from sys.databases as a
    inner join sys.master_files as b
    on a.database_id = b.database_id

  2. Luiz Mercante

    Olá Glauco. É possível ter duas databases com arquivos de nomes lógicos iguais mas o physical_name refere-se aos arquivos em seus diretórios e não é possível armazenar arquivos com o mesmo nome em um diretório, portanto, não é possível ter arquivos repetidos na coluna physical_name mas agradeço a contribuição. Abs!

  3. Glauco Carvalho

    falae Mercantes! Me expressei mal, desculpe a confusão! A minha recomendação é adicionar o campo “name” da tabela “sys.databases” na query, para relacionar o physical_name com o database name ao invés de relacionar somente com logical name, pois o logical name pode estar duplicado ou não refletir o nome do database.

  4. Luiz Mercante

    Agora entendi, realmente poderia confundir já que a coluna name se refere ao Logical Name do arquivo.

    https://msdn.microsoft.com/en-us/library/ms186782(v=sql.120).aspx

    Obrigado pela contribuição.

Deixe uma resposta