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 :

Connaitre la taille d'une base de données via une requète en ADO


Sujet :

Développement SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 199
    Points : 70
    Points
    70
    Par défaut Connaitre la taille d'une base de données via une requète en ADO
    Bonjour,

    Je voudrais obtenir via une requète sql la taille d'une base de données (ou de toutes les base de données)
    j'ai vu cela : http://sqlserver.developpez.com/faq/...ase-de-donnees

    Mais je ne crois qu'il soit possible de requèter le résultat...

    Y a t'il une solution ?

    MErci
    Sylo

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 147
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut
    Consulte notamment les vues sysdatabase et sysfiles
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 756
    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 756
    Points : 52 534
    Points
    52 534
    Billets dans le blog
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT SUM(size) / 8192.0 AS BD_SIZE_MB
    FROM   sys.database_files
    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/ * * * * *

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 199
    Points : 70
    Points
    70
    Par défaut
    Merci...
    Cela me donne 7,89 MB ce qui me parait un peut petit
    Mais dur mon disque dur, j'ai le ".mdf" qui fait 192 MB et le ".ldf" qui fait 313 MB

    Peut-être que je n'ai pas été claire. Je voudrais la taille de la base sur le disque dur...

    Du coup, je voudrais plutôt obtenir 192+313 = 505 MB

    Par avance Merci
    Sylo

  5. #5
    Membre éclairé Avatar de GeekMokona
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2011
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2011
    Messages : 327
    Points : 817
    Points
    817
    Par défaut
    la taille d'une base de données et la taille de ces fichiers c'est 2 choses différentes.

    Pour la taille des fichiers ces la vue système sys.sysfiles
    Séverine Capon - Consultante MS BI
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Merci de dés que le commentaire vous a aidé ou de marquer si votre problème est résolu

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 199
    Points : 70
    Points
    70
    Par défaut
    Super, Merci
    La requète, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select size*8/1024 from sys.sysfiles
    Donne la taille en MB des deux fichiers

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 199
    Points : 70
    Points
    70
    Par défaut
    Je reviens sur ce poste parce que je réalise que la requète me renvoi la même taille pour toutes les bases.
    Plus précisément, j'ai différente base (structure identique) et en fonction de la base, j'ai la même taille pour certaine (alors qu'elle sont sensiblement différente en terme de contenu)
    Pour les plus grosses bases, j'ai une taille plus importante mais celle-ci est la même pour toutes les grosses bases.

    Je suppose que la requète renvoi la taille réservé pour la base...

    Du coup, je me tourne vers exec sp_spaceused qui me retourne une taille pour les data et les index qui me semble plus cohérent (cela correspond bien à la taille de mes bases et il est bien différend pour chaque base)

    Toutefois, j'ai besoin de récupérer ses informations via une requète (ADO .NET) mais la je bloque
    je vois pas comment faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from sp_spaceused
    J'ai le sentiment que ce n'est pas possible vue que l'exec de la fonction me retourne deux ligne de structures différentes

    Alors ma question est : "comment récupérer la valeur DATA et INDEX de la fonction sp_spaceused via une requète ADO .NET"

    Merci
    Olysmar

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 756
    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 756
    Points : 52 534
    Points
    52 534
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par olysmar2 Voir le message
    Super, Merci
    La requète, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select size*8/1024 from sys.sysfiles
    Donne la taille en MB des deux fichiers

    sysfiles est une table de la version 2000 aujourd'hui totalement obsolète depuis la version 2005 de SQL Server !


    Extrait de la doc MS :
    "
    This SQL Server 2000 system table is included as a view for backward compatibility. We recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see Mapping System Tables to System Views (Transact-SQL). This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.
    "

    Elle peut donner des résultat totalement faux !

    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/ * * * * *

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 756
    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 756
    Points : 52 534
    Points
    52 534
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par olysmar2 Voir le message
    Je reviens sur ce poste parce que je réalise que la requète me renvoi la même taille pour toutes les bases.
    Plus précisément, j'ai différente base (structure identique) et en fonction de la base, j'ai la même taille pour certaine (alors qu'elle sont sensiblement différente en terme de contenu)
    Pour les plus grosses bases, j'ai une taille plus importante mais celle-ci est la même pour toutes les grosses bases.

    Je suppose que la requète renvoi la taille réservé pour la base...

    Du coup, je me tourne vers exec sp_spaceused qui me retourne une taille pour les data et les index qui me semble plus cohérent (cela correspond bien à la taille de mes bases et il est bien différend pour chaque base)

    Toutefois, j'ai besoin de récupérer ses informations via une requète (ADO .NET) mais la je bloque
    je vois pas comment faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from sp_spaceused
    J'ai le sentiment que ce n'est pas possible vue que l'exec de la fonction me retourne deux ligne de structures différentes

    Alors ma question est : "comment récupérer la valeur DATA et INDEX de la fonction sp_spaceused via une requète ADO .NET"

    Merci
    Olysmar
    Pour que la requête que je vous ais donné fonctionne il faut être dans le contexte de la base =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    USE mabase;
    SELECT ...
    Elle donne bien la taille du stockage. Cependant, comme il s'agit de données relevées de temps à autre, vous pouvez les affiner préalablement en lançant la commande :
    Toujours dans la base contextuelle !

    Pour différencier les données et les index, il faut aller dans la vue sys.allocation_units et jouer avec sys.internal_tables.
    En vous donnant un peu de temps vous auriez trouvé l'article que j'ai écrit à ce sujet : http://blog.developpez.com/sqlpro/p1...e-de-vos-bases

    A +

    Pour vous former sur SQL :
    Nom : Couverture livre SQL server Eyrolles.jpg
Affichages : 4181
Taille : 105,0 Ko
    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/ * * * * *

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 199
    Points : 70
    Points
    70
    Par défaut
    Merci pour votre retour
    J'avais vu votre article mais c'était trop compliqué (et j'ai votre bouquin )

    Je viens de trouver un post qui m'a bien aidé.
    en fait, je veux connaitre la taille réel des données

    Par contre, je ne peux pas le faire dans une simple requète
    du coup, je fait cela et j'obtiens des chiffre assez cohérent par rapport à mes base
    voici le code simplifié à adapté pour l'usage:

    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
     
            Dim sum As Long = 0
     
            ' SQL Command [Same command discussed in section-B of this article]
            Dim sSqlquery As String = "EXEC sp_MSforeachtable @command1=""EXEC sp_spaceused '?'"" "
     
            Dim oDataSet As New DataSet()
     
            ' Executing SQL Command using ADO.Net
            Using oConn As System.Data.SqlClient.SqlConnection = Me.mGetConnexion
                oConn.Open()
                Using oCmdGetData As New System.Data.SqlClient.SqlCommand(sSqlquery, oConn)
                    oCmdGetData.ExecuteNonQuery()
                    Dim executeAdapter As New System.Data.SqlClient.SqlDataAdapter(oCmdGetData)
                    executeAdapter.Fill(oDataSet)
                End Using
                oConn.Close()
            End Using
            ' Iterating each table
            For i As Integer = 0 To oDataSet.Tables.Count - 1
                ' We want to add only "data" column value of each table
                sum = sum + Convert.ToInt64(oDataSet.Tables(i).Rows(0)("data").ToString().Replace("KB", "").Trim())
                sum = sum + Convert.ToInt64(oDataSet.Tables(i).Rows(0)("index_size").ToString().Replace("KB", "").Trim())
            Next
            Return sum
    Qu'en pensez vous ?

    Merci

  11. #11
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 756
    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 756
    Points : 52 534
    Points
    52 534
    Billets dans le blog
    5
    Par défaut
    avec votre code vous obtenez la taille des tables en nombre de ligne. Rien à voir avec le stockage.

    Reprenez l'article que j'ai écrit;

    Il n'y pas d'autres méthodes, car le volume des transactions dans les fichiers du journal ne peut être obtenue que par le commande DBCC SQLPERF(LOGSPACE).

    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/ * * * * *

  12. #12
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 199
    Points : 70
    Points
    70
    Par défaut
    Vous êtes sur ?
    quand j'execute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?'"
    J'obtiens pour chaque table une colonne data avec KB et une colonne index_size en KB

    Je n'ai pas d'information de ligne...

    je me suis référé à cette article: http://www.c-sharpcorner.com/UploadF...in-sql-server/

    De plus, le résultat semple assez cohérent par rapport au exec sp_spaceused

    Merci

  13. #13
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 199
    Points : 70
    Points
    70
    Par défaut
    Je vais tout de même me pencher sur votre article que, je l'avoue, je n'avais pas lu en détail
    Merci

  14. #14
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 199
    Points : 70
    Points
    70
    Par défaut
    Une fois que l'on a créé la fonction, comment l'exécuter ?
    Merci

  15. #15
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 756
    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 756
    Points : 52 534
    Points
    52 534
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par olysmar2 Voir le message
    Vous êtes sur ?
    quand j'execute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?'"
    J'obtiens pour chaque table une colonne data avec KB et une colonne index_size en KB

    Je n'ai pas d'information de ligne...

    je me suis référé à cette article: http://www.c-sharpcorner.com/UploadF...in-sql-server/

    De plus, le résultat semple assez cohérent par rapport au exec sp_spaceused

    Merci
    Effectivement, j'ai mal interprété ta requête....

    Mais l'appel de sp_space_usage avec foreachdb c'est un peu lourd...

    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/ * * * * *

  16. #16
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 199
    Points : 70
    Points
    70
    Par défaut
    Par contre, j'ai bien lu votre article et il me parait bien aussi (et peut être plus légé)
    Par contre, je ne vois pas comment exécuté la fonction dans le sql manager...
    Pourriez vous m'aider ?

  17. #17
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Quid de sys.master_files ?

    @++

  18. #18
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Je plusseoie. Requête tirée des requêtes de diagnostic de Glenn Berry :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT DB_NAME([database_id])AS [Database Name], 
           [file_id], name, physical_name, type_desc, state_desc, 
           CONVERT( bigint, size/128.0) AS [Total Size in MB]
    FROM sys.master_files WITH (NOLOCK)
    WHERE [database_id] > 4 
    AND [database_id] <> 32767
    OR [database_id] = 2
    ORDER BY DB_NAME([database_id]) OPTION (RECOMPILE);
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  19. #19
    Membre expérimenté

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 815
    Points : 1 350
    Points
    1 350
    Billets dans le blog
    2
    Par défaut
    une autre requête pour lister tout les bases
    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
    DECLARE @t_spaceused TABLE 
    ( 
    nomBase SYSNAME, 
    nomLogique VARCHAR(100), 
    nomPhysique VARCHAR(100), 
    tailleFichier_MB DECIMAL(14,2), 
    accroissement VARCHAR(15), 
    espaceOccupe_MB DECIMAL(8,2), 
    espaceLibre_MB DECIMAL(14,2), 
    [%libre] DECIMAL(5,2) 
    );
     
    DECLARE @sql VARCHAR(1000); 
    SET @sql = 'USE [' + '?' + ']; 
    WITH fichiers_bases AS 
    ( 
        SELECT 
        DB_NAME() AS nomBase, 
        name AS nomLogique, 
        physical_name AS nomPhysique, 
        CASE is_percent_growth 
        WHEN 0 THEN CAST(growth * 8 / 1024 AS VARCHAR(8)) + '' MB '' 
        ELSE CAST(growth AS VARCHAR(8)) + '' %'' 
        END AS accroissement, 
        (size * 8.0) / 1024 AS tailleFichier_MB, 
        (FILEPROPERTY(name, ''SpaceUsed'') * 8.0) / 1024 AS espaceOccupe 
    FROM sys.database_files 
    --WHERE type = 1 -- Données et journaux 
    ) 
    SELECT 
        nomBase, 
        nomLogique, 
        nomPhysique, 
        tailleFichier_MB, 
        accroissement, 
        espaceOccupe AS espaceOccupe_MB, 
        CAST(tailleFichier_MB - espaceOccupe AS DECIMAL(14,2)) AS espaceLibre_MB, 
        CAST((tailleFichier_MB - espaceOccupe) / tailleFichier_MB * 100.0 AS DECIMAL(5,2)) AS [%libre] 
    FROM fichiers_bases;';
     
    INSERT INTO @t_spaceused 
    EXEC sp_MSForEachDB @sql;
     
    SELECT * 
    FROM @t_spaceused 
    WHERE nomBase NOT IN ('master','msdb','model','ReportServer','ReportServerTempDB') -- Bases utilisateurs + tempdb 
    ORDER BY [nomBase] ASC;

  20. #20
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Ou plus simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT		D.name AS database_name
    		, SUM(MF.size) / 128 AS database_size_MB
    FROM		sys.databases AS D
    INNER JOIN	sys.master_files AS MF
    			ON D.database_id = MF.database_id
    GROUP BY	D.name
    @++

Discussions similaires

  1. [XL-2010] sélection des données depuis une base de données depuis une autre feuille
    Par Learning everyday dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/11/2014, 10h14
  2. Réponses: 14
    Dernier message: 23/04/2012, 22h32
  3. inserer les données d'une base de données dans une autres?
    Par enstein8 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 14/10/2011, 13h33
  4. Réponses: 3
    Dernier message: 22/10/2008, 17h55
  5. Récuperer les données d'une base de donnée via ODBC dans une variable
    Par arogues dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/04/2008, 15h27

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