Sql server : vérification de l'espace libre sur le serveur

Contenu du snippet

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 / Exemple :


-- 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.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.