Eu tenho um banco de dados no SQL Server 2008 que cresce o tempo todo e gostaria de saber quais tabelas causaram maior crescimento nos últimos 6 meses.
sql-server
sql-server-2008
kashif
fonte
fonte
last_updated_at
carimbo de data / hora, você pode fazer algumas boas sugestões.Respostas:
O SQL Server não rastreia essas informações. Você precisaria de algum tipo de monitoramento (seja uma ferramenta ou caseiro) que mantenha instantâneos do espaço da tabela ao longo do tempo, daqui para frente. Isso pode ser simples ou complexo:
sys.dm_db_partition_stats
;Além de já ter implementado um ou mais desses métodos, ou alguém ter inventado uma máquina do tempo, não há realmente nenhuma maneira de descobrir o tamanho de uma tabela há 6 meses, ou duas semanas atrás ou 20 minutos atrás.
fonte
Se você não capturou e armazenou essas métricas de alguma forma, não há como ver o histórico. No entanto, você pode facilmente ver quais tabelas estão usando mais disco agora, se isso ajudar.
fonte
Eu executo isso diariamente em um banco de dados de clientes para acompanhar o crescimento de tabelas individuais ao longo do tempo.
fonte
Eu tenho um agendamento de scripts SQL em um trabalho para executar toda semana. Tente escrever um script que obtenha todas as informações de sp_spaceused, sys.schemas e sys.tables. e Coloque isso em uma tabela com a data criada. (e você pode começar a monitorar o futuro)
Mas se você deseja descobrir o crescimento da tabela nos meses anteriores e se você não configurou nenhum script ou trabalho, provavelmente precisará restaurar o backup em um ambiente de teste e olhar para a tabela mais alta e comparar o quanto ela cresceu através do tempo.
fonte
Como faço no MySQL sem ferramentas extras:
Execute uma consulta como "SHOW TABLE STATUS" e salve o resultado em uma tabela com um campo de carimbo de data / hora extra.
Com esses dados, você tem um histórico de cada tabela e pode escolher suas tabelas quanto ao tamanho dos dados, linhas ou maior diff. hora extra.
Como os dados de status não têm muitos bytes, você pode executá-los com um cronjob diário. Funciona perfeito, fácil e de graça com comandos a bordo.
.
Mesmo procedimento como o link que Marian postou antes. O comando MS T-SQL deve ser algo como "SELECT * FROM INFORMATION_SCHEMA.TABLES" - apenas no google. Encontrei 2 soluções possíveis em segundos:
Listando todas as tabelas em um banco de dados e suas contagens e tamanhos de linha: http://www.sqlmatters.com/Articles/Listing%20all%20tables%20in%20a%20database%20and%20their%20row%20counts%20and%20sizes.aspx
SQL SERVER - Consulta para encontrar o número de linhas, colunas e ByteSize para cada tabela: http://blog.sqlauthority.com/2007/01/10/sql-server-query-to-find-number-rows-columns-bytesize- para cada tabela no banco de dados atual, encontre a maior tabela no banco de dados /
fonte