jro.CompactDatabase (ADO) löscht Tabellen
Jagger
Gesendet: 11.01.19 21:37
Betreff: jro.CompactDatabase (ADO) löscht Tabellen


New user

Beiträge: 2

Hallo Forum,

ich bin neu hier, da ich gerade über ein "spannendes" Problem gestoßen bin und etwas ratlos bin.

Wir haben noch eine Anwendung, die als Datencontainer eine Access 97 Datenbank verwendet.
Nun hatte ich kürzlich zwei Mal eine beschädigte Datenbank bei Kunden.
Nach der Reparatur über ADO mit:
jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Quelle, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Ziel & ";Jet OLEDB:Engine Type=4"
konnte die Datenbank zwar repariert werden, es fehlten jedoch einige Tabellen. Einfach weg. Das hatte ich zuvor noch nie.

Das Problem entsteht auch nur auf Windows 10 Rechnern.
Auf meinem Windows 7 Rechner bleiben alle Tabellen erhalten.

Ich habe daher ein paar Test auf einem Windows 10 Rechner gemacht und konnte das Problem lokalisieren. Es kristallisierte sich dabei ein erstaunliches Problem heraus:
Es liegt an der Feldbezeichnung und seiner Länge!

Wer es gerne nachstellen will:
Man lege eine neue Access 97 Datenbank an mit einer Tabelle und einem Feld.
Wenn die Feldbezeichnung mehr als 32 (die magische Zahl!) Zeichen lang ist, dann knallt es und die Tabelle wird durch CompactDatabase komplett gelöscht.
Vermutlich kommt dieser gravierende Fehler bei späteren Access-Versionen nicht zum Tragen.

Microsoft schafft es immer wieder mich durch Updates zu verblüffen.
Auf meinem Testrechner ist eine msjro.dll in Version 6.2.17134.1 (Produktversion 10.0.17134.1) vom 12.04.2018 vorhanden.
Es ist aber eher ein junges Problem, da wir durch die anderen kleinen Windows 10 Updates schon häufiger auf Windows 10 Datenbanken reparieren mussten ohne dieses Phänomen. Eventuell ja erst seit dieser Woche mit den neusten Windows 10 Updates.

Kennt jemand diesen Fehler?

Edited by Jagger 11.01.19 20:44
Top of the page Bottom of the page