Existe uma maneira simples de listar o tamanho de cada tabela em cada banco de dados em um servidor MSSQL?
Eu usei uma consulta em sys.tables para obter resultados para um único banco de dados, mas temos mais de 100 bancos de dados por servidor, portanto, uma maneira de obter os mesmos resultados, mas para todos os bancos de dados, seria ótima.
Atualmente estou tendo que criar uma lista temporária de bancos de dados de master.sys.databases e, em seguida, iterar sobre isso com um cursor, construindo uma consulta e inserindo os resultados em uma tabela temporária com EXEC sp_executeSQL @SQLString
.
Se você deseja obter isso em todo o seu ambiente, para todos os seus bancos de dados... e não se importa em usar o PowerShell... Você precisará executar isso em uma máquina que tenha pelo menos o SQL Server 2008 Management Studio instalado.
Conforme rotulado as
DataSpaceUsed
saídas do objeto SMO em "KB", você pode modificá-lo para ser a medida de sua escolha, apenas colocando a referência abreviada para ele. Então, se eu quisesse "MB":$_.DataSpaceUsed/1MB
.Na função
([string[]]$server)
, os colchetes "[]" significam que o parâmetro aceita uma matriz de objetos. Portanto, se você tiver seus servidores listados em um arquivo, poderá chamar a função assim:Eu prefiro usar
Out-GridView
inicialmente para revisar a saída, e ele copia facilmente direto para o Excel para mim. Você também pode enviar isso para os outros formatos com suporte do PowerShell, se desejar.Exemplo com captura de tela, você também pode listar os servidores:
Extraído do Stack-Overflow: obtenha o tamanho de todas as tabelas no banco de dados
Eu usei uma mesclagem de respostas anteriores:
Você pode tentar usar,
sp_msforeachdb
no entanto, alguns avisos com isso.Dito isto, tenho usado com sucesso há vários anos.
Basicamente, ele faz um cursor e uma substituição no ? com o nome do banco de dados.
Você também pode tentar a versão de substituição de Aaron Bertrand. Eu mesmo não testei, mas deve ser melhor.
O seguinte resolverá sua dúvida:
Semelhante à resposta de Fer R, mas combinado em um único conjunto de resultados. Os avisos relacionados a sp_MSforeachdb se aplicam.