IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

taille des tables sql server 2000


Sujet :

Développement SQL Server

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 72
    Points : 35
    Points
    35
    Par défaut taille des tables sql server 2000
    Bonjour a tous,

    Comment faire pour avoir la liste des tables d'une base de données bien précise et d'avoir la taille qu'occupe chacune de ses table?

  2. #2
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Points : 69
    Points
    69
    Par défaut
    bonjour,

    la requête suivante :
    select TABLE_NAME
    from INFORMATION_SCHEMA.TABLES
    va vous donner la liste des tables pour la base concernée.

    Dans les propriétés de la table vous avez la taille occupée des données et des index. Par contre je ne sais pas si, et où, cette info est disponible en base.

    Christian

  3. #3
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Points : 2 856
    Points
    2 856
    Par défaut
    Remplace Northwind par le nom de ta base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    --======================================
    -- Auteur : Etienne ZINZINDOHOUE
    --======================================
     
    USE tempdb
    GO
    IF OBJECT_ID('#T_AUDIT_TABLES', 'U') IS NOT NULL
      DROP TABLE #T_AUDIT_TABLES
    GO
    CREATE TABLE #T_AUDIT_TABLES
    	(
    	[NomTable] nvarchar(255),
    	[NbLignes] char(11) NULL,
    	[EspacePrevu] varchar(18) NULL,
    	[TailleData] varchar(18)  NULL,
            [TailleIndex] varchar(18)  NULL,
            [EspaceInutilise] varchar(18) 
    	)  ON [PRIMARY]
    GO
     
    USE Northwind -- Mets ici ta base 
     
    DECLARE @TabEnCoursTraitement NVARCHAR(255),@SQL NVARCHAR(255), @DEL NVARCHAR (255)
    CREATE TABLE #LIST_TABLES (nom_table varchar (255))
    INSERT INTO #LIST_TABLES 
    SELECT TABLE_SCHEMA+'.'+TABLE_NAME AS [NomTable]
    FROM information_schema.tables
    WHERE table_type='BASE TABLE'
    ORDER BY [NomTable]
    -- Tant qu'il y a des lignes dans la table temporaire
    WHILE EXISTS ( SELECT   nom_table 
                   FROM     #LIST_TABLES
                  )  
    BEGIN
    --Se positionner sur la 1ère ligne de la table temporaire
    SET @TabEnCoursTraitement  = (SELECT TOP 1 nom_table FROM #LIST_TABLES)
    -- Insert les infos de la table en cours de traitement dans la table de l'AUDIT 
    SET @SQL = 'INSERT INTO #T_AUDIT_TABLES EXEC sp_spaceused '''+ @TabEnCoursTraitement + ''';'
    EXEC (@SQL);  
    -- Supprimer la table traitée de la table temporaire
    SET @DEL = 'DELETE FROM #LIST_TABLES WHERE nom_table = '''+ @TabEnCoursTraitement + ''';'
    EXEC (@DEL)
    END
    --Supprimer la table temporaire
    DROP TABLE #LIST_TABLES
     
    -- AUDIT DES TABLES DE LA BASE DE DONNEES
     
    --> Les 10 tables les plus grosses
    SELECT TOP 10 NomTable
    , cast(replace([TailleData],'KB','') as int) AS [TailleData (en Ko)]
    , cast(replace([TailleIndex],'KB','') as int) AS [TailleIndex (en Ko)]
    ,cast(replace([EspacePrevu],'KB','') as int) AS [EspaceReservé (en Ko)]
    ,cast(replace([EspaceInutilise],'KB','') as int) AS [EspaceInutilisé (en Ko)]
    FROM #T_AUDIT_TABLES
    ORDER BY [TailleData (en Ko)] DESC
     
    --> Les 10 tables ayant le plus de lignes
    SELECT TOP 10 NomTable, cast([NbLignes] as int) AS [Nombre de Lignes]
    FROM #T_AUDIT_TABLES
    ORDER BY [Nombre de Lignes] DESC
     
    --Supprime la table temporaire
    DROP TABLE #T_AUDIT_TABLES
    Etienne ZINZINDOHOUE
    Billets-Articles

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 736
    Points : 52 448
    Points
    52 448
    Billets dans le blog
    5
    Par défaut
    y'a quand même plus simple en passant par les vues DM....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT SCHEMA_NAME(o.schema_id) AS TABLE_SCHEMA, 
           o.name AS TABLE_NAME,
           8 * SUM(a.used_pages) AS VOLUME_KO
    FROM    sys.objects AS o
            INNER JOIN sys.indexes AS i
                  ON o.object_id = i.object_id
            INNER JOIN sys.partitions AS p 
                  ON p.object_id = i.object_id 
                     AND p.index_id = i.index_id
            INNER JOIN sys.allocation_units AS a 
                  ON a.container_id = p.partition_id
    GROUP BY SCHEMA_NAME(o.schema_id), o.name
    ORDER BY 1, 2;
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Points : 2 856
    Points
    2 856
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    y'a quand même plus simple en passant par les vues DM....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT SCHEMA_NAME(o.schema_id) AS TABLE_SCHEMA, 
           o.name AS TABLE_NAME,
           8 * SUM(a.used_pages) AS VOLUME_KO
    FROM    sys.objects AS o
            INNER JOIN sys.indexes AS i
                  ON o.object_id = i.object_id
            INNER JOIN sys.partitions AS p 
                  ON p.object_id = i.object_id 
                     AND p.index_id = i.index_id
            INNER JOIN sys.allocation_units AS a 
                  ON a.container_id = p.partition_id
    GROUP BY SCHEMA_NAME(o.schema_id), o.name
    ORDER BY 1, 2;
    A +
    Au fait, c'est sous SQL 2000
    Etienne ZINZINDOHOUE
    Billets-Articles

Discussions similaires

  1. Utilisation des tables SQL Server 2005 dans Delphi
    Par xeak2008 dans le forum Débuter
    Réponses: 2
    Dernier message: 27/08/2008, 14h35
  2. libération des objets SQL SERVER 2000 et ASP
    Par patdodos dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 27/11/2007, 15h45
  3. Réponses: 2
    Dernier message: 15/11/2007, 18h43
  4. Requête paramètrer sur table SQL Server 2000
    Par Andry dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/06/2007, 12h24
  5. Outil pour comparer des bases SQL Server 2000
    Par plutonium719 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/08/2006, 08h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo