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

MS SQL Server Discussion :

[SQL-S03] File Server Resources Manager


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Admin. BI
    Inscrit en
    Avril 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Admin. BI
    Secteur : Services à domicile

    Informations forums :
    Inscription : Avril 2010
    Messages : 30
    Par défaut [SQL-S03] File Server Resources Manager
    Bonjour à tous,
    Sur un serveur SQL sous WinServ.2008 R2, j'utilise le File Server Resources Manager (Storage Reports) pour avoir un rapport chaque matin dans ma boîte mail avec les tailles des fichiers .mdf présents sur mon serveur.
    Or, j'ai un serveur SQL sous WinServ.2003 SP2, qui apparemment ne contient pas cette fonctionnalité...

    D'où ma question, ais-je mal cherché et elle est présente ?
    Si non quelle autre solution puis-je appliquer ?

    Merci de vos réponses.

  2. #2
    Membre averti
    Homme Profil pro
    Admin. BI
    Inscrit en
    Avril 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Admin. BI
    Secteur : Services à domicile

    Informations forums :
    Inscription : Avril 2010
    Messages : 30
    Par défaut
    Re-bonjour,
    Pour ceux que ça peut intéresser, le FSRM n'est présent qu'à partir de la version Windows Server 2003 R2 (source : download.microsoft.com/download/7/A/2/.../FSRM-R2ITVC.doc).

    Je cherche donc une solution de contournement (en attendant vos réponses? ).

  3. #3
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Par défaut
    Bonjour,
    Voici une requete qui retourne la taille des fichiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT name AS [File Name] , physical_name AS [Physical Name], size/128.0 AS [Total Size in MB],
    size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS [Available Space In MB]
    FROM sys.database_files OPTION (RECOMPILE);
    Il te suffit d'envoyer le résultat par mail et le planifier.

  4. #4
    Membre averti
    Homme Profil pro
    Admin. BI
    Inscrit en
    Avril 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Admin. BI
    Secteur : Services à domicile

    Informations forums :
    Inscription : Avril 2010
    Messages : 30
    Par défaut
    Bonjour,
    D'abord merci de ta réponse

    Depuis hier le problème s'est complexifié, je cherche à avoir une historisation de cette taille, et mieux encore : des tailles de toutes les bases d'un serveur

    J'en suis arrivé à penser quelque chose comme ça :
    1) Récupérer les noms de toutes les bases du serveur (sans les bases systèmes)
    2) Récupérer les tailles pour chaque base listée précédemment
    3) Insérer dans une table en rajoutant la date

    J'en suis arrivé à ceci (plein de fautes et qui marche pas, je cherche encore comment améliorer) :
    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
    DECLARE @compteur int
    	  , @DB_Name nvarchar(20)
    SET @compteur = 1
     
    WHILE @compteur < MAX(nombre_de_bases)
    BEGIN
     
    SET @DB_NAME = (
    SELECT ROW_NUMBER() OVER (ORDER BY name) AS LIGNE ,name DB_NAME
    FROM sys.DATABASES 
    WHERE database_id > 4 AND ligne = @compteur
    )
    @compteur++
     
    USE @DB_NAME
    SELECT NAME
          ,size/128 'DB_SIZE (Mb)'
          ,DATE = getdate()
    --INTO DB_SIZES
    FROM (select * from sys.database_files where file_id = '1') subreq;
    CONTINUE
    Si quelqu'un peut/sait améliorer un peu ce truc horrible, je suis preneur

  5. #5
    Membre averti
    Homme Profil pro
    Admin. BI
    Inscrit en
    Avril 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Admin. BI
    Secteur : Services à domicile

    Informations forums :
    Inscription : Avril 2010
    Messages : 30
    Par défaut Enfin ma réponse
    Re-bonjour,
    Pour ceux que ça intéresserait, il ne me reste plus qu'une erreur, peut-être solvable par vous... Je l'ai déjà rencontrée, mais je ne sais plus comment j'avait fait alors , la fameuse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cannot resolve the collation conflict between "French_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation.
    Voici mon code, qui me permet d'historiser (si on l'exécute périodiquement) les tailles de toutes les bases présentes sur un serveur, en les inscrivant dans une table master.dbo.DB_SIZES.
    Un point faible que je remarque, c'est que le nombre de bases est statique, et qu'il faudra modifier quelques lignes pour qu'il continue d'être efficace.

    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
    DECLARE @compteur INT
    DECLARE @DB_Name NVARCHAR(20) 
    DECLARE @Tableau TABLE (ID TINYINT PRIMARY KEY, DBNAME nvarchar(30)) 
     
    SET @compteur = 1
     
    -->Pour remplir la variable @Tableau avec une colonne auto-incrémentée servant d'ID
    INSERT INTO @Tableau (ID, DBNAME) 
    SELECT ROW_NUMBER() OVER (ORDER BY name) AS LIGNE ,name DB_NAME FROM sys.DATABASES 
    WHERE database_id > 4
     
    -->Pour checker le contenu de la variable
    --select * from @Tableau
     
    -->Initialiser le nom de la première DB du serveur (ici j'ai 2 bases sur mon serveur, d'où le "<3")
    WHILE @compteur < 3
    SET @DB_Name = (SELECT DBNAME FROM @Tableau WHERE ID = @compteur)
     
    -->Je n'ai rien trouvé de mieux pour faire un USE dynamique... Qui reste statique finalement
    if @DB_NAME = 'bd1' USE bd1
    if @DB_NAME = 'bd2' USE bd2
     
    -->Insertion dans la table DB_SIZES regroupant les tailles des DB
    SELECT NAME, size/128 'DB_SIZE (Mb)', DATE = getdate()
    INTO master.dbo.DB_SIZES
    FROM (select * from sys.database_files where file_id = '1') sub
     
    -->Incrémentation du compteur
    SET @compteur = @compteur + 1
    Du coup je cherche pour l'erreur de "collation" (elle survient lors de la comparaison de @DB_NAME et du nom de la base).
    Ça ne fonctionne pas si je fais juste avant la comparaison :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT @DB_Name COLLATE French_CI_AS
    Peut-être répondrez-vous avant moi

  6. #6
    Membre averti
    Homme Profil pro
    Admin. BI
    Inscrit en
    Avril 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Admin. BI
    Secteur : Services à domicile

    Informations forums :
    Inscription : Avril 2010
    Messages : 30
    Par défaut Fini !
    Re-re-bonjour,
    J'ai résolu mon problème, il suffisait de modifier la comparaison en rajoutant le COLLATE à chaque fois...
    Autre souci, mauvais placement dans la boucle, il essayait de recréer la table à chaque occurrence.

    Pour ceux qui veulent, voilà le code qui fonctionne (il faut juste créer la table master.dbo.DB_SIZES avant) (et il ne reste plus qu'a créer un job pour l'exécuter quotidiennement) :
    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
    DECLARE @compteur INT
    DECLARE @DB_Name NVARCHAR(20) 
    DECLARE @Tableau TABLE (ID TINYINT PRIMARY KEY, DBNAME nvarchar(30)) 
     
    SET @compteur = 1
     
    -->Pour remplir la variable tableau
    INSERT INTO @Tableau (ID, DBNAME) SELECT ROW_NUMBER() OVER (ORDER BY name) AS LIGNE ,name DB_NAME 
    FROM sys.DATABASES 
    WHERE database_id > 4
     
    -->Pour checker le contenu de la variable
    --select * from @Tableau
     
    -->Initialiser le nom de la première DB du serveur (ici j'ai 2 bases sur le serveur, d'où le "<3")
    WHILE @compteur < 10
    BEGIN
     
    SET @DB_Name = (SELECT DBNAME FROM @Tableau WHERE ID = @compteur) 
     
    -->Je n'ai rien trouvé de mieux pour faire un USE dynamique... Qui reste statique finalement
    if @DB_NAME = 'bd1' COLLATE French_CI_AS USE bd1
    if @DB_NAME = 'bd2' COLLATE French_CI_AS USE bd2
     
    -->Insertion dans la table DB_SIZES regroupant les tailles des DB
    INSERT INTO master.dbo.DB_SIZES(DB_Name, DB_Size_Mb, Date) 
    SELECT NAME, size/128 'DB_SIZE (Mb)', DATE = getdate() FROM sys.database_files WHERE file_id = '1'
     
    -->Incrémentation du compteur
    SET @compteur = @compteur + 1
    END
    Bonne fin de journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. SQL-Server 2005 Management studio
    Par ducho dans le forum Administration
    Réponses: 1
    Dernier message: 19/09/2008, 14h04
  2. Réponses: 3
    Dernier message: 11/06/2008, 13h55
  3. SQL Server Web Manager
    Par pulpytouch dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/04/2007, 08h57
  4. Réponses: 5
    Dernier message: 17/01/2007, 15h02
  5. [MS SQL SERVER 2005 MANAGEMENT Studio] Limite d'utilisation..
    Par TEXMEX dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 02/05/2006, 19h27

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