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 :

[2008 R2]Job qui tourne mais sql server me dit le contraire


Sujet :

Administration SQL Server

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut [2008 R2]Job qui tourne mais sql server me dit le contraire
    Hello,

    Je rencontre actuellement un phénomène que je ne comprends pas.

    Dans le "Job Activity Monitor" de SSMS, pour un job précis, j'ai le status "Idle". Il est donc sensé être arrêté.

    Pourtant, avec le script ci-dessous, je vois bien qu'il tourne...
    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 @TIME DECIMAL(6,2);
    DECLARE @HOUR DECIMAL(6,2);
    DECLARE @MINUTE DECIMAL(6,2);
     
    SELECT
            @TIME = ROUND(CAST(DATEDIFF(SECOND, AJ.START_EXECUTION_DATE, GETDATE()) AS FLOAT)/3600,2)
    FROM
            MSDB..sysjobactivity AJ
                JOIN    MSDB..sysjobs SJ
                    ON    SJ.job_id = AJ.job_id
    WHERE
            AJ.stop_execution_date IS NULL --job hasn't stopped running
        AND    AJ.start_execution_date IS NOT NULL --job is currently running
        AND SJ.name = 'INJECT GIFTCARD INTO GIFT_MANAGEMENT'
        AND NOT EXISTS    ( --make sure this is the most recent run
                        SELECT
                                1
                        FROM
                                MSDB..sysjobactivity NEW
                        WHERE
                                NEW.job_id = AJ.job_id
                            AND    NEW.start_execution_date > AJ.start_execution_date
                        )
     
    SET @HOUR = FLOOR(@TIME);
    SET @MINUTE = @TIME - @HOUR;
    SET @MINUTE = (@MINUTE / 100) * 60
     
    SELECT @HOUR + @MINUTE
    A quoi cela peut-il être dû ?
    Kropernic

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Quelle version de SQL Server ?

    ++

  3. #3
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    J'allais d'abord répondre :
    Bah 2008 R2, c'est marqué dans le titre
    Puis j'ai réalisé vous vouliez probablement savoir si c'était une édition standard ou entreprise ^^.

    La réponse est standard (malheureusement).
    Kropernic

  4. #4
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Non non c'est moi je n'ai pas fait gaffe au titre

    Je ne vous demande pas si vous avez rafraîchi la fenêtre du job activity monitor ?

    Quel type de job qui est concerné par curiosité ?

    ++

  5. #5
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Ahah, j'ai effectivement rafraîchi la fenêtre du job activity monitor ^^.

    Bin... D'après la fenêtre pré-citée, dans la colonne Category, j'ai "[Uncategorized (Local)]".

    C'est un job perso qui fait un travail assez lourd à base de curseurs très moches...

    Pour info : Sa tâche est en fait d'importer les données d'une ancienne DB très mal modélisée (où tout se trouve dans une seule table qui n'est bien sûr pas en 1NF) qui va cesser d'être utilisée dans une nouvelle DB (qui est correctement modélisée cette fois).

    N.B. : Le nom du job est celui indiqué dans le code fourni précédemment.
    Kropernic

  6. #6
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Ok est-ce que tu peux lancer la commande suivante lorsque ton problème se produit ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec master.dbo.xp_sqlagent_enum_jobs 1, ''
    Il faut juste identifier l'id du job concerné dans sysjobs

    ++

  7. #7
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Que fait cette commande ?

    Je demande juste pour être sûr que ça ne risque pas d'interrompre le job. Il tourne et c'est ce qu'il doit faire.

    C'est juste que ce matin en arrivant, j'ai ouvert le moniteur pour voir à quel step il en était et je me suis dit : "Merde, il a planté".
    (le moniteur affiche que le dernier traitement a échoué)

    J'ai donc été voir dans l'historique et ça ne collait pas niveau date.

    Du coup, j'ai exécuté le script de mon premier message pour constaté qu'il était toujours bien en train de tourner (ouf !).

    Bref, je ne veux pas qu'il s'arrête ^^


    EDIT :

    Ok, ça ne fait que lister les jobs.

    J'ai donc exécuté et en gros, ça donne la même info que le moniteur non?
    Si je compare avec les infos affichées par le moniteur, sur base de la date du dernier run, je retrouve facilement le job en question. Dans la colonne State, j'ai la même valeur que pour tous les autres, à savoir 4 (sûrement l'id de Idle).

    Vous parliez de déterminer l'id du job et bien le voici :
    0x5F0CA4D29E81854F809254E9B812D869
    Kropernic

  8. #8
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Et que te donne la requête :

    Il faut regarder la colonne current_execution_status pour le job concerné

    ++

  9. #9
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Il ne trouve pas cette procédure :-/
    Kropernic

  10. #10
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Pardon dans msdb :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXEC msdb..sp_help_job @execution_status = 1;
    ++

  11. #11
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Aucune ligne n'est retournée par cette procédure avec @execution_status = 1
    Kropernic

  12. #12
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Nouvelle info...

    En fait, quand je regarde le contenu des tables (s'il est toujours au step que je pense (ce qui devrait être le cas)), il a l'air d'être arrêté car quand je fais un count des lignes se trouvant dans la table dans laquelle des lignes devraient être ajoutée actuellement, cela n'augmente plus.

    Du coup, j'envisage la possibilité que le script du premier message soit erroné.
    Script que j'ai pourtant trouvé sur le net posté par je ne sais plus qui mais ça n'avait pas l'air d'être n'importe qui (je n'ai pas pris ça sur un forum quelconque quoi. C'était un joli article et tout et tout).

    Mais alors, ce sont les informations que j'obtiens quand je fais clic droit -> view history sur le job...

    Ca devient assez lourd...
    Kropernic

  13. #13
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Ok, je crois avoir compris le problème...
    Et si c'est bien cela, je vais aller flinguer les gars qui s'occupent de la gestion des serveurs...

    En fouillant dans le Log File Viewer, par dépis, je coche la case SQL Server Agent.

    Et là, en date de ce matin à 6:05:15 AM je vois :
    [130]SQLSERVERAGENT stopping because of Windows shudown...
    Forcément, ça a stoppé le job. Mais est-ce que les infos des diverses vues systèmes ont été correctement mises à jour ?
    [EDIT]
    Cela expliquerait pourquoi je ne trouve de trace de ce run (inachevé) dans l'historique, pourquoi le script indique le job tourne toujours, etc.
    [/EDIT]

    Pensez-vous que le problème viennent de là ?

    Enfin... Soyons positif, j'ai au moins la confirmation que le job s'est arrêté et que je peux redémarrer '-_-


    [EDIT]Confirmation qu'il y a eu des updates ce matin avec restart du server.[/EDIT]
    Kropernic

  14. #14
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    SQLSERVERAGENT stopping because of Windows shudown...
    Ah oui je n'y pensais plus à celle-là.

    Forcément, ça a stoppé le job. Mais est-ce que les infos des diverses vues systèmes ont été correctement mises à jour ?
    Oui lorsque ton serveur redémarre et que tes jobs sont en cours d'exécution, la colonne stop_execution_date ne sera pas remplie en effet.

    ++

  15. #15
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Comment vous gérez les MAJ windows de votre côté ? Histoire d'être sûr que je ne les engueule pas pour rien ^^.
    Kropernic

  16. #16
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    En général chez les clients où je passe on essaie de les planifier dans une fenêtre de maintenance bien précise qui ne gêne pas les serveurs SQL identifiés comme critiques Donc redémarrage planifié avec les teams systèmes.

    ++

  17. #17
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    C'est donc bien au DBA de définir le moment opportun pour effectuer une mise à jour et le redémarrage qui va avec lorsqu'il y a lieu et non pas à une bande de gais lurons qui font toutes les maj sur tous les serveurs en même temps.
    Kropernic

  18. #18
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    DBA non. Je dirais que c'est plus à l'équipe Windows si on peut dire cela comme ca. En principe ce sont eux qui poussent les mises à jour sur les serveurs et ont les règles de redémarrage des serveurs.

    Maintenant il se peut que dans ton cas que ce soit le DBA qui fasse lui même les mises à jour sur le système mais ca serait étonnant.

    ++

  19. #19
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Mais l'équipe windows n'est pas au fait des services qui tournent sur les instances sql ni de leur planification. Comment pourraient-ils alors prévoir le bon moment pour faire les mises à jour ?

    Il ne va y avoir rien d'autre que sql server sur ce serveur (en fait, 3 serveurs : 1 test, 1 production, 1 réplication). Du coup, ce serait quand même plus simple si c'était le DBA (moi en l’occurrence ^^) qui devait gérer les mises à jour windows non ?
    Kropernic

  20. #20
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Mais l'équipe windows n'est pas au fait des services qui tournent sur les instances sql ni de leur planification. Comment pourraient-ils alors prévoir le bon moment pour faire les mises à jour ?
    Tout simplement en s'assurant du rôle que leur serveur possède :-)


    Certains serveurs sont marqués / connus comme critiques par les équipes systèmes et les serveurs concernés sont en général dans des OU spécifiques ou certaines GPO ne sont pas appliqués automatiquement. Ils définissent avec les DBA les processus à suivre.


    Il ne va y avoir rien d'autre que sql server sur ce serveur (en fait, 3 serveurs : 1 test, 1 production, 1 réplication). Du coup, ce serait quand même plus simple si c'était le DBA (moi en l’occurrence ^^) qui devait gérer les mises à jour windows non ?
    A toi de voir effectivement et tout dépend bien entendu des équipes qui composent ton IT et de tes processus internes. Dans les grandes sociétés des équipes sont entièrement dédiés à la sécurité et sont très réactifs quand des patchs importants doivent être passés rapidement.

    ++

    ++

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/04/2012, 09h23
  2. Réponses: 0
    Dernier message: 28/03/2012, 11h11
  3. [SQL Server 2k8] Job qui plante
    Par Ctplm dans le forum Administration
    Réponses: 1
    Dernier message: 05/11/2009, 22h00
  4. [Quartz] Cron Job qui tourne en boucle
    Par K-Kaï dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 07/02/2008, 11h19
  5. Réponses: 19
    Dernier message: 07/11/2003, 08h10

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