2010-05-12 7 views
0

J'ai récemment travaillé avec un composant COM + qui traite un fichier XML d'entrée, et fait un certain nombre de mises à jour de base de données sur la base des données fournies.Debugging « Syntaxe incorrecte » Exception

Exécution Profiler SQL avec exception EventClass et erreur de l'utilisateur sélectionnée dans le menu, je vois:

Exception Erreur: 102, Gravité: 15, État: 1
erreur utilisateur message syntaxe incorrecte près de '3'.

Cependant, je veux vraiment voir le SQL complet qui est fourni par le composant COM +.

Y at-il de toute façon pour moi en utilisant Profiler, ou autre, pour moi d'intercepter l'instruction SQL qui a été envoyé à SQL Server?

Cette machine utilise SQL Server 2005 et l'objet COM + est écrit en Delphi.

Répondre

1

Les événements requis sont SQL: BatchStarting ou SQL: BatchCompleted. Le principal point de confusion est que le SQL est sorti APRES les messages d'erreur - ce qui est logique quand on y pense, mais peut ne pas être intuitif.

Par exemple, avec la requête SELECT * FROM Table WHERE ID=3 8 (notez l'espace incorrect entre 3 et 8), j'ai reçu la sortie suivante.

Exception Error: 102, Severity: 15, State: 1 
User Error Message Incorrect syntax near '8'. 
SQL:BatchStarting SELECT * FROM Table WHERE ID=3 8 
SQL:BatchCompleted SELECT * FROM Table WHERE ID=3 8 
1

Dans Profiler, essayez de regarder les événements SP: StmtStarting et SQL: StmtStarting et incluez la colonne TextData dans la sortie.

Je pense que ces événements ne sont affichés dans la liste de sélection que si vous cochez la case "Afficher tous les événements" dans l'onglet Sélection des événements.

+0

J'ai essayé d'utiliser SP: StmtStarting et SQL: StmtStarting en vain, mais tout en faisant ce test je remarquai que le SQL que je voulais était inclus après l'erreur sous SQL: BatchStarting (voir ma réponse). Je suppose que cela n'arrive pas à StmtStarting car il échoue à analyser. – MattH

Questions connexes