begin process at 2008 08 08 23:17:28
1 223 648 membres
406 nouveaux aujourd'hui
14 230 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SQL SERVER : VÉRIFICATION DE L'ESPACE LIBRE SUR LE SERVEUR


Information sur la source

Catégorie :Tâches Classé sous : SQL Server, administration, disque, espace, sql agent Niveau : Initié Date de création : 04/11/2007 Date de mise à jour : 04/11/2007 20:41:52 Vu : 3 039

Note :
Aucune note

Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note


Description

Voici un script qu'il est possible de planifier régulièrement sur un serveur pour être notifié par email en cas de manque d'espace sur l'une des partitions.

Ce script ne fonctionne que sur SQL Server 2005 à condition d'avoir configuré correctement le système d'envoie d'email par SMTP (database mail). Il peut cependant être adapté facilement pour les versions précédente en changeant la référence de sp_send_dbmail par un xp_sendmail (attention paramètres différents).

Source

  • -- Initialisation des paramètres
  • DECLARE @destinataires varchar(max)
  • DECLARE @corp_msg nvarchar(max)
  • DECLARE @seuil_avert int,
  • @seuil_crit int
  • SET @destinataires = 'toto@test.fr'
  • SET @seuil_avert = 5190
  • SET @seuil_crit = 2048
  • -- Création d'une table temporaire
  • -- pour réceptionner les données d'espace disque
  • CREATE TABLE #espace_disque
  • (
  • drive char(1),
  • [MB free] int
  • )
  • -- Execute xp_fixeddrives
  • INSERT #espace_disque
  • EXEC master..xp_fixeddrives
  • -- Premier seuil
  • IF EXISTS ( SELECT *
  • FROM #espace_disque
  • WHERE [MB free] < @seuil_crit )
  • BEGIN
  • SET @corp_msg = 'Espace disque libre inférieur à '
  • + CAST(@seuil_crit as varchar(10))
  • + ' Mo sur l''un des disques du server. Voir le détail ci-dessous.'
  • EXEC msdb.dbo.sp_send_dbmail @recipients = @destinataires,
  • @subject = 'Espace disque critique', @body = @corp_msg,
  • @importance = 'High', @query = 'EXEC master..xp_fixeddrives'
  • END
  • ELSE
  • BEGIN
  • -- Second seuil
  • IF EXISTS ( SELECT *
  • FROM #espace_disque
  • WHERE [MB free] < @seuil_avert)
  • BEGIN
  • SET @corp_msg = 'Espace disque libre inférieur à '
  • + CAST(@seuil_avert as varchar(10))
  • + ' Mo sur l''un des disques du server. Voir le détail ci-dessous.'
  • EXEC msdb.dbo.sp_send_dbmail @recipients = @destinataires,
  • @subject = 'Espace disque faible', @body = @corp_msg,
  • @importance = 'Normal',
  • @query = 'EXEC master..xp_fixeddrives'
  • END
  • END
-- Initialisation des paramètres
DECLARE @destinataires varchar(max)
DECLARE @corp_msg nvarchar(max)
DECLARE @seuil_avert int,
    @seuil_crit int

SET @destinataires = 'toto@test.fr'
SET @seuil_avert = 5190
SET @seuil_crit = 2048

-- Création d'une table temporaire
-- pour réceptionner les données d'espace disque
CREATE TABLE #espace_disque
    (
      drive char(1),
      [MB free] int
    )

-- Execute xp_fixeddrives
INSERT  #espace_disque
        EXEC master..xp_fixeddrives


-- Premier seuil
IF EXISTS ( SELECT  *
            FROM    #espace_disque
            WHERE   [MB free] < @seuil_crit ) 
    BEGIN

        SET @corp_msg = 'Espace disque libre inférieur à '
            + CAST(@seuil_crit as varchar(10))
            + ' Mo sur l''un des disques du server. Voir le détail ci-dessous.'

        EXEC msdb.dbo.sp_send_dbmail @recipients = @destinataires,
            @subject = 'Espace disque critique', @body = @corp_msg,
            @importance = 'High', @query = 'EXEC master..xp_fixeddrives'
    END
ELSE 
    BEGIN
		-- Second seuil
        IF EXISTS ( SELECT  *
                    FROM    #espace_disque
                    WHERE   [MB free] < @seuil_avert) 
            BEGIN
                SET @corp_msg = 'Espace disque libre inférieur à '
                    + CAST(@seuil_avert as varchar(10))
                    + ' Mo sur l''un des disques du server. Voir le détail ci-dessous.'

                EXEC msdb.dbo.sp_send_dbmail @recipients = @destinataires,
                    @subject = 'Espace disque faible', @body = @corp_msg,
                    @importance = 'Normal',
                    @query = 'EXEC master..xp_fixeddrives'
            END
    END

Conclusion

Planifiez ce script via l'Agent SQL de votre serveur (toutes les 15min ou toutes les heures) et attendez de recevoir un email.
04 novembre 2007 20:41:52 :
Correction des noms de tables temporaires, certaines préfixées de ## au lieu de #
    Aucun commentaire pour le moment.

Ajouter un commentaire

Discussions en rapport avec ce code source

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Boutique

Boutique de goodies CodeS-SourceS