Estamos usando 6 bancos de dados no total para um aplicativo e só podemos compartilhar 4 TB de espaço entre todos os 6 bancos de dados de crescimento automático (via armazenamento SAN).
Gostaria de escrever uma consulta (relatório) para um único banco de dados indicando os atributos "Espaço alocado atualmente" e "Espaço livre disponível" na opção Tarefas > Reduzir > Banco de dados no SQL Server Management Studio.
Em seguida, gostaria de converter esses números em TB e totalizar cada banco de dados para obter uma estimativa aproximada de quanto espaço resta. Esses campos podem ser acessados por meio de uma consulta T-SQL? Se sim, como seria a consulta?
Aqui está a consulta que o Management Studio usa para preencher esses números:
Você precisa realizar matemática aqui, assim como o Management Studio faz para obter os mesmos números. Além disso, a junção à esquerda
sys.internal_tables
parece supérflua na melhor das hipóteses. Então, ajustando essa consulta para corresponder à sua saída ideal:Com esta atualização, supondo que seu banco de dados não mude nesse meio tempo, ele deve render:
Fazendo algumas contas simples e isolando apenas os três números que você deseja:
A consulta de Aaron é boa, mas como alternativa, uso esta consulta das consultas DMV
de Glenn Berry (você precisaria alterar a matemática para TBs):
Aqui está algum SQL que pode funcionar para você.
É SQL antigo, mas ainda funciona. Um dia desses vou reescrevê-lo para usar o sys.database_files como a resposta de Aaron.
Depois de trabalhar em uma pergunta semelhante ( Querying True Physical Database File Sizes ), acho que uma consulta que exibe os diferentes tamanhos de arquivo, separados, por exemplo, por log e banco de dados, e o tamanho do arquivo no disco seria mais útil para a maioria dos usuários.
Isso inclui o tamanho do arquivo do sistema e quanto espaço está ocupando no disco, bem como o tamanho do arquivo SQL, o espaço SQL usado e, por extensão, o espaço livre do SQL. Inclui o caminho completo do arquivo que está sendo avaliado. Um usuário precisaria alterar o cálculo para 'Size_On_Disk_Bytes' se o disco for formatado usando um tamanho de alocação diferente do padrão (4096 bytes).
Além disso, essa consulta retornará informações sobre o espaço na unidade de volume que hospeda os arquivos. O usuário precisará ter acesso a sys.master_files.
Algo que eu montei. Você PRECISA DO POWERSHELL em seu SQL Server para executar isso. Não tenho certeza da versão. Isso levará os tamanhos das unidades e relatará os tamanhos dos arquivos e o espaço livre, bem como o espaço livre em disco.
Não é 100% original e partes dele eu encontrei em outros lugares na internet e coloquei tudo junto. Foi um PITA para encaixar nas margens certas, então você pode ter que brincar com os parênteses
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