J'ai une base de données SQL Server 2008 R2 utilisée par plusieurs programmes déployés.
Question: Existe-t-il un moyen simple d'afficher la quantité d'espace consommée par chaque table pour toutes les tables de la base de données et de distinguer l'espace logique de l'espace disque?
Si j'utilise SSMS (Management Studio), les propriétés de stockage affichées pour la base de données lisent 167 Mo avec 3 Mo «disponibles» (environ la bonne taille, mais je suis préoccupé par les 3 Mo disponibles - est-ce une limite à se soucier de , en supposant que je sais que j'ai suffisamment d'espace disque?)
Je peux explorer chaque table, mais cela prend une éternité.
Je sais que je peux écrire mes propres requêtes et tester, mais j'aimerais savoir s'il existe déjà un moyen simple (intégré?) De le faire.
Il a été répondu sur Stack Overflow:
la source
La requête liée à et copiée par @Nelson est inexacte: elle ignore les vues indexées, les index de texte intégral, les index XML, etc.
Si vous voulez une requête qui inclura tout sans s'exécuter
sp_spaceused
viasp_MSForEachTable
, alors j'en ai déjà posté deux variantes (une ici sur DBA.StackExchange et l'autre sur StackOverflow) donc je ne les copierai pas ici:Pour chaque table / vue indexée: sp_spaceused - comment mesurer la taille en Go dans toutes les tables en SQL
Pour chaque index: utilisation de l'espace sur sys.allocation_units et sp_spaceused
la source
Juste pour le plaisir, voici une requête qui générera les mêmes données que le rapport dans la réponse de nateirvin
D'accord, parce que je me déteste vraiment , j'ai écrit une requête qui va générer les résultats du rapport, le formater sous forme de tableau HTML et l'envoyer par e-mail. Faire correspondre les couleurs d'arrière-plan du rapport est laissé comme exercice au lecteur.
la source