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 :

[Agent SQL Server] Alerte temps dépassé, job "coincé"


Sujet :

Administration SQL Server

  1. #1
    Inactif  
    Homme Profil pro
    Responsable BI
    Inscrit en
    Mars 2015
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable BI
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2015
    Messages : 62
    Points : 37
    Points
    37
    Par défaut [Agent SQL Server] Alerte temps dépassé, job "coincé"
    Bonjour,

    J'ai un souci avec un de mes jobs qui de manière assez aléatoire (une fois tous les mois) plantent et tourne en boucle, je suis en train d'analyser à quel moment il pourrait bloquer mais en attendant, j'aurais voulu mettre une alerte qui si le temps du job dépasse 30min/1h l'arrêterait pour le relance éventuellement. Ou au moins, me le signalerait.

    Je n'ai pas trouvé où paramétré ça, cela me permettrait déjà en attendant de comprendre d'éviter de louper ce job qui du coup ralenti tous les process suivants.

    Merci,

  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
    21 766
    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 : 21 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    Il suffit de lire régulièrement la table d'exécution des jobs dans laquelle il y a la dateheure de démarrage et l'état.

    Voyez avec :
    SELECT * from dbo.sysjobactivity
    et
    SELECT * from dbo.sysjobs_view

    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 éclairé Avatar de Bernardos
    Homme Profil pro
    Consultant Senior dba sql server & Microsoft Business Intelligence
    Inscrit en
    Avril 2008
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant Senior dba sql server & Microsoft Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 332
    Points : 723
    Points
    723
    Par défaut
    Bonjour,
    moi je dis ca sent le deadlock par ici (ou pas)
    une alerte qui redémarrerait ton job c'est absurde. une alerte qui te signalerait qu'il a dépassé un certain temps pourquoi pas? si c'est possible de le faire au niveau du job, je sais pas comment.
    Par contre, tu sais analyser les processes bloqués via le profiler en configurant le paramètre "blocked process treshold". voici un article de ELSUCKET sur le sujet
    ce que tu peux déjà faire.
    Activer les TFLAG 1204 et 1222, ceci te permetra de choper d'éventuels et probables deadlock dans ton journal d'erreur.
    Ce que tu peux faire aussi, c'est utiliser le profiler. tu configure pour obtenir les deadlock graph et tu lances ton job.
    pendant que ton job tourne, tu peux lancer aussi le script 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
    24
    25
    SELECT session_id,
           request_id,
           Db_name(database_id),
           start_time,
           status,
           command,
           Substring(txt.TEXT, ( statement_start_offset / 2 ) + 1,
           ( ( CASE statement_end_offset
           WHEN -1 THEN Datalength(txt.TEXT)
           ELSE statement_end_offset
                                                                       END
               - statement_start_offset ) / 2 ) + 1) AS statement_text,
           wait_type,
           wait_time,
           blocking_session_id,
           percent_complete,
           cpu_time,
           reads,
           writes,
           logical_reads,
           row_count
    FROM   sys.dm_exec_requests
           CROSS APPLY sys.Dm_exec_sql_text([sql_handle]) AS txt
    WHERE  session_id <> @@SPID
           AND session_id > 50 and status ='suspended'
    Ce script ca te donner tous les processes "suspendus" à l'instant T.
    Ce qui pourrait être intéréssant, c'est que tu nous expliques ce que fait ton job et éventuellement nous transmettre (si tu peux) le/les script(s) qu'il lance.
    cordialement,
    Loïc BERNARD
    Consultant Senior dba sql server & Microsoft Business Intelligence



    Il n'y a jamais de problèmes, il n'y a que des solutions!

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    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 : 21 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    Si c'était un deadlock il aurait été détecté et tué donc débloqué. SQL Server met au pire 3 secondes pour détecter une situation d'étreinte fatale. Donc, non, ce n'est pas possible. Ce temps anormalement long peut être un blocage auquel cas la session serait en état d'attente, mais cela peut aussi être le résultat d'un mauvais choix de plans et donc d'une execution très longue...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/12/2006, 13h31
  2. Agent sql server et job
    Par WELCOMSMAIL dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 14/04/2006, 13h26
  3. Agent sql server
    Par WELCOMSMAIL dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/04/2006, 10h20

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