Y a-t-il une requête T-SQL, je peux exécuter une base de données qui fournira une liste de toutes tables dans cette base de données ainsi que de leur utilisation actuelle de l'espace disque? Je sais que je peux le regarder dans SSMS avec la boîte de dialogue "Propriétés", et je sais utiliser la SPROP SP_SPACACEUSÉE pour le voir une table à la fois, mais j'aimerais évaluer l'utilisation de l'espace disque de toutes mes tables, commandé par une utilisation de l'espace disque la plus basse au plus bas. Nous devons réduire considérablement notre taille de données de données afin que j'aimerais voir quelles tables sont les pires délinquants. P>
3 Réponses :
Avez-vous consulté le Rapport de synthèse de l'utilisation du disque ? p>
"Pour afficher le rapport, développez le dossier de gestion, cliquez avec le bouton droit de la souris sur la collecte de données, pointez sur les rapports, pointez sur l'entrepôt de données de gestion, puis cliquez sur Résumé de l'utilisation du disque" P>
Le rapport de définition de la collection d'utilisation du disque fournit une vue d'ensemble de l'espace disque utilisé pour toutes les bases de données de l'instance de SQL Server et des tendances de la croissance pour les fichiers de données et de journaux pour chacune de ces bases de données.
- Le tableau récapitulatif affiche la taille de début (en mégaoctets) et la taille actuellede toutes les bases de données forte> installées sur le serveur surveille que le collecteur de données est surveillé.
- Les informations de croissance et de croissance moyennes fortes> sont présentées graphiquement et numériquement pour les fichiers de données et de journaux. P> blockQuote>
sys.allOcit_units code> , look au total_pages. Chaque rangée (partition d'un index) comporte 3 unités d'allocation (données, slob and lob), voir Organisation de table et d'index . Rejoindre avec sys.partitions code> pour obtenir le objet_id et l'index_id. Index_Id 0is Le tas d'une table non ordonnée, l'index ID 1 est l'index en cluster. Chaque table (index) a au moins une partition, si elle n'est pas partitionnée:
+1 semble beaucoup plus facile et plus agréable que la réponse de Joe Stefanelli!
create table #Temp (
name nvarchar(128),
[rows] char(11),
reserved varchar(18),
data varchar(18),
index_size varchar(18),
unused varchar(18)
)
insert into #Temp
exec sp_msforeachtable 'sp_spaceused ''?'''
select * from #Temp order by cast(replace(reserved,' kb','') as int) desc
En ce qui concerne la définition de la procréation, il est tiré à partir de la colonne row_count code> dans sys.dm_db_partition_stats code>. Je pense que je me souviens de regarder cela avant et qu'il inclut des lignes modifiées par des transactions non engagées.
@Martin: Merci de vérifier.
Le rang_count sur un tas peut également inclure des enregistrements transférés