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

Développement SQL Server Discussion :

Réupérer la date d'une exécution


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 430
    Par défaut Réupérer la date d'une exécution
    Bonjour

    On a une procédure stockée qui roule à tous les soirs.

    Dès fois, pour une raison ou une autre, l'exécution de cette procédure échoue.

    J'aimerai rajouter une condition au code de cette procédure stockée pour qu'elle tourne en prenant compte de la date de la dernière bonne exécution + 1 jour.

    Est-ce qu'il y a moyen d'extraire cette date du serveur et de l'implanter dans le corps de la procédure.

    Merci.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Ce genre de truc dépend probablement du SGBD. Comme celui-ci n'est pas précisé, contrairement aux règles du forum, il y a peu de chances que vous obteniez une réponse.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 430
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Ce genre de truc dépend probablement du SGBD. Comme celui-ci n'est pas précisé, contrairement aux règles du forum, il y a peu de chances que vous obteniez une réponse.
    C'est parce que je veux que a soit fait par des requêtes SQL dans le language SQL

    Mon SGBD est SQL SERVER 2000.

    Merci.

  4. #4
    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,

    Si vous exécutez toutes les nuits une procédure stockée, je suppose que vous commandez cette exécution par un job avec l'Agent SQL Server.
    Dans ce cas, l'historique des exécutions de tous les jobs est requêtable dans la table système msdb.dbo.sysjobhistory.
    La colonne run_status de cette table vous renseigne sur l'état d'exécution du travail :

    - 0 = échec
    - 1 = succès
    - 2 = nouvelle tentative
    - 3 = annulation
    - 4 = en cours

    Les colonnes run_date et run_time vous renseignent sur la date d'exécution du job. Comme ce sont des entiers, vous devez torturer un peu les valeurs pour en obtenir une date.

    Cela ressemble donc à :

    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 @NouvelleDateExec DATETIME
     
    SELECT @NouvelleDateExec = DateTimeExec + 1
    FROM
    (
    	SELECT MAX(CAST(STUFF(STUFF(DateExec, 12, 0, ':'), 15, 0, ':') AS DATETIME)) AS DateTimeExec
    	FROM
    	(
    		SELECT CAST(H.run_date AS CHAR(8)) + ' ' +
    				CASE LEN(CAST(H.run_time AS VARCHAR(6)))
    					WHEN 5 THEN '0' + CAST(H.run_time AS CHAR(5))
    					ELSE CAST(H.run_time AS CHAR(6))
    				END AS DateExec
    		FROM msdb.dbo.sysjobs AS J
    		JOIN msdb.dbo.sysjobhistory AS H
    			ON J.job_id = H.job_id
    		WHERE J.name = 'TEST'
    		AND H.run_status = 1
    		AND H.step_id = 1
    	) AS EXEC_JOB_TEST
    ) AS DER_EXEC_JOB_TEST_OK
     
    SELECT @NouvelleDateExec
    @++

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 430
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Bonjour,

    Si vous exécutez toutes les nuits une procédure stockée, je suppose que vous commandez cette exécution par un job avec l'Agent SQL Server.
    Dans ce cas, l'historique des exécutions de tous les jobs est requêtable dans la table système msdb.dbo.sysjobhistory.
    La colonne run_status de cette table vous renseigne sur l'état d'exécution du travail :

    - 0 = échec
    - 1 = succès
    - 2 = nouvelle tentative
    - 3 = annulation
    - 4 = en cours

    Les colonnes run_date et run_time vous renseignent sur la date d'exécution du job. Comme ce sont des entiers, vous devez torturer un peu les valeurs pour en obtenir une date.

    Cela ressemble donc à :

    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 @NouvelleDateExec DATETIME
     
    SELECT @NouvelleDateExec = DateTimeExec + 1
    FROM
    (
        SELECT MAX(CAST(STUFF(STUFF(DateExec, 12, 0, ':'), 15, 0, ':') AS DATETIME)) AS DateTimeExec
        FROM
        (
            SELECT CAST(H.run_date AS CHAR(8)) + ' ' +
                    CASE LEN(CAST(H.run_time AS VARCHAR(6)))
                        WHEN 5 THEN '0' + CAST(H.run_time AS CHAR(5))
                        ELSE CAST(H.run_time AS CHAR(6))
                    END AS DateExec
            FROM msdb.dbo.sysjobs AS J
            JOIN msdb.dbo.sysjobhistory AS H
                ON J.job_id = H.job_id
            WHERE J.name = 'TEST'
            AND H.run_status = 1
            AND H.step_id = 1
        ) AS EXEC_JOB_TEST
    ) AS DER_EXEC_JOB_TEST_OK
     
    SELECT @NouvelleDateExec
    @++
    Merci pour ces explications.

    Lorsque j'exécute ce code tel quel ca me donne "Null"

    Est-ce que 'TEST' reprèsente le nom de ma job ?

  6. #6
    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
    Est-ce que 'TEST' reprèsente le nom de ma job ?
    Exact, désolé de ne pas te l'avoir précisé

    @++

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

Discussions similaires

  1. date d'une requete sql
    Par innosang dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/04/2004, 09h27
  2. [SQL] Conditions sur une date dans une requete
    Par poufouille dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/03/2004, 14h25
  3. insérer une date dans une table mssql
    Par ericmart dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/01/2004, 10h37
  4. test la valeur d'une date dans une requete
    Par TuxP dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/01/2004, 14h53
  5. Transformation de date dans une procédure stockée
    Par bd0606 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/10/2003, 11h31

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