AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

ODBC Monitor

Ein Thema von hewy · begonnen am 21. Dez 2006 · letzter Beitrag vom 23. Jan 2007
Antwort Antwort
hewy

Registriert seit: 2. Aug 2006
Ort: Arni (Region Zürich) Schweiz
56 Beiträge
 
Delphi XE5 Enterprise
 
#1

ODBC Monitor

  Alt 21. Dez 2006, 10:44
Datenbank: MS Access • Version: 2000 • Zugriff über: BDE - ODBC
Hallo zusammen,
Gibt es irgend eine Möglichkeit den Befehlsverkehr zwischen meine Delphi Applikation und eine ms-access Datenbank zu überwachen, z.B. mit irgend einem tool das sich in die BDE oder ODBC einklinkt, oder wie würde sich solch eine Delphi Applikation bauen lassen?
Das Log welches sich in ODBC Verwaltung aktivieren lässt hilft mir leider nicht da dadurch die Applikation quälend langsam wird, und ich möchte die Überwachung über längere Zeit laufen lassen, und beim Auftreten gewisser SQL Querys reagieren.

Besten Dank für jeglichen Wegweiser
Henry
Heinrich Wyssen
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

Re: ODBC Monitor

  Alt 21. Dez 2006, 11:06
Borland liefert(e?) doch in größeren Editionen den Borland SQL Monitor mit. Der sollte sowas doch können.
Was willst Du denn machen in solch einem Fall bzw. wenn es dein Programm ist kann doch du selbst im Programm entsprechend Codieren.


Ansonsten kann ich nur sagen: Weg mit der BDE und ODBC. Für Access nimmt man ADO und geht direkt auf den JET-Treiber los.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
hewy

Registriert seit: 2. Aug 2006
Ort: Arni (Region Zürich) Schweiz
56 Beiträge
 
Delphi XE5 Enterprise
 
#3

Re: ODBC Monitor

  Alt 21. Dez 2006, 20:31
Hallo
Die Situation sieht in etwa so aus:
Applikation mit über 300 Datagrids, Popups und vieles mehr.
Hat jemand anderes gebaut.
Werden gewisse Popups geöffnet werden so an die 20 bis 30 Querys ausgeführt.
Vieles läuft über tQuery, einiges aber auch über tTables.
Nun werden in ganzbestimmten fällen QueryExecutes ausgeführt welche zwar für die Datenbank akzeptable sind, jedoch werden falsche Daten oder Verweise geschrieben. Was wieder zu Fehler in den eingefügten Daten führt. Diese sind jedoch nicht einem bestimmten Teil der Applikation zuzuordnen, denn über 100 Stellen im Programm schreibt i die betroffene Tabelle. Nun suchen wir seit einigen Wochen nach den Ursachen, konnten den Fehler jedoch nicht reproduzieren. Daher die Idee einen kleinen Monitor zu schreiben der den Fehlerhaften SQL String aufspürt, und dieses dann ein par Tage auf den verschiedenen Clients laufen lassen.
Auf ADO wechseln will der Kunde nicht finanzieren. Die Applikation läuft sonst sauber, auch wenn diese in vielen Bereichen nach Gebastel aussieht..
Daher meine Frage gibt irgend einen ODBC oder BDE Schnüffler, oder sonst irgend einen anderen Weg.
Danke Henry
Heinrich Wyssen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.123 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: ODBC Monitor

  Alt 28. Dez 2006, 08:25
Hallo,

wie schon gesagt, gibt es den sql monitor in den
enterprise-Versionen. Der muss vor der eigentlichen Anwendung gestartet werden.

Alternativ gibt es:

http://www.delphi3000.com/articles/article_2828.asp?SK=

Dort muss man sich aber anmelden,
ist aber für die ersten 50. Artikel kostenlos.

Das "Tracen" über Callback geht auch für "normale" Befehle.

Das "in bestimmten Fällen falsche Verweise" leuchtet mir nicht ein,
auch Access hat foreign keys (oder nicht).
Wenn nicht, musst du halt ne Debug-Version schreiben,
die vor dem Schreiben die Gültigkeit noch mal prüft.
Das das in einer App, die du nicht selbst geschrieben hast nicht so winfach ist,
ist mir klar.


Heiko
PS:
Heiko
  Mit Zitat antworten Zitat
hewy

Registriert seit: 2. Aug 2006
Ort: Arni (Region Zürich) Schweiz
56 Beiträge
 
Delphi XE5 Enterprise
 
#5

Es liegt an Boolean Felder vom SQL Server

  Alt 29. Dez 2006, 12:44
Hallo
Der SQL Monitor stürzt zusammen mit dem Programm ab noch bevor die Applikation vollständig gestartet ist. Keine Ahnung weshalb im Debugger mit Delphi stürtz er aus nochmals anderen gründen viel früher ab.
Habe nun einen Logger geschrieben der mir die SQL Befehle aufschreibt welche an den Möglicherweise verantwortlichen stellen verwendet werden, und dann schnell den Verursacher entdecken können.
Nun stehe ich vor einem neuen Problem.
Die betreffende Tabelle wurde vor kurzem auf einen SQL Server verlegt, und in der MS Access Datenbank nur noch eingebunden.
Nun zum Problem: in der betreffenden Tabelle gibt es 78 Felder, ein einziges davon ist ein Bit Feld (also Boolean), welches an einer selten verwendeten Checkbox vom GUI hängt. Wird nun dieses Feld angeklickt passiert erst mal nichts ungewöhnliches, erst wenn der Datensatz das nächste mal geöffnet wird erscheint ein Fehler beim Befehl aQuery.Edit, der besagt das der Datensatz geändert wurde und nicht mehr in den edit Modus gesetzt werden kann. Die Fehlermeldung erscheint nur wenn die Applikation innerhalb Delphi gestartet wird. Im Normalen Betrieb merkt man zuerst gar nichts, ausser das die Daten auf dem entsprechenden Popup nicht editierbar sind.
Nun die Frage gibt es irgend eine Spezielle Behandlung für Boolean Felder wenn die Tabelle auf einem SQL Server liegt?
Weis hier jemand etwas?
Danke und Gruss
Heiri
Heinrich Wyssen
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.056 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: ODBC Monitor

  Alt 29. Dez 2006, 20:15
Am besten mal mit dem SQL Server Tracer kontrollieren was überhaupt per SELECT und Update-Befehle für diese Tabelle kommen.
Ein Bit-Feld ist nunmal ein spezieller Datentyp den jede Datenbank anders verwaltet/handelt. Wenn nun solch eine Spalte über ein zweitsystem eingebunden wird und noch per ADO-Mapper umgesetzt wird kann einiges schief laufen bzw. mißverständlich ablaufen (z.B es werden falsche Werte für "0" und "1" zur DB geschickt oder als falscher Datentyp interpretiert.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
hewy

Registriert seit: 2. Aug 2006
Ort: Arni (Region Zürich) Schweiz
56 Beiträge
 
Delphi XE5 Enterprise
 
#7

Re: ODBC Monitor

  Alt 30. Dez 2006, 11:37
Hallo
Der SQL Server Profiler zeigt alle Befehle sauber und Fehlerfrei auf. Das betreffende Bit Feld wird mit 0 für False und 1 für True ausgegeben.
Der Fehler erfolgt wahrscheinlich im GUI. Wird die Tabelle mit aQuery.open geöffnet werden die Daten Fehlerfrei angezeigt, inklusive dem Bit Feld, Sobald der Datensatz in den Edit Modus gesetzt wird erfolgt jedoch die Meldung: ’Datensatz kann nicht gesperrt werden, da der Datensatz von einen anderen Benutzter geändert wurde.’.
Dies auch wenn aQuery.Edit ausgeführt wird.
Es ist nur eine Instanz der Applikation Aktiv, und auch nur einen Client (meiner) zur Zeit online.
Danke für jeglichen Hinweis.
Heiri
Heinrich Wyssen
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.056 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: ODBC Monitor

  Alt 30. Dez 2006, 18:59
Gibt es eigentlich auch den Bit-Datentyp unter Access. Falls ja lege mal eine Tabelle mit der gleichen Struktur direkt in Access an und für die gleichen Tests durch. Welche Datentypen werden auf Delphi-Seite für die Spalten verwendet?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
hewy

Registriert seit: 2. Aug 2006
Ort: Arni (Region Zürich) Schweiz
56 Beiträge
 
Delphi XE5 Enterprise
 
#9

Re: ODBC Monitor

  Alt 3. Jan 2007, 08:43
Die Tabelle wurde ab einer Access Datenbank in den SQL Sever konvertiert, dazu gib es von Microsoft ein Toll das die Struktur erstellt und die Daten überträgt. Danach wurde die Tabelle in der noch immer verwendeten Access Datenbank als externe Tabelle eingebunden. Wird die Tabelle im Access geöffnet sehen die Boolean Felder genau gleich aus wie wenn die selbe Tabelle im MS Access liegt. Das ist eben das verflixte dabei es ist kein Unterschied festzustellen, und dennoch behauptet die Delphi Applikation das etwas geändert wurde wenn ein Boolean Feld geladen ist, und in den Editmodus gewechselt werden soll. Nicht initialisierte Booleanfelder können dagegen problemlos in den Editmous gestellt werden, danach geändert werden und auch gespeichert werden.
Heinrich Wyssen
  Mit Zitat antworten Zitat
hewy

Registriert seit: 2. Aug 2006
Ort: Arni (Region Zürich) Schweiz
56 Beiträge
 
Delphi XE5 Enterprise
 
#10

Problem mit SQL Server und Bit Felder

  Alt 23. Jan 2007, 20:42
Hallo
Danke für alle bisherigen Anregungen,
Da ich jedoch in der ngelegenheit nicht weiter gekommen bin, habe ich nun eine kleine Testapplikation erstellt und den Umfang auf das Minimum reduziert und nun auch ohne die MS Access Datenbank dazwischen.
Es genügt die tQuery in den Edit Modus zu setzen um den Fehler zu produzieren. es brauchen gar keine Komponenten angehängt zu sein.
Der Fehler erscheint jedoch nur bei den Datensätze bei welchen ein Bit Feld vorhanden ist in dem zuvor einmal der Inhalt verändert wurde.
Vieleicht gibt es jetzt jemanden der schon mal damit konfrontiert wurde.
Danke und Gruss
Heiri
Heinrich Wyssen
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf