É possível listar informações sobre os arquivos (MDF / LDF) de todos os bancos de dados em um SQL Server?
Eu gostaria de obter uma lista mostrando qual banco de dados está usando quais arquivos no disco local.
O que eu tentei:
exec sp_databases
todos os bancos de dadosselect * from sys.databases
mostra muitas informações sobre cada banco de dados - mas infelizmente não mostra os arquivos usados por cada banco de dados.select * from sys.database_files
mostra os arquivos mdf / ldf domaster
banco de dados - mas não os outros bancos de dados
DB_NAME(database_id)
juntar-se asys.databases
Se você quiser obter a localização da base de dados que pode verificar Obter Todos DBs Localização .
você pode usar
sys.master_files
para obter a localização do banco de dados esys.databse
para obter o nome do banco de dadosfonte
Estou usando o script para obter um espaço vazio em cada arquivo:
O tamanho é expresso em KB.
fonte
Use [?]
suposto fazer? Ele dá um erro que não pode encontrar esse procedimento armazenado. Removê-lo mostra apenas várias vezes os bancos de dados do sistema.Eu criei esta consulta:
fonte
Você também pode tentar isso.
fonte
Executando o seguinte sql (só funcionará quando você não tiver vários arquivos mdf / ldf para o mesmo banco de dados)
irá retornar esta saída
e o resto dos bancos de dados
Se o seu TempDB tiver vários MDFs (como o meu), esse script falhará. No entanto, você pode usar
no final e retornará todos os bancos de dados, exceto os bancos de dados do sistema.
fonte
Usando este script, você pode mostrar todos os nomes de bancos de dados e arquivos usados (com exceção do banco de dados do sistema).
fonte
Este script lista a maior parte do que você está procurando e pode ser modificado de acordo com suas necessidades. Observe que está criando uma mesa permanente lá - você pode querer alterá-la. É um subconjunto de um script maior que também resume as informações de backup e trabalho em vários servidores.
fonte
LogVolumeFreeSpaceMB
ele sempre mostra a mesma quantidade para todos os arquivos, no meu caso 44756. É possível obter o espaço livre real? Ou esse é o número máximo de espaço livre na unidade onde o LDF está localizado?A consulta apresentará um erro se vários arquivos de dados (por exemplo, tipos de arquivo ".ndf") forem usados em um dos bancos de dados.
Esta é uma versão da sua consulta usando junções em vez de subconsultas.
Felicidades!
fonte
O script abaixo pode ser usado para obter as seguintes informações: 1. Informações de tamanho do banco de dados 2. FileSpaceInfo 3. AutoGrowth 4. Modelo de recuperação 5. Informações de log_reuse_backup
fonte
apenas adicionando meus 2 centavos.
se estiver procurando especificamente encontrar espaço livre total apenas em arquivos de dados ou apenas em arquivos de log em todos os bancos de dados, podemos usar a coluna "data_space_id". 1 é para arquivos de dados e 0 para arquivos de log.
CÓDIGO:
fonte
Se você renomear seu banco de dados, o MS SQL Server não renomeia os arquivos subjacentes.
A consulta a seguir fornece o nome atual do banco de dados e o nome do arquivo lógico (que pode ser o nome original do banco de dados quando foi criado) e também os nomes dos arquivos físicos correspondentes.
Nota: Descomente a última linha para ver apenas os arquivos de dados reais
Referência:
https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-master-files-transact-sql?view=sql-server-ver15
https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-databases-transact-sql?view=sql-server-ver15
fonte
Você pode usar o seguinte:
fonte