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

Bases de données Delphi Discussion :

[MS SQL][BDE][ODBC]Toutes instructions ne sont pas executees


Sujet :

Bases de données Delphi

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 265
    Points : 290
    Points
    290
    Par défaut [MS SQL][BDE][ODBC]Toutes instructions ne sont pas executees
    Bonjour,

    J'utilise le BDE via une source ODBC pour une connection à une BDD SQL Server 2000.
    Depuis Delphi avec une TQuery j'execute (ExeqSQL) une requete avec au moins 500 instructions INSERT INTO ou UPDATE.

    Le probleme : toutes les instructions ne sont pas executées
    Seulement de 457 à 459 instructions sont executées.
    Avec la meme requete depuis la console SQL Server toutes les instructions sont bien executées.

    Je peux (et je vais) découper la requete en lots de requetes. Mais j'aimerai bien comprendre ce qui ce passe. Y a t il un parametre dans le BDE ou la source ODBC pour ce nombre d'instruction :

    Merci,

    @+


    _______________________________
    Sujet déplacé par yobenzen
    Ancin forum : MS SQL Serveur

  2. #2
    Membre éclairé
    Avatar de efficks
    Inscrit en
    Septembre 2005
    Messages
    712
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 712
    Points : 776
    Points
    776
    Par défaut
    Peut-être un timeout. Il y a peut-être une limite de temps que ta connexion SQL peut restée ouverte.
    Avant de poster : FAQ, tutos, rechercher, google, ... Après :
    Merci

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 265
    Points : 290
    Points
    290
    Par défaut
    Salut,

    Je pense(j'espere) que sur un timeout delphi envoie une exception. De plus je ne vois aucun parametre de timeout dans BDE ou ODBC.

    Merci,

    @+

  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 761
    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 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    je pense que vous devez utiliser le mot clef GO probablement dans votre script SQL.

    Ce mot n'est pas pris en compte par aucun middleware (BDE, ODBC, OLEdb).
    C'est un mot qui n'est compris que par certians outils MS comme l'analyseur de requête, ISQL et OSQL.
    Il est intercepté et traité à ce niveau et jamais au niveau de SQL Server.

    Il sert en fait à considérer que le fichier doit être coupé en plusieurs fichiers virtuels lancés les uns à la suite des autres.

    Lisez l'article que j'ai écrit à ce sujet : http://sqlpro.developpez.com/cours/s...nsactsql/#L2.7

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

  5. #5
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Le mieux pour toi serait mieux de poster ton scripte de commandes pour qu'on puisse mieux juger.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Le mieux serait, peut être, que tu en fasses une procédure stockée surtout si cette requete doit être appellée souvent par to programme.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 265
    Points : 290
    Points
    290
    Par défaut
    Merci pour vos réponses.

    @SQLPro : Le jeu de requetes est executé depuis delphi via BDE + ODBC, donc l'instruction "GO" ne fonctionne pas.

    @WOLO Laurent : Le probleme ne vient pas des requetes mais du lot.
    Nous avonc rencontré le problème sur une table à plusieurs champs avec des insertions dans chaque champs.
    Mais le probleme est tres bien reproduit sur une table de test à un seul champ (requetes d'insertion tres simples).
    Dans tous les cas seulement les 458 premieres requetes sont executees.

    @Malatar : Les requetes du lot à executer sont toutes relativement différentes. Nous ne souhaitons pas utiliser de procédures stockées.

    Ce qui me gene dans cette histoire c'est que Delphi ne nous dit rien... un ptit message du genre "J'en ai marre je m'arrete à 458 requetes" serait le bienvenu.
    De plus je ne trouve pas ou ce seuil est défini.

    Nous avons décidé de découper le lot de requetes en lots plus petits mais j'aimerai comprendre le probleme.

    @+

  8. #8
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Quel est alors ton séparateur d'instructions ?
    Est un Point-virgule ou un GO ?
    Du moins c'est ce que SQLPro voulait savoir et j'ai voulu que tu postes ton scripte à cet effet.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 265
    Points : 290
    Points
    290
    Par défaut
    La requête de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    INSERT INTO TestMaxInsert (ChpPK) VALUES ('0');
    INSERT INTO TestMaxInsert (ChpPK) VALUES ('1');
    ...
    INSERT INTO TestMaxInsert (ChpPK) VALUES ('i');
    ...
    INSERT INTO TestMaxInsert (ChpPK) VALUES ('n');
    Avec n > 460.

    merci,

    @+

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/03/2008, 11h31
  2. Réponses: 6
    Dernier message: 09/02/2008, 17h49
  3. [SQL Server][ODBC - BDE]Erreur hstmt
    Par Zatoobux dans le forum Bases de données
    Réponses: 1
    Dernier message: 30/08/2004, 15h06
  4. Processus Sql Server prend toute la mémoire vive
    Par cracosore dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 19/02/2004, 17h53

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