Existe uma maneira simples de listar o tamanho de todas as tabelas em todos os bancos de dados em um servidor MSSQL?
Usei uma consulta no sys.tables para obter resultados para um único banco de dados, mas temos> 100 bancos de dados por servidor, portanto, seria ótimo obter os mesmos resultados, mas para todos os bancos de dados.
Atualmente, estou tendo que criar uma lista temporária de bancos de dados a partir de master.sys.databases e iterar sobre isso com um cursor, criando uma consulta e inserindo os resultados em uma tabela temporária com EXEC sp_executeSQL @SQLString
.
sql-server
Cilíndrico
fonte
fonte
Respostas:
Se você deseja fazer isso em todo o seu ambiente, em todos os seus bancos de dados ... e não se importa em usar o PowerShell ... Você precisará executá-lo em uma máquina que tenha pelo menos o SQL Server 2008 Management Studio instalado.
Conforme rotulado como o
DataSpaceUsed
objeto SMO gera em "KB", você pode modificá-lo para que seja a medida de sua escolha, apenas colocando a referência abreviada para ele. Então, se eu queria "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 da seguinte maneira:Prefiro usar
Out-GridView
inicialmente para revisar a saída e ela copia facilmente diretamente para o Excel para mim. Você também pode enviar isso para os outros formatos suportados do PowerShell, se desejar.Exemplo com captura de tela, você também pode listar os servidores:
fonte
Retirado do Stack-Overflow: obtenha o tamanho de todas as tabelas no banco de dados
fonte
Eu usei uma mesclagem de respostas anteriores:
fonte
Você pode tentar usar
sp_msforeachdb
alguns avisos com isso.Dito isto, eu o uso 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 tentei, mas deveria ser melhor.
fonte
A seguir, você resolverá sua pergunta:
fonte