AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Probleme mit TADOQuery wenn zuviele Spalten?
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit TADOQuery wenn zuviele Spalten?

Ein Thema von Jumpy · begonnen am 27. Apr 2011 · letzter Beitrag vom 3. Mai 2011
Antwort Antwort
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#1

AW: Probleme mit TADOQuery wenn zuviele Spalten?

  Alt 2. Mai 2011, 08:32
Hallo, mal ein Update zur Lage der Nation...

Aktueller Weg:
Anwendung -> ADOExpress -> ADO -> OLE DB Provider von Oracle -> NETx-Treiber -> DB
Ich benutze mit ODBC ja glaub ich noch eine Schicht mehr, oder zumindest einen anderen Provider. Hab mir nochmal den Connection-String angeschaut, da ist der Provider MSDASQL.1 (MS OLE DB Provider for ODBC Drivers). Dann noch der ODBC-Treiber als weitere Schicht?

Hab nun testweise mal auf ODBC verzichtet und benutze nun direkt den Oracle Provider for OLE DB und gehe damit direkt an die Datenbank und siehe da, es geht.
D.h. es scheint wirklich am ODBC-Treiber zu liegen, dass es mal geht (neuer Treiber) und mal nicht (alter Treiber).

Desweiteren habe ich auch durch mühevolles rumraten herausgefunden, dass nicht, wie zunächst vermutet, die "Breite" der Tabelle schuld ist, sondern ein Datenfeld vom Typ Long. Habe daraufhin weitere Tabellen mit Long-Datentypen gefunden, die auch Ärger machen. Leider können wir daran nichts ändern.
Ach ja, die Einstellung "Force Long retrival" oder so ähnl., die man dem ODBC-Treiber mitgeben kann, hat auch nicht geholfen.

Über kurz oder lang werden wir also wohl auf neue ODBC_Treiber wechseln müssen (da wir sowieso bald neuere Oracle Clients brauchen, kommt das sowieso irgendwann).
Nochbesser wäre wie du gesagt hast, sicher der native Zugriff, aber dazu muss noch viel Überzeugungsarbeit geleistet werden.

Danke, aber auf jeden Fall für die Tips
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.224 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Probleme mit TADOQuery wenn zuviele Spalten?

  Alt 2. Mai 2011, 08:36
..., da ist der Provider MSDASQL.1 (MS OLE DB Provider for ODBC Drivers).

Über kurz oder lang werden wir also wohl auf neue ODBC_Treiber wechseln müssen (da wir sowieso bald neuere Oracle Clients brauchen, kommt das sowieso irgendwann).
Der obige Eintrag weist auf einen MS-Treiber hin. Und dieser wird nicht aktualisiert wenn man den Oracle-Client aktualisiert.
Da MS diesen abgekündigt hat wird diese über kurz oder lang gar nicht mehr ausgeliefert, sprich: Dein Programm startet gar nicht mehr.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: Probleme mit TADOQuery wenn zuviele Spalten?

  Alt 2. Mai 2011, 09:27
Zitat:
..LONG.. leider können wir daran nichts ändern..
Da hilft Dir vermutlich mittelfristi auch ein toller Third Party Treiber nicht unbedingt weiter. LONG soll nicht mehr verwendet werden, der Typ wird nur noch aus Kompatibilitätsgründen unterstützt.

LOB ist angesagt.
Gruß, Jo
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: Probleme mit TADOQuery wenn zuviele Spalten?

  Alt 2. Mai 2011, 09:59
..., da ist der Provider MSDASQL.1 (MS OLE DB Provider for ODBC Drivers).

Über kurz oder lang werden wir also wohl auf neue ODBC_Treiber wechseln müssen (da wir sowieso bald neuere Oracle Clients brauchen, kommt das sowieso irgendwann).
Der obige Eintrag weist auf einen MS-Treiber hin. Und dieser wird nicht aktualisiert wenn man den Oracle-Client aktualisiert.
Da MS diesen abgekündigt hat wird diese über kurz oder lang gar nicht mehr ausgeliefert, sprich: Dein Programm startet gar nicht mehr.
"MS OLE DB Provider for ODBC Drivers", so hab ich das verstanden, ist das MS-Ding, um ODBC-Datenquellen ansusprechen. "Ding" weil ich nicht weiß, was es wirklich ist, beim Erstellen einer Connection hab ich es unter dem Punkt Provider ausgewählt.

Es ist aber nicht der ODBC-Treiber, sondern wie gesagt der Provider für den Treiber, oder so?

In unserer modernen Maschiene wird (zumindest dem Namen nach) der selber Provider benutzt und da funktioniert es ja. Das einzige was da anders ist, ist halt der ODBC-Treiber, der dann von diesem Provider angesprochen/benutzt wird.

Ich gehe daher schon davon aus, das ein Oracle-Client-Wechsel zusammen mit einem ODBC-Treiber-Wechsel das Problem zumindest kurzfristig löst.

In allen anderen Punkten habt ihr natürlich recht, das das alles nicht das Wahre ist, aber diese Entscheidungen liegen über meiner Gehaltsstufe (wie eigentlich alles, da ich ja nur der Azubi bin ).

@jobo: s.o. Hinzukommt noch, dass die DB eigentlich zu einer Fremdsoftware gehört, die halt aus welchen Gründen auch immer noch Long-Datentypen benutzt. Das ist öfters schon bemängelt worden, aber ich glaube die Hersteller trauen sich da nicht so ran. Wahrsch. weil keiner weiß, wo es lles knallt, wenn man da mal was ändert. Stichwort Software-Evolution.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.224 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Probleme mit TADOQuery wenn zuviele Spalten?

  Alt 2. Mai 2011, 10:05
"MS OLE DB Provider for ODBC Drivers", so hab ich das verstanden, ist das MS-Ding, um ODBC-Datenquellen ansusprechen.
Vergiss das letzte was ich gesagt habe. Habe es mit dem "MS Oracle Provider" verwechselt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: Probleme mit TADOQuery wenn zuviele Spalten?

  Alt 2. Mai 2011, 11:10
OK. Stimmt ja der ist wirklich Mist.
Hoffe MS hat das jetzt nicht gehört
Ralph
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: Probleme mit TADOQuery wenn zuviele Spalten?

  Alt 2. Mai 2011, 22:25
Wenn Du mit ADO via OLEDB Provider for ODBC arbeitest, ist das schon recht "umständlich", dann noch veraltete Feldtypen. Da kann man nicht viel erwarten.
Welche Clientversion von Oracle wird denn derzeit eingesetzt?
Wenn es eine ältere ist, würde ich eher den ADO OLEDB Provider von MS empfehlen.
Wenn es eine neuere ist, sagen wir ab 9 oder 10 eher den Provider von Oracle.
LOBS sind allerdings nach meiner Erfahrung kein Aushängeschild des MS Treibers gewesen, dann lieber Oracle.

Zum eigentlichen Problem:
LONG ist ja per se eher selten (max ein Feld pro Tabelle?). Also einfach sparsam verwenden.
Es dürfte sowieso keine Anwendung geben, die Felder bis 2Gb Größe im Normalbetrieb bis ins GUI schleppt. Wenn dann nur auf Anforderung und das kann man ja dann gezielt per Stored Proc regeln, solange man nicht migrieren kann/darf.

P.S.: Eine Stored Proc, die beim Lesen/Schreiben von/nach Long in CLOB konvertiert, geht wohl doch nicht, zumindest hab ich im Nachhinein keine CLOB to LONG Konvertierung gefunden, was ich eigentlich für selbstverständlich hielt.
Zur Entschuldigung sei gesagt, das LONG schon seit Oracle 8 verboten ist, und da war ich noch klein.
Gruß, Jo

Geändert von jobo ( 3. Mai 2011 um 07:12 Uhr) Grund: Blödsinn geschrieben, Apropos wie geht das nachträgliche Durchstreichen?
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#8

AW: Probleme mit TADOQuery wenn zuviele Spalten?

  Alt 3. Mai 2011, 08:08
Wenn Du mit ADO via OLEDB Provider for ODBC arbeitest, ist das schon recht "umständlich", dann noch veraltete Feldtypen. Da kann man nicht viel erwarten.
Ich weiß, aber das zu Ändern müssen andere Entscheiden. Ich mach aber mal Dampf.

Welche Clientversion von Oracle wird denn derzeit eingesetzt?
9 auf den alten, 11 auf den neuen Rechnern. Die Datenbanken sind 10. Sobald die erste 11er DB kommt, funzt der 9er Client nicht mehr wirklich, dann wird alles auf 11 umgestellt.

LONG ist ja per se eher selten (max ein Feld pro Tabelle?). Also einfach sparsam verwenden.
Es dürfte sowieso keine Anwendung geben, die Felder bis 2Gb Größe im Normalbetrieb bis ins GUI schleppt. Wenn dann nur auf Anforderung und das kann man ja dann gezielt per Stored Proc regeln, solange man nicht migrieren kann/darf.
Wie gesagt, wir habens nicht verbrochen und müssen nur damit leben, dass der Hersteller der Software diese Felder nicht anpacken will. Da jetzt mit Stored Procs einzugreifen und sowas wie eine migration on the fly umzusetzten ist glaub ich zu riskant und aufwendig, da bei jedem Releasewechsel, alle paar Monate, alles geprüft werden müsste. Das ist zuviel Aufwand für die paar Auswertungen, die wir zusätzlich zu denen der Software, aus der Datenbank ziehen.

Mit dem direkteren Zugriff (ohne ODBC), wenn es nötig ist, bin ich erstmal zufrieden.
Danke nochmal!
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz