Pergunta

Existem procs armazenados do sistema para relatar as estatísticas e metadados de um banco de dados próprio no SQL Server 2005?

O que eu preciso é uma maneira rápida de saída de uma lista de tabelas, o tamanho de cada tabela, o número de linhas em cada tabela e assim por diante. procs armazenados para tabelas individuais e metadados também seria útil.

Advice apreciado.

Foi útil?

Solução

Sim, as tabelas de dicionário de dados vai deixar você fazer isso. As principais tabelas no dicionário de dados são sys.objects , sys.columns , sys.indexes , sys.foreign_keys e sys.sql_modules . Para um exemplo de uma variedade de consultas que usam os dados do sistema de dicionário para engenharia reversa de um banco de dados para um script SQL, dar uma olhada em este stackoverflow postagem.

Obtendo o uso do espaço é um pouco mais complicado de fazer a partir dos dados dictionarybut sp_spaceused vai fazer isso por uma única tabela. Você pode quebrar isso com sp_msforeachtable para iterar sobre uma conjunto de tabelas e obter o relatório para todas as tabelas.

Outras dicas

Dê uma olhada nas exibições do sistema, particularmente information_schema.tables. Estes procs também irá receber uma grande quantidade de dados que você está procurando.

sp_helpdb dbname
sp_help objectname
sp_spaceused tablename

Em vez de consultar os sysobjects etc ... tabelas diretamente, você pode usar a exibição INFORMATION_SCHEMA.

Na verdade, o sysobjects foi uma mesa em SQL SErver2000, mas em SQL 2005, ele é implementado como um view, e é mantido para preservar a compatibilidade com versões anteriores.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top