begin process at 2012 05 27 03:28:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

SQL Server, MSDE, SQL Express

 > 

Requêtes

 > 

taille de toutes les tables dans une base


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

taille de toutes les tables dans une base

vendredi 1 juin 2007 à 18:10:33 | taille de toutes les tables dans une base

Ruffal

Bonjour à vous,
Serait-il possible d'avoir la requete pour obtenir la taille de toutes les tables dans une base sous sql server 2005 ?

Merci à vous tous,

Cdt,

Richard 
samedi 2 juin 2007 à 18:11:41 | Re : taille de toutes les tables dans une base

nhervagault

Administrateur CodeS-SourceS
Salut Voici un debut de solution USE pubs EXEC sp_spaceused 'titles' La suite est peut etre dans ce post de christian http://www.sqlfr.com/codes/SQL-SERVER-2005-RECHERCHE-CHAMPS-LEURS-NOMS-MULTI_42129.aspx bon sql
lundi 4 juin 2007 à 15:59:29 | Re : taille de toutes les tables dans une base

Ruffal

Salut,

Merci beaucoup pour ton aide mais malheuresement non :

Je cherche juste un scripts pour avoir la taille des tables (en mo, ko etc...) d'une base de donnée.

Merci,

Richard
vendredi 12 juin 2009 à 15:18:02 | Re : taille de toutes les tables dans une base

NonoNantes

Salut,
C'est peut-être un peu tard, mais ce topic m'a aidé à trouver la réponse:
Le sp_spacused, fait bien ce que je peux pour une table, et je voulais la même chose pour toutes les tables,
alors j'ai regardé ce que faisait le sp_spaceused, je m'en suis inspiré et voilà ce que j'ai fait :
(ca liste les tables utilisateurs de la base et donne le volume occupé par les données et par les indexs)

select nomTable= object_name(p.object_id),
        lignes = sum(
                CASE
                    When (p.index_id < 2) and (a.type = 1) Then p.rows
                    Else 0
                END
            ),
        'mémoire (kb)' = ltrim(str(sum(a.total_pages)* 8192 / 1024.,15,0)) ,
        'données (kb)' = ltrim(str(sum(
                CASE
                    When a.type <> 1 Then a.used_pages
                    When p.index_id < 2 Then a.data_pages
                    Else 0
                END
            ) * 8192 / 1024.,15,0)),
        'indexs (kb)' = ltrim(str((sum(a.used_pages)-sum(
                CASE
                    When a.type <> 1 Then a.used_pages
                    When p.index_id < 2 Then a.data_pages
                    Else 0
                END) )* 8192 / 1024.,15,0))
       
    from sys.partitions p, sys.allocation_units a ,sys.sysobjects s
    where p.partition_id = a.container_id
        and p.object_id = s.id and s.type = 'U'    -- tables de type Utilisateur (exclusion des tables système
    group by p.object_id
    order by object_name(p.object_id)

Voilà !

NN
lundi 22 juin 2009 à 16:02:45 | Re : taille de toutes les tables dans une base

nivsql

Je vous proposerais une approche légerement différentes pour optenir ce genre de résultats.
Cette requete présente pour chaque table de chaque schéma la taille de chaque index en Kilo bytes ainsi que le nombres de lignes qu'ils contiennent (SQL 2005 permet la création d'index filtré contenant moins de ligne que la table). Si la table n'a pas d'index cluster la ligne HEAP donne la taille de l'espace "données" de la table, sinon cette espace est celui de l'index cluster.
L'option WITH ROLLUP dans le group by permet d'afficher des totaux par Table, Schéma et bien sur le total final pour la base (le nombre de ligne "de la base" est peu pertinant).

WITH

table_space_usage --Création d'une CTE pour reccupérer les informations voulues

(

schema_name, table_name, index_name, used, reserved, ind_rows, tbl_rows)

as

(

select

s.name,

o

.name,

coalesce(i.name,'HEAP'),-- Les tables HEAP n'ont pas d'index Cluster

p

.used_page_count * 8,

p

.reserved_page_count * 8,

p

.row_count,

casewhen i.index_id in(0,1)then p.row_count else 0 end

FROM

sys.dm_db_partition_statsas p

INNER

JOINsys.objectsas o

on

o.object_id= p.object_id

INNER

JOINsys.schemasas s

on

s.schema_id= o.schema_id

LEFT

OUTERJOINsys.indexesas i

on

i.object_id= p.object_idand i.index_id = p.index_id

WHERE

o.type_desc ='USER_TABLE'

AND

o.is_ms_shipped = 0

)

-- puis intérrogation de la CTE avec mise en forme

select

t.schema_name, t.table_name,

coalesce(t.index_name,'TOTAL')as index_name,

sum(t.used)as used_in_kb,

sum(t.reserved)as reserved_in_kb,

casegrouping(t.index_name)when 0 thensum(t.ind_rows)elsesum(t.tbl_rows)endasrows

FROM

table_space_usage as t

GROUP

BY t.schema_name, t.table_name, t.index_name

WITH

ROLLUP-- Attention cette option est en cours de déprécation !

ORDER

BY

grouping

(t.schema_name), t.schema_name,

grouping

(t.table_name), t.table_name,

grouping

(t.index_name), t.index_name
lundi 22 juin 2009 à 16:07:39 | Re : taille de toutes les tables dans une base

nivsql

En plus lisible (je me suis fais avoir pour mon premier poste).

WITH table_space_usage --Création d'une CTE pour reccupérer les informations voulues

( schema_name , table_name, index_name, used, reserved, ind_rows, tbl_rows)

as (

select s.name,

       o.name,

         coalesce (i.name,'HEAP'),-- Les tables HEAP n'ont pas d'index Cluster

       p.used_page_count * 8,

       p.reserved_page_count * 8,

       p.row_count,

       case when i.index_id in(0,1)then p.row_count else 0 end

FROM sys.dm_db_partition_stats as p

INNER JOIN sys.objects as o

on o.object_id= p.object_id

INNER JOIN sys.schemas as s

on s.schema_id= o.schema_id

LEFT OUTER JOIN sys.indexes as i

on i.object_id= p.object_idand i.index_id = p.index_id

WHERE o.type_desc ='USER_TABLE'

AND o.is_ms_shipped = 0

) -- puis intérrogation de la CTE avec mise en forme

select t.schema_name, t.table_name,

       coalesce (t.index_name,'TOTAL')as index_name,

       sum (t.used)as used_in_kb,

       sum (t.reserved)as reserved_in_kb,

         case grouping (t.index_name)when 0 thensum(t.ind_rows)elsesum(t.tbl_rows)endasrows

FROM table_space_usage as t

GROUP BY t.schema_name, t.table_name, t.index_name

WITH ROLLUP -- Attention cette option est en cours de déprécation !

ORDER BY

grouping ( t.schema_name), t.schema_name,

grouping ( t.table_name), t.table_name,

grouping ( t.index_name), t.index_name

 

jeudi 25 juin 2009 à 13:23:48 | Re : taille de toutes les tables dans une base

NonoNantes

Bonjour,

Effectivement, ce script donne un résultat plus détaillé par index.
Mais je pense que la demande initiale de Ruffal était pas si poussée. En tout cas, pour mon besoin, c'est surtout la ligne TOTAL qui m'intéresse.
(Je note au passage que le détail des résultats comporte quelques octets de différence entre ce script et le mien, je ne sais pas lequel à tort ou raison, mais dans l'esprit ca permet de cibler les plus gourmands en espace.)

Merci.
NN


Cette discussion est classée dans : base, taille, tables


Répondre à ce message

Sujets en rapport avec ce message

Afficher les tables d'une ou plusieurs bases [ par Rouk ] Bonjour,Je developpe en vb.net avec une connexion a une base Sql.Je souhaiterai afficher dans une ComboBox la liste de base Sql et suite a cela affich mySql => Exporter les scripts des tables d'une base [ par nitrique ] Bonjour @ tous, J'aimerais (comme le dit le titre) exporter les scripts des tables d'une base sous mySql (avoir les: insert into).Un peu comme le fait Je veux dupliquer une base de données [ par salimdz2004 ] Salut Je veux dupliquer une base de données avec un autre nom mais avec les tables vide J’ai un programme de comptabilité et je veux faire jointures entre deux base [ par xzonz ] bonjour a toutes et tousune petite question simplej'aimerais savoir si il est possible de faire une jointure sur deux tables qui sont dans des basesdi Supprimer une table sans savoir le nom [ par Ylaosusdiande ] Salut !!Dans un projet de viewer de bases sql!! je dois supprimer toutes les tables d'une base !! mais je ne conais ni le nom des tables ni celui de l lister les tables d'une base de donnée SQL SERVER [ par romagny13 ] Bonjour ,je voudrais savoir comment lister les tables d'une base de donnée SQL SERVER ?merci++ Liste tables / taille d'une bd ? [ par pablo_cg ] Bonjour, je me perds pour écrire une requête permettant de me sortir la liste des tables avec leur taille (en Mo) d'une base de données SQL Server.Que Structure d'une base [ par casy ] Salut à tous,2nd question de la journée, je viens pas souvent mais quand je viens, .....Bref, je voudrais savoir s'il existe un moyen ou un outil pour Taille de donnée sur SQLserver 2000 [ par ehmarc ] Salut,J'ai effacer 140Go (via des drop table) sur une base de donnée sql server 2000 (taille totale de la base 900Go) le problème c'est que ma bdd n'a tableau qui regroupe deux tableaux [ par nodnod32 ] bonjour, j'ai deux tables de taille 10 qui sont classés par date, je voudrais regrouper le contenu de ces deux tables dans uen autre table mais que ca


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,526 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales