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

Administration SQL Server Discussion :

Obtenir l'espace disponible des fichiers de données de toutes mes bds


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Obtenir l'espace disponible des fichiers de données de toutes mes bds
    Hello.
    J'ai un gros job journalier qui va chercher diverses informations sur la plupart de mes serveurs pour en connaitre les évolutions.
    Pour faire bref, ça fonctionne à coup de linked Servers et d'openquery et les informations sont historisées dans diverses tables. Au final, je produis un courriel en html qui me fait gagner bien du temps.
    Cependant, je n'arrive pas à obtenir la taille « disponible » des fichiers de données.
    En essayant avec ceci, j'obtiens juste l'information sur la bd master

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select * from openquery ("machine56465"
    ,'Select DB_NAME() DBName, Name FileName, fileproperty(Name,''SpaceUsed'') SpaceUsed from master.sys.sysfiles' )
    Et bien sûr, le foreachdb ne fait pas bon ménage avec le openquery

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * FROM OPENQUERY( "test89987",'sp_msforeachdb ''select  quotename(?)''' )
     
    Msg 208, Level 16, State 1, Procedure sp_MSforeach_worker, Line 102
    Invalid object name '#qtemp'.
    Si vous avez des pistes, je suis preneur.
    Merci bien.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    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 : 22 010
    Billets dans le blog
    6
    Par défaut
    Le mieux serait de remonter cela avec coquillage puissant.

    En 2014 une vue permet d'avoir des infos détaillées des disques et des fichiers du système.

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

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Février 2008
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 758
    Par défaut
    Je partirais sur un job SSIS pour faire de la collecte multi instances.

  4. #4
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    ... ou en PowerShell également pour la collecte multi instances

    ++

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    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 : 22 010
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par mikedavem Voir le message
    ... ou en PowerShell également pour la collecte multi instances
    C'est bien ce que je disais.... "Le mieux serait de remonter cela avec coquillage puissant.

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

  6. #6
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    C'est bien ce que je disais.... "Le mieux serait de remonter cela avec coquillage puissant.
    Yep et pour ne pas te paraphraser voici un petit bout de code (à retravailler bien sûr ... j'avais le temps de m'amuser un peu. Le script se base sur un fichier texte avec une liste de serveur mais on peut tout à fait remplacer cette source par autre chose.

    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
    66
    67
    68
    Param 
    (
        [ValidateScript({ Test-Path $_ })]
        [string] $path = $(throw "Server file path")
    )
     
     
    function GetDatabaseUsedSpaceByServer
    {
        Param (
            [string] $Server = $(throw "SQL Server Name")
        )
     
        try
        {
            $serverConn = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($server);
            $serverConn.Connect();
        }
        catch 
        {  
            Write-Host "The server $serverdoes not exist or is not reachable." -ForegroundColor Red;
            Exit;
        }
     
        $objServer = New-Object("Microsoft.SqlServer.Management.Smo.Server") $Server;
     
        $t = @();
     
        foreach ($database in $objServer.databases | Where-Object { $_.IsAccessible -eq $True })
        {
            foreach ($group in $database.Filegroups)
            {
     
                foreach ($file in $group.Files) 
                {
                    $properties = @{"Server Name"=$Server; 
                                    "Database Name"=$database.Name;
                                    "Physical Name"=$file.FileName
                                    "Space Used (KB)"=$file.UsedSpace
                                   };
     
                    $NewObject = New-Object PSObject -Property $Properties;
                    $t += $NewObject;
                }
            }
     
        }
     
        $t | ft -AutoSize;
    }
     
    # Clear host
    Clear-Host;
     
    # Load assemblies
    [reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo") | Out-Null;
    [reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoEnum") | Out-Null;
    [reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null;
     
    # Retrieve servers list into the text file
    $content = Get-Content $path;
     
    # Show used space information for each server and databases
    foreach ($row_content in $content)
    {
        $server_name = ($row_content.split(";"))[0];
        GetDatabaseUsedSpaceByServer -Server $server_name;
    }
    ++

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/01/2008, 16h25
  2. Réponses: 2
    Dernier message: 21/04/2007, 20h19
  3. Problème d'espace disponible après suppression de données
    Par carjo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/03/2006, 15h48
  4. [C#] [.NET CF] des fichiers de données avec l'application
    Par safisoft13 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 06/06/2005, 09h30
  5. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37

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