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 :

Erreur dans un PS en exécution programmée mais OK en manuel


Sujet :

Développement SQL Server

  1. #1
    FMJ
    FMJ est déconnecté
    Membre averti
    Profil pro
    tutu
    Inscrit en
    Octobre 2003
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : tutu

    Informations forums :
    Inscription : Octobre 2003
    Messages : 416
    Points : 363
    Points
    363
    Par défaut Erreur dans un PS en exécution programmée mais OK en manuel
    Bonjour,

    Je vous soumets le petit problème suivant, qui doit être d'une simplicité désarmante, mais que je ne suis pas foutu de solutionner et qui commence à m'énerve puissamment.

    Donc, j'ai développé une procédure stockée sous SQL Server 2000 qui, testée abondamment de façon manuelle (EXEC ...) dans toutes les configurations possibles, fonctionne parfaitement.

    Sauf que, lorsque je l'ai mise en production dans l'ordonnanceur de travaux (exécution vers les 02h00), celle-ci s'arrête sur l'erreur suivante :
    Msg 242, Sev 16 : La conversion d'un type de données CHAR en type DATETIME a donné une valeur hors des limites des valeurs de date et d'heure. [SQLSTATE 22007]
    Cette procédure dispose d'un mode debug qui m'a permis d'identifier la "ligne" générant cette erreur. Il s'agit d'une requête d'insertion toute simple mais assez longue comportant quelques champs calculés que j'ai résumés dans le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CONVERT(VARCHAR, GETDATE(), 120)
    DBO.FN_DATETIME_AS_DATE( GETDATE())
    CAST(SUBSTRING(CONVERT(VARCHAR, GETDATE(), 112), 1,6) AS INT)
    DATEPART(week, GETDATE())
    La fonction FN_DATETIME_AS_DATE est toute simple et déterministe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE FUNCTION FN_DATETIME_AS_DATE (@DT DATETIME) 
    RETURNS DATETIME AS 
    BEGIN
       RETURN CAST(FLOOR(CAST(@DT AS FLOAT)) AS DATETIME)
    END

    Le problème vient du fait que d'une part je ne vois aucune conversion d'un type CHAR vers un DATETIME dans ce code (à part la fonction) et d'autre part que je suis incapable de reproduire cette erreur en exécution manuelle (par contre elle survient systématiquement en exécution programmée, quelque soit l'horaire d'exécution).

    Je subodore bien que le problème vient de cette fonction mais je ne vois pas pourquoi en exécution manuelle, elle fonctionne correctement mais entraîne une erreur en exécution programmée.

    Merci d'avance.

  2. #2
    FMJ
    FMJ est déconnecté
    Membre averti
    Profil pro
    tutu
    Inscrit en
    Octobre 2003
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : tutu

    Informations forums :
    Inscription : Octobre 2003
    Messages : 416
    Points : 363
    Points
    363
    Par défaut
    Bon, je pense avoir trouvé. C'était effectivement très ballot.

    Au lieu d'utiliser des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CONVERT(VARCHAR, GETDATE(), 120)
    qui allaient mettre à jour des champs de type DATETIME, je les ai remplacé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CONVERT(DATETIME, GETDATE(), 120)
    Résultat : plus d'erreur.

    Par contre, je ne m'explique pas la raison de l'absence d'erreur lorsque je lançais manuellement la procédure stockée ?????

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

Discussions similaires

  1. Il y a une erreur dans mon programme, mais où ?
    Par BillGates62 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 16/05/2011, 22h44
  2. erreur dans l'éxécution d'un programme
    Par chlab dans le forum Caml
    Réponses: 1
    Dernier message: 07/06/2010, 22h09
  3. Réponses: 5
    Dernier message: 10/06/2009, 19h47
  4. Réponses: 2
    Dernier message: 23/04/2009, 09h28
  5. une erreur dans l'exécution d'un programme
    Par viou25 dans le forum Langage
    Réponses: 4
    Dernier message: 15/11/2008, 22h52

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