ADO SQL-Command Länge

26. November 2013 12:40

Hallo zusammen,

ich verwende ADO um SQL-Commands auf einer SQL-Datenbank abzusetzen.

Dabei habe ich bis jetzt die Automation "'Microsoft ActiveX Data Objects 2.8 Library'.Connection" verwendet.
Am Anfang verwendete ich eine Textvariable (1024) um den SQL-Command aufzubereiten.
Das hat auch ganz gut funktioniert. Nun gibt es aber Tabellen mit sehr vielen Feldern und dabei bin ich an die Limit von 1024 Zeichen gekommen.

Nun dachte ich, dass ich dies mit Bigtext anstelle von Text umgehen könnte. Ich fülle den SQL-String mit "SQLCommandG.ADDTEXT(SQLText)" und führe am Schluss einen
"ADOConnectionG.Execute(FORMAT(SQLCommandG))" durch. Auch diese funktioniert mit Tabellen, welche nicht soviele Felder haben, einwandfrei.

Bei Tabellen mit sehr vielen Feldern erhalte ich nun aber die Fehlermeldung: "The following text cannot exceed a total of 2314 characters".
Dabei wird mit der gesamte SQL-Command angezeigt. Der SQL-Command wurde also komplett abgefüllt.

Liegt das Problem bei der Übergabe an die Automation?
Oder wie kann ich das Problem umgehen?

Vielen Dank, Beno

Re: ADO SQL-Command Länge

26. November 2013 13:02

Handelt es sich um den RoleTailored-Client (RTC) oder den Classic-Client (CC)?

Im RTC hast du die Möglichkeit auf dotnet Variablen zuzugreifen, welche diese Beschränkung nicht besitzen.

Re: ADO SQL-Command Länge

26. November 2013 14:06

Hallo Michael,

es wäre eigentlich der Classic Client...

Siehst Du eine Möglichkeit, diese Beschränkung auch im Classic Client zu umgehen?
Wenn nicht, dann bräuchte ich eine kleine "Anfahrhilfe" beim RTC und dotnet (oder ginge es auch irgendwie im CC)?

Merci, Beno

Re: ADO SQL-Command Länge

26. November 2013 14:59

Im Classic Client wüsste ich jetzt keine Möglichkeit dies zu umgehen, da ich mir ja nicht mal sicher bin woher das kommt. Höchstens mit einer gespeicherten Prozedur oder sowas. Da kenne ich mich aber leider nicht so gut aus.

Für den RTC habe ich das irgendwann mal gefunden: Link

Re: ADO SQL-Command Länge

4. Dezember 2013 10:21

Kannst Du Deine SQL Statements ggf. als "Stored Procedure" bauen? Dann müsstest Du per ADO nur einen kurzen "EXEC sp_irgednwas ..." abschicken!?

Re: ADO SQL-Command Länge

4. Dezember 2013 11:00

Hallo Stryk,

vielen Dank für Deine Antwort.

Nun, ich bin leider kein SQL-Experte und würde mich mit Stored Procedures ziemlich schwer tun...
Zudem geht es hier um mehr als tausend Tabellen. Dann müsste ich schon eine Stored Procedure haben, welcher ich flexible Parameter übergeben könnte.
Aber das geht wohl leider nicht und wenn doch, dann wüsste ich nicht wie.

Momentan erstelle ich automatisch pro Tabelle ein SQL-Script (cmd), welches ich dann jeweils aus NAV aufrufe und durchführe.
Nicht sehr elegant, aber ziemlich effektiv.

Viele Grüsse, Beno