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 :

alert dans server agent on failure


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut alert dans server agent on failure
    Bonjour,

    j'ai une storeproc qui est lancée par un job. Je voudrais recevoir une alert quand il y a une erreur dans la storeproc. Comment faire ?

    J'ai vu que je pouvais mettre des alertes mais dans "event alert definition" je ne sais pas quoi mettre ...

    Quelqu'un peut m'aider ?

  2. #2
    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 : 44
    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
    Par défaut
    Bonjour,

    => database name : laissez à toutes
    => Severity : mettez à 016

    Dans la page response, cochez notify operator et choisissez-en un
    Dans la page options, cochez E-mail

    Sinon vous pouvez exécuter le lot de requêtes ci-dessous qui ajoute les alertes pour tous les niveaux à l'opérateur de votre choix, plus les alertes en cas de corruption de la base de données :

    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    USE [msdb]
    GO
     
    -------------------------------------------------------------------------------------------------------
    DECLARE @operator_name sysname = 'monOperateur'
    -------------------------------------------------------------------------------------------------------
    DECLARE @agent_state TABLE
    (
    	agent_state varchar(10)
    )
    INSERT	INTO @agent_state
    EXEC	xp_servicecontrol 'QUERYSTATE', 'SQLServerAgent'
     
    IF EXISTS
    (
    	SELECT	*
    	FROM	@agent_state
    	WHERE	agent_state NOT LIKE 'Running%'
    )
    BEGIN
    	RAISERROR('Le service SQL Server Agent n''est pas démarré et ne peut donc pas relever les alertes', 16, 1)
    	RETURN
    END
     
    IF NOT EXISTS
    (
    	SELECT	*
    	FROM	msdb.dbo.sysoperators
    	WHERE	name = @operator_name
    )
    BEGIN
    	RAISERROR('Il n''existe pas d''opérateur de nom %s', 16, 1, @operator_name)
    	RETURN
    END
     
    IF EXISTS
    (
    	SELECT	*
    	FROM	msdb.dbo.sysoperators
    	WHERE	name = @operator_name
    	AND	enabled = 0
    )
    BEGIN
    	RAISERROR('L''opérateur %s est désactivé', 16, 1, @operator_name)
    	RETURN
    END
     
    ----------------------------------
    -- Ajouts des alertes sur sévérité
    ----------------------------------
    DECLARE @i tinyint = 16
    	, @alert_name sysname
     
    WHILE @i <= 25
    BEGIN
    	SELECT	@alert_name = 'Severity ' + CAST(@i AS char(2))
     
    	EXEC msdb.dbo.sp_add_alert
    		@name = @alert_name
    		, @message_id = 0
    		, @severity = @i
    		, @enabled = 1
    		, @delay_between_responses = 60
    		, @include_event_description_in = 1
    		, @job_id = N'00000000-0000-0000-0000-000000000000'
     
    	EXEC msdb.dbo.sp_add_notification
    		@alert_name = @alert_name
    		, @operator_name = @operator_name
    		, @notification_method = 1
     
    	SET @i = @i + 1
    END
    GO
     
    --------------------------------------------
    -- Ajoput des alertes sur problème hardware
    --------------------------------------------
    DECLARE @i smallint = 823
    	, @alert_name sysname
     
    WHILE @i <= 825
    BEGIN
    	SELECT	@alert_name = 'Message ' + CAST(@i AS char(3))
     
    	EXEC msdb.dbo.sp_add_alert
    		@name = @alert_name
    		, @message_id = @i
    		, @severity = 0
    		, @enabled = 1
    		, @delay_between_responses = 0
    		, @include_event_description_in = 1
    		, @job_id = N'00000000-0000-0000-0000-000000000000'
     
    	EXEC msdb.dbo.sp_add_notification
    		@alert_name = @alert_name
    		, @operator_name = @operator_name
    		, @notification_method = 1
     
    	SET @i = @i + 1
    END
    Notez tout de même que vous pouvez ajouter une notification sur échec au niveau du job : allez dans ses propriétés : dans la page Notifications, cochez E-Mail.
    Il vous reste ensuite à choisir l'opérateur et quand l'alerte doit être donnée (sur succès ou échec).

    Pour envoyer une alerte sur échec de job à tous les jobs d'une instance, vous pouvez utiliser le lot de requête suivant :

    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
    --------------------------------------
    DECLARE	@operator_name sysname = 'monOperateur'
    --------------------------------------
    IF NOT EXISTS
    (
    	SELECT	*
    	FROM	msdb.dbo.sysoperators
    	WHERE	name = @operator_name
    )
    BEGIN
    	RAISERROR('L''opérateur ''%s'' n''existe pas', 16, 1, @operator_name)
    	RETURN
    END
     
    DECLARE @sql nvarchar(max)
     
    SELECT	@sql = CASE WHEN @sql IS NULL THEN '' ELSE @sql + '; ' END + NCHAR(13) + NCHAR(10)
    		+ 'EXEC msdb.dbo.sp_update_job @job_id = N''' + CAST(job_id AS char(36)) + ''', @notify_level_email=2, @notify_email_operator_name=N''DBA'''
    FROM	msdb.dbo.sysjobs
    --WHERE	enabled = 1
     
    PRINT @sql
    EXEC (@sql)
    @++

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/10/2008, 13h37
  2. Réponses: 0
    Dernier message: 18/08/2008, 16h06
  3. Alerte dans IE6
    Par Jean_Benoit dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/08/2005, 11h28
  4. Comment déclarer une DataSource dans server.xml
    Par guillaume06 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 16/06/2004, 14h27
  5. sql server agent
    Par bourvil dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 23/02/2004, 15h38

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