Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADO Fehlermeldung - "aus mehreren Schritten OLE DB-Vorgang" (https://www.delphipraxis.net/48221-ado-fehlermeldung-aus-mehreren-schritten-ole-db-vorgang.html)

generic 22. Jun 2005 12:40

Datenbank: MSSQL • Version: 2000 • Zugriff über: Borland.ADO

ADO Fehlermeldung - "aus mehreren Schritten OLE DB-Vorg
 
Moin

ich greife mittels ADODatasets auf eine MSSQL Datenbank zu.
Wenn ich jetzt viele Datensätze bearbeite (ca. 50000) tritt gelegentlich der Fehler:
Zitat:

Fehler bei einem aus mehreren Schritten bestehenden OLE DB-Vorgang. Prüfen Sie die einzelnen OLE DB-Statuswerte, falls vorhanden. Daten wurden nicht verarbeitet
auf.

Die Anwendung ist nicht multithreaded bzw. das Programm läuft nur im VCL Thread.
die datasets werden zur laufzeit erstellt.

Was erzeugt genau die Fehlermeldung?
Wie kann ich den Fehler verhindern?

[edit]
OS: XP SP2

generic 16. Jan 2006 08:40

Re: ADO Fehlermeldung - "aus mehreren Schritten OLE DB-
 
ich konnte inzwischen den fehler auf ein sql reduzieren.

dieser fehlermeldung kommt von ado dann, wenn innerhalb des sql's welches ausgeführt werden soll, eine (oder mehrere) funktionen/ stored procedures aufgrufen werden und ein tieferer func/proc aufruf fehl schlägt.

im sql-query analyser wird dann meist der richtige fehler angezeigt.

alzaimar 16. Jan 2006 10:09

Re: ADO Fehlermeldung - "aus mehreren Schritten OLE DB-
 
Auch wenn Du das Problem gelöst hast, solltest Du verstehen, wie ADO die Rückgaben vom SQL-Server interpretiert (weist Du ja vielleicht sogar schon).

Jedes Select erzeugt mindestens eine Meldung 'xy Rows affected', selbt bei einem "SELECT @foo = 1". ADO interpretierte diese Meldung nach einem INSERT/UPDATE/DELETE, ob die Operation überhaupt funktioniert hat. Deshalb sollte man IMMER in Triggern als erste Zeile ein 'Set nocount on' machen, damit nämlich die o.g. Meldung unterdrückt wird.
Nun ist die Welt in Ordnung: ADO macht z.B. ein INSERT (eine Zeile) und wartet auf die Meldung '1 rows affected'. Wenn das kommt, ist ADO zufrieden.

Wenn Du also INSERT-Trigger hast, gleich erstmal in 'set nocount on', 'set nocount off' klammern. Danach wird die ADO-Fehlermeldung vermutlich anders aussehen, vielleicht siehst Du dann sogar die richtige Fehlermeldung. Auf jeden Fall ist die Welt dann in Ordnung.

Ganz fies wird es bei 'updatable Views', bei denen das automatische Update/Insert/Delete durch einen 'Instead of'-Trigger ausgeschaltet ist ('CREATE TRIGGER foobar ON MyView INSTEAD OF INSERT...') Dann MUSST Du die o.g. Meldung irgendwie erzeugen, damit ADO weiss, das die Operation funktioniert hat.

shmia 16. Jan 2006 13:36

Re: ADO Fehlermeldung - "aus mehreren Schritten OLE DB-
 
Lies dazu auch mal in der Code-Library:
ADO-Fehler (bestehend aus mehreren Schritten) anzeigen

generic 16. Jan 2006 13:54

Re: ADO Fehlermeldung - "aus mehreren Schritten OLE DB-
 
lustig, wollte eigendlich nur nochmal das ergebnis meiner offen frage zusammen fassen und diese als erledigt markieren.
nach ca. 6 monaten (einstelldatum: 22.06.2005) weiss plötzlich jeder von dem problem und hat vorschläge.
die getalladoerrors werde ich mal mir anschauen.

danke

p80286 7. Mär 2013 13:23

AW: ADO Fehlermeldung - "aus mehreren Schritten OLE DB-Vorgang"
 
OK ist etwas älter, aber da mir dieser Fehler in letzter Zeit auch des öfteren über den Weg gelaufen ist...
Er bedeutet, das irgendein Wert/String außerhalb der vorgegebenen Begrenzungen liegt.
Dies kann z.B. so hervorgerufen werden
Code:
select ID||'und jetzt kommt gaanz viel 100-200 Zeichen Text'
oder aber auch durch einen "ungewöhnlichen" Datumswert
Code:
SELECT ..,to_char(MyDATE)...
zurückgegeben wird
Code:
0004-11-11 00:00:00
Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz