So schalten Sie die Ablaufverfolgung ein
Wenn eine Abfrage scheitert und Access nur „ODBC-Verbindung fehlgeschlagen“ oder „ODBC-Aufruf fehlgeschlagen“ meldet, zeigt die Ablaufverfolgung des Treibers den eigentlichen Grund: jede Anfrage an den Dienst, seine Antwort und die Meldung.
Lösungsübersicht
Es gibt zwei Ablaufverfolgungen, die einander ergänzen:
| Ablaufverfolgung | Zeigt | Einschalten |
|---|---|---|
| des Treibers | was der Treiber aus einer Anweisung macht: jede Anfrage an den Dienst, die Antwort, Meldungen, Anmeldeverfahren | TRACEFILE=<Datei> in der Verbindung oder Umgebungsvariable WKL_ODATA_ODBC_TRACE |
| des Treibermanagers (Windows) | jede Anweisung und jeden ODBC-Aufruf der Anwendung | ODBC-Datenquellen-Verwaltung, Registerkarte Ablaufverfolgung |
Umsetzung
- Setzen Sie die Umgebungsvariable für den Benutzer, unter dem die Anwendung läuft, etwa
WKL_ODATA_ODBC_TRACE=%TEMP%\wkl-odbc.txt, oder ergänzen Sie in der VerbindungszeichenfolgeTRACEFILE=…. - Starten Sie die Anwendung neu; Access liest Umgebung und Verbindung beim Start.
- Wiederholen Sie den Vorgang, der scheitert, und öffnen Sie die Datei.
- Schalten Sie die Ablaufverfolgung danach wieder ab.
Ergebnis: Je Vorgang stehen Verbindungsaufbau, Anfragen mit Adresse, HTTP-Status und Meldungen des Dienstes in der Datei.
Hinweise
- Geheimnisse: Die Verbindungszeichenfolge erscheint mit
***statt der Werte vonAPIKEY,PWD,TOTPundSESSION. Kopfzeilen der Anfragen schreibt der Treiber nicht. - Fachdaten und Personenbezug: Die Datei enthält im Klartext:
- den Text jeder Anweisung der Anwendung, auch Werte, die die Anwendung selbst in den Text geschrieben hat – steht dort ein Kennwort oder eine Kundennummer, steht es auch in der Datei;
- die Adressen der Anfragen mit den Werten aus Bedingungen und den Schlüsseln geänderter Sätze;
- beim Anlegen und Ändern den Rumpf der Anfrage, also die Felder des Satzes mit ihren Werten;
die Meldungen des Dienstes und der Datenbank sowie angemeldete Namen und Windows-Konten.
Nicht in der Datei stehen die Zeilen der Antworten, die Werte gebundener Parameter einer durchgereichten Anweisung und die Kopfzeilen der Anfragen. Die Ersetzung durch
***erfasst nur diese vier Schlüsselwörter der Verbindungszeichenfolge, nicht den übrigen Text.
- Zeit: Die Ablaufverfolgung schreibt eine Zeile je
SQLFetchundSQLGetDataund verlangsamt das Lesen dadurch spürbar. Messen Sie Zeiten deshalb immer ohne. - Hängende Anwendung: Jede Zeile steht sofort in der Datei, auch wenn der Prozess danach hängt. Die Ablaufverfolgung des Treibermanagers dagegen puffert und geht beim harten Beenden verloren.
- Geändertes Schema: Der Treiber lädt
$metadataeinmal je Verbindung. Ändert sich das Schema des Dienstes, aktualisieren Sie in Access die Verknüpfung (Externe Daten > Tabellenverknüpfungs-Manager).
Datei schützen und weitergeben
Die Ablaufverfolgung ist für die Fehlersuche gedacht, nicht als dauerhaftes Tagebuch des Datenverkehrs. Behandeln Sie die Datei wie einen Auszug der Fachdaten:
| Frage | Verhalten des Treibers | Was Sie tun |
|---|---|---|
| Wer die Datei lesen kann | Der Treiber legt sie ohne eigene Berechtigungen an; sie erbt die des Ordners | einen Ordner wählen, den nur der Benutzer lesen kann, etwa %TEMP%, kein freigegebenes Laufwerk |
| Mehrere Programme zugleich | Jeder Prozess hängt an dieselbe Datei an und lässt andere mitschreiben; die Zeilen tragen Uhrzeit und Thread, aber keine Prozessnummer | je Programm oder Versuch einen eigenen Dateinamen setzen, sonst mischen sich die Zeilen |
| Wie lange sie wächst | Der Treiber hängt nur an; er kürzt, wechselt oder löscht die Datei nie | nach der Fehlersuche abschalten und löschen |
| Weitergabe an den Betreuer | – | die Datei vorher durchsehen, Sätze ohne Bezug zum Fehler entfernen, über einen Weg übergeben, der für personenbezogene Daten zugelassen ist, und danach auf beiden Seiten löschen |