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 :

Internal SQL Server error ?


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 15
    Points : 14
    Points
    14
    Par défaut Internal SQL Server error ?
    Bonjour,

    Dans le cadre d'un projet de migration d'une base de données sybase vers SQL Server je modifie des procédures stockées.
    J'ai modifié une procédure pour la rendre compatible avec SQL Server et lors du lancement de la procédure, le message suivant apparaît: "Internal SQL Server error".

    Quelqu'un peut il me dire à quoi correspond cette erreur?
    Si celle ci est inévitable, comment modifier autrement ma procédure?

    Pour vous situer le contexte:
    procédure en sybase avant modification:

    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
     
    SELECT @valconcorsup = @valconcorsup 
                + IsNull(Sum(lccs_numintligsup*10),0)
                + ISNULL( Sum ( floor (   
                                        ( ISNULL(   
                                                  ( SELECT pte_commande.pcde_larprd 
                                                    WHERE  lig_contrat_cli_sup.lccs_val002 = NULL
                                                    OR     lig_contrat_cli_sup.lccs_val002 > pte_commande.pcde_larprd)
                                                  , lig_contrat_cli_sup.lccs_val002 - IsNull((Select 0.01 WHERE lig_contrat_cli_sup.lccs_codope IN ('7', '8')), 0)
                                                )
                                          - ISNULL(   
                                                    ( SELECT lig_contrat_cli_sup.lccs_val001 + 0.01
                                                      WHERE  lig_contrat_cli_sup.lccs_codope IN ('2', '7', '9'))
                                                    , lig_contrat_cli_sup.lccs_val001
                                                  )
                                        )
                              )
                       ,0)
     
    FROM       lig_contrat_cli_sup,lig_contrat_cli,
          unt_dossier, pte_commande
    WHERE    ...
    Lorsque j'ai compilé cette procédure j'ai eu une erreur avec la syntaxe sum(floor()) qui est interdite en sql server. J'ai donc modifié la procédure ainsi:

    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
    SELECT   @valconcorsup = @valconcorsup 
                             + IsNull(Sum(lccs_numintligsup*10),0)
                             + ISNULL(  (SELECT Sum(SOMME)
                                         FROM (SELECT ( floor (   
                                                                ( ISNULL(
                                                                          (SELECT pte_commande.pcde_larprd 
                                                                           WHERE  lig_contrat_cli_sup.lccs_val002 = NULL
                                                                           OR     lig_contrat_cli_sup.lccs_val002 > pte_commande.pcde_larprd)
                                                                          , lig_contrat_cli_sup.lccs_val002 - IsNull((Select 0.01 WHERE lig_contrat_cli_sup.lccs_codope IN ('7', '8')), 0)
                                                                        )
                                                                  - ISNULL(
                                                                            (SELECT lig_contrat_cli_sup.lccs_val001 + 0.01
                                                                             WHERE  lig_contrat_cli_sup.lccs_codope IN ('2', '7', '9'))
                                                                            , lig_contrat_cli_sup.lccs_val001
                                                                          )
                                                                 )
                                                               )
                                                       ) AS SOMME
                                              ) VALAPP
                                        )
                                        ,0
                                     )
       
    FROM     lig_contrat_cli_sup,lig_contrat_cli,
             unt_dossier, pte_commande
       
    WHERE    ...
    (Merci à Frédéric BROUARD pour m'avoir aidé sur un problème similaire la semaine dernière)
    Mais depuis j'ai la fameuse erreur interne à sql server.

    Ce qui est bizarre c'est que si je retire le "+ IsNull(Sum(lccs_numintligsup*10),0)" du début ça marche, si je remplace la partie "ISNULL (...) - ISNULL (...)" par un nombre en dur (10.254 par exemple) ça marche également.


    Merci d'avance pour vos propositions et du temps que vous me consacrez.

    Vince.

  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 850
    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 850
    Points : 52 984
    Points
    52 984
    Billets dans le blog
    6
    Par défaut
    C'est généralement un problème de syntaxe qu'il ne comprend pas.

    Remplacez les ISNULL par des COALESCE.

    Le SUM est apparament mal placé.

    PS : fiates des jointures dans le JOIN

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par SQLpro
    Le SUM est apparament mal placé.
    C'est du "SELECT Sum(SOMME)" que vous parlez ?
    Si oui en quoi est-il mal placé?
    (je débute en sql server, pardonnez moi si cela semble évident)


    Citation Envoyé par SQLpro
    PS : fiates des jointures dans le JOIN
    Je ne comprends pas votre remarque.
    Pouvez vous détailler s'il vous plait?

    Merci encore pour votre disponibilité

Discussions similaires

  1. Microsoft SQL Server error: 233
    Par agdid04 dans le forum Administration
    Réponses: 6
    Dernier message: 20/04/2013, 08h42
  2. Réponses: 7
    Dernier message: 01/02/2011, 15h23
  3. Erreur interne sql server 2000 SP4
    Par oadin dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/04/2008, 11h13
  4. Microsoft OLE DB Provider for SQL Server error '80040e31'
    Par Webselect dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 27/09/2007, 17h44
  5. [SQL Server] Error converting data type varchar...
    Par Sir Tengu dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 13/06/2003, 10h46

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