Esiste un modo rapido per segnalare i metadati del database in SQL Server 2005?
-
19-08-2019 - |
Domanda
Esistono processi memorizzati nel sistema per segnalare statistiche e metadati di un database stesso in SQL Server 2005?
Ciò di cui ho bisogno è un modo rapido per generare un elenco di tabelle, le dimensioni di ciascuna tabella, il numero di righe in ciascuna tabella e così via. Anche i proc memorizzati per singole tabelle e metadati sarebbero utili.
Consiglio apprezzato.
Soluzione
Sì, le tabelle del dizionario dei dati ti consentiranno di farlo. Le tabelle principali nel dizionario dei dati sono sys.objects , sys.columns , sys.indexes , sys.foreign_keys e sys.sql_modules . Per un esempio di una serie di query che utilizzano il dizionario dei dati di sistema per decodificare un database in uno script SQL, dai un'occhiata a questa pubblicazione di stackoverflow.
L'utilizzo dello spazio è un po 'più complicato rispetto al dizionario dei dati, ma sp_spaceused lo farà per un singolo tavolo. Puoi racchiuderlo con sp_msforeachtable per iterare su un set di tabelle e ottieni il rapporto per tutte le tabelle.
Altri suggerimenti
Dai un'occhiata alle viste di sistema, in particolare information_schema.tables. Questi proc riceveranno anche molti dei dati che stai cercando.
sp_helpdb dbname
sp_help objectname
sp_spaceused tablename
Invece di interrogare direttamente le tabelle sysobjects
ecc ..., puoi utilizzare la vista INFORMATION_SCHEMA
.
In effetti, sysobjects
era una tabella in SQL SErver2000
, ma in SQL 2005
, è implementato come una vista
ed è mantenuto per preservare la compatibilità con le versioni precedenti.