{"id":213662,"date":"2019-01-12T13:44:43","date_gmt":"2019-01-12T12:44:43","guid":{"rendered":"https:\/\/www.borncity.com\/blog\/?p=213662"},"modified":"2021-02-15T02:33:24","modified_gmt":"2021-02-15T01:33:24","slug":"access-97-mdb-fehler-in-jet-datenbank-engine-durch-windows-januar-2019-updates-besttigt","status":"publish","type":"post","link":"https:\/\/borncity.com\/blog\/2019\/01\/12\/access-97-mdb-fehler-in-jet-datenbank-engine-durch-windows-januar-2019-updates-besttigt\/","title":{"rendered":"Access 97-MDB-Fehler in Jet Datenbank Engine durch Windows Januar 2019-Updates best&auml;tigt"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" style=\"float: left; margin: 0px 10px 0px 0px; display: inline;\" src=\"https:\/\/borncity.com\/blog\/wp-content\/uploads\/2013\/03\/winb.jpg\" width=\"58\" height=\"58\" align=\"left\" \/>[<a href=\"https:\/\/borncity.com\/win\/2019\/01\/12\/microsoft-confirms-access-97-mdb-bug-in-jet-database-engine-caused-by-windows-january-2019-updates\/\" target=\"_blank\" rel=\"noopener\">English<\/a>]Microsoft hat den Datenbankfehler beim Zugriff auf Access 97 .mdb-Datenbanken per Jet Database Engine best\u00e4tigt. Das Problem wird in allen unterst\u00fctzten Windows-Versionen durch die Sicherheitsupdates vom 8. Januar 2019 verursacht.<\/p>\n<p><!--more--><\/p>\n<h2>Einige Hintergrundinformationen<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vg04.met.vgwort.de\/na\/075cab305b00448d88ed69ce35d57310\" alt=\"\" width=\"1\" height=\"1\" \/>Ich hatte das Thema gestern im Blog-Beitrag <a href=\"https:\/\/borncity.com\/blog\/2019\/01\/11\/access-datenbankprobleme-nach-januar-2019-updates\/\">Access Datenbankprobleme nach Januar 2019-Updates<\/a>, dank des <a href=\"https:\/\/borncity.com\/blog\/2019\/01\/09\/patchday-windows-10-updates-8-januar-2019\/#comment-67142\">Kommentars hier<\/a> (danke an Blog-Leser Ollert) und <a href=\"https:\/\/administrator.de\/wissen\/kb4480116-und-pendants-macht-probleme-zusammenhang-access-datenbanken-397772.html\" target=\"_blank\" rel=\"noopener\">dieses administrator.de-Posts hier<\/a> aufgegriffen. In Kurzfassung:<\/p>\n<ul>\n<li>In allen Windows-Versionen fixen die Sicherheitsupdates vom 8. Januar 2019 eine Schwachstelle in der in Windows enthaltenen Jet Database Engine.<\/li>\n<li>In Folge dieses Patches scheitern Zugriffe auf Datenbanken im Access 97 MDB-Format mit einem Datenbankfehler \"unknown database format\" \u2013 sofern die Datenbank Feldnamen mit einer L\u00e4nge gr\u00f6\u00dfer 32 Zeichen aufweist.<\/li>\n<li>Das Problem tritt bei Verwendung der Microsoft.Jet.OLEDB.4.0-Providers auf \u2013 die \u00e4ltere Microsoft.Jet.OLEDB.3.51-Variante scheint zu funktionieren (ist wohl ungepatcht).<\/li>\n<\/ul>\n<p>Einige Details sowie Workarounds, von der Deinstallation des Updates \u00fcber Austausch einer DLL bis hin zum \u00c4ndern das Data Source-Strings f\u00fcr den beim Datenbankzugriff zu verwendenden Provider lassen sich im Blog-Beitrag <a href=\"https:\/\/borncity.com\/blog\/2019\/01\/11\/access-datenbankprobleme-nach-januar-2019-updates\/\">Access Datenbankprobleme nach Januar 2019-Updates<\/a> nachlesen.<\/p>\n<blockquote><p>Anmerkung: Blieb die Frage, wie man den Sachverhalt Microsoft zur Kenntnis bringt \u2013 auch wenn das bei MS-Answers diskutiert wird, schauen Entwickler selten da rein. Ich habe daher ein 'Spiel \u00fcber Bande' versucht. Dazu haben ich das Problem im englischsprachigen Blog <a href=\"https:\/\/borncity.com\/win\/2019\/01\/11\/windows-january-2019-updates-breaks-access-to-access-dbs\/\" target=\"_blank\" rel=\"noopener\">beschrieben<\/a>, einen Link in <a href=\"https:\/\/answers.microsoft.com\/en-us\/windows\/forum\/all\/kb4480116-and-kb4480970-failure-getting-access-to\/d701b681-2491-4891-baf6-e3a25b5d2bb7\" target=\"_blank\" rel=\"noopener\">diesem US MS Answers-Forenbeitrag<\/a> gepostet und den Thread an die Microsoft Moderatoren eskaliert. So gab es die Chance, dass die Entwickler den Link auf meinen englischsprachigen Blog-Beitrag zu Gesicht bekommen und etwas damit anfangen k\u00f6nnen. Scheint funktioniert zu haben, wie man nachfolgend sieht.<\/p><\/blockquote>\n<h2>Microsoft best\u00e4tigt das Problem<\/h2>\n<p>Heute Morgen bin ich \u00fcber einen Post von Susan Bradley <a href=\"https:\/\/www.askwoody.com\/2019\/patch-lady-issues-with-win10-access-97\/\" target=\"_blank\" rel=\"noopener\">bei askwoody.com<\/a> und in <a href=\"https:\/\/borncity.com\/win\/2019\/01\/11\/windows-january-2019-updates-breaks-access-to-access-dbs\/#comment-4291\" target=\"_blank\" rel=\"noopener\">meinen Blog<\/a> darauf aufmerksam geworden, dass Microsoft seine KB-Artikel \u00fcberarbeitet hat. Hier die Liste der betroffenen Patches, wo das Access 97-Problem als 'known issue' aufgef\u00fchrt ist.<\/p>\n<ul>\n<li><a href=\"https:\/\/support.microsoft.com\/en-us\/help\/4480116\" target=\"_blank\" rel=\"noopener\">KB4480116<\/a> f\u00fcr Windows 10 Version 1809<\/li>\n<li><a href=\"https:\/\/support.microsoft.com\/en-us\/help\/4480966\" target=\"_blank\" rel=\"noopener\">KB4480966<\/a> f\u00fcr Windows 10 Version 1803<\/li>\n<li><a href=\"https:\/\/support.microsoft.com\/en-us\/help\/4480978\" target=\"_blank\" rel=\"noopener\">KB4480978<\/a> f\u00fcr Windows 10 Version 1709<\/li>\n<li>KB4480973 f\u00fcr Windows 10 Version 1703<\/li>\n<li><a href=\"https:\/\/support.microsoft.com\/en-us\/help\/4480961\" target=\"_blank\" rel=\"noopener\">KB4480961<\/a> f\u00fcr Windows 10 Version 1609<\/li>\n<li><a href=\"https:\/\/support.microsoft.com\/en-us\/help\/4480962\" target=\"_blank\" rel=\"noopener\">KB4480962<\/a> f\u00fcr Windows 10 Version 1507<\/li>\n<li><a href=\"https:\/\/support.microsoft.com\/en-us\/help\/4480963\" target=\"_blank\" rel=\"noopener\">KB4480963<\/a> (Monthly Rollup) f\u00fcr Windows 8.1<\/li>\n<li><a href=\"https:\/\/support.microsoft.com\/en-us\/help\/4480964\" target=\"_blank\" rel=\"noopener\">KB4480964<\/a> (Security Only) f\u00fcr Windows 8.1<\/li>\n<li><a href=\"https:\/\/support.microsoft.com\/en-us\/help\/4480970\" target=\"_blank\" rel=\"noopener\">KB4480970<\/a> (Monthly Quality Rollup) f\u00fcr Windows 7 SP1<\/li>\n<li><a href=\"https:\/\/support.microsoft.com\/en-us\/help\/4480960\" target=\"_blank\" rel=\"noopener\">KB4480960<\/a> (Security-only update) f\u00fcr Windows 7 SP1<\/li>\n<\/ul>\n<p>Microsoft hat den 'known issue'-Abschnitt der KB-Artikel um die folgende Passage erg\u00e4nzt:<\/p>\n<blockquote><p>Applications that use a Microsoft Jet database with the Microsoft Access 97 file format may fail to open if the database has column names greater than 32 characters. he database will fail to open with the error, \"Unrecognized Database Format\".<\/p><\/blockquote>\n<p>Also ziemlich genau das, was ich in der Recherche, basierend auf den Hinweisen von Blog-Leser Ollert, bereits im oben verlinkten Artikel dokumentiert hatte. Microsoft verspricht einen Fix bis Februar 2019 und schl\u00e4gt einige Workarounds vor.<\/p>\n<blockquote><p>Use one of the following options:<\/p>\n<p>Option 1: Modify the database to ensure that all column names are less than or equal to 32 characters.<\/p>\n<p>Option 2: Convert the database to the .accdb file format. <u>To use the .accdb file format, you must change the Connection string after conversion<\/u>.<\/p>\n<p>The easiest way to convert is to use Microsoft Access 2010 or earlier.<\/p>\n<ol>\n<li>Use Microsoft Access to open a database that has an older file format.<\/li>\n<li>You will be asked if you would like to convert. Click <strong>Yes<\/strong> and save the database with the .accdb extension.<\/li>\n<\/ol>\n<p>Option 3: Convert the database to a newer .mdb file format. <u>This doesn't require a change to the Connection string.<\/u><\/p>\n<ol>\n<li>Use Microsoft Access to open a database that has an older file format.<\/li>\n<li>You will be asked if you would like to convert. Click <strong>Yes<\/strong> and save the database with the .accdb file extension.<\/li>\n<li>Open the .accdb.<\/li>\n<li>From the <strong>File<\/strong> menu, click <strong>Save as<\/strong> and select <strong>Access 2002-2003 Database<\/strong>.<\/li>\n<\/ol>\n<\/blockquote>\n<p>Diese drei genannten Optionen sind meines Erachtens mit \u00e4u\u00dferster Vorsicht zu genie\u00dfen bzw. in der Praxis wenig realistisch. Korrigiert mich, wenn meine nachfolgenden Ausf\u00fchrungen unzutreffend sind \u2013 ich bin seit mindestens 15 Jahren aus dem Thema Jet Database Engine, ADO, DAO und OLEDB raus.<\/p>\n<h2>Vorsicht bez\u00fcglich der Microsoft-Vorschl\u00e4ge<\/h2>\n<p>Das Szenario, wo es momentan Probleme gibt, d\u00fcrften compilierte Anwendungen sein, die \u00fcber Laufzeitbibliotheken auf die Datenbanken im Access 97 MDB-Format zugreifen. Meist sind es auch Anwendungen, die historisch gewachsen sind und irgendwann geplant abzul\u00f6sen sind. Da der Bug im Januar 2019 auftritt, sind jetzt Ad-Hoc-L\u00f6sungen gefordert. Schauen wir uns die Microsoft-Vorschl\u00e4ge mal genauer an.<\/p>\n<h3>Option 1: Datenbankfeldnamen k\u00fcrzen<\/h3>\n<p>Der Microsoft-Vorschlag in Option 1, die Namen der Datenbankfelder auf eine L\u00e4nge von 32-Zeichen zu begrenzen, um den Fehler zu umgehen, ist schlicht nicht praktikabel.<\/p>\n<ul>\n<li>\u00c4ndert man eine Felddefinition (Feldname) in der Datenbank, wird i.d.R. eine Anpassung des Codes der betreffenden Anwendung erforderlich. Abseits von Trivialf\u00e4llen scheitert dieser Ansatz a) weil die Anwender keinen Zugriff auf den Code haben und b) weil bei nicht trivialen Anwendungen und Datenbanken der Aufwand zur Validierung dieser Anpassung schlicht zu gro\u00df wird.<\/li>\n<li>Wer sagt mir denn, dass dies der einzige Fehler in der Jet Database Engine ist? Die Begrenzung auf Feldnamenl\u00e4ngen von 32 Zeichen 'riecht' f\u00fcr mich danach, dass da bei der Compilierung der betreffenden DLLs eine strenger Typ-Pr\u00fcfung oder Werte\u00fcberpr\u00fcfung auf Puffer\u00fcberlauf erfolgt. Ob das nur bei 'zu langen Datenbankfeldnamen' oder auch an anderen Stellen zu Problemen f\u00fchrt, lie\u00dfe sich nur per Code-Evaluierung kl\u00e4ren. Das ist f\u00fcr Au\u00dfenstehende nicht m\u00f6glich \u2013 und Microsoft hat da nichts verlauten lassen.<\/li>\n<\/ul>\n<p>Ein Administrator, dem gerade zig Anwendungen in einer Produktionsumgebung stehen, wird im \u00dcbrigen mit solchen theoretischen Konstruktionen wenig anfangen k\u00f6nnen. F\u00e4llt in die gleiche Kategorie wie die schlauen Kommentare zum <a href=\"https:\/\/www.heise.de\/newsticker\/meldung\/Windows-Updates-vom-Januar-2019-verursachen-Access-Datenbankfehler-4272415.html\" target=\"_blank\" rel=\"noopener\">heise-Artikel<\/a> a la 'wer noch mit Access 97 arbeitet ist selbst schuld'. Das nutzt dem Admin nichts, der das Zeugs zum Laufen bringen muss und die Anwendung, aus vielf\u00e4ltigen Gr\u00fcnden nicht einfach abl\u00f6sen kann.<\/p>\n<h3>Option 2\/3: Datenbank konvertieren<\/h3>\n<p>Der zweite und dritte Vorschlag Microsofts lautet, die .mdb-Datenbank in (einer neueren Version von) Microsoft Access zu \u00f6ffnen und dann konvertieren zu lassen. Anschlie\u00dfend liegt die Datenbank in einem neuen Format (z.B. *.accdb) oder ein einem mdb-Datenbankformat f\u00fcr Access 2002-2003 vor.<\/p>\n<p>Klingt wie der Stein der Weisen \u2013 kann klappen, muss aber nicht. Ich erinnere mich an die Zeiten, wo ich noch Einsteigerb\u00fccher zu Access geschrieben habe. Selbst meine Trivialbeispiele mussten beim Wechsel auf eine neue Access-Version erinnerungsm\u00e4\u00dfig schon mal angepasst werden \u2013 und wehe, wenn VBA-Makros dabei waren. Mein letzter Microsoft Press 'Auf einen Blick'-Titel endete mit Microsoft Access 2002.<\/p>\n<p>Bei einer nicht trivialen Datenbank und einer nicht trivialen Anwendung m\u00fcsste die L\u00f6sung nach der Konvertierung vor Freigabe in einer Produktionsumgebung validiert werden. Selbst wenn die Software keine Fehler liefert, ist damit nicht gew\u00e4hrleistet, dass die Daten korrekt in die Datenbank mit dem neuen Format abgelegt werden.<\/p>\n<p>Ich verweise hier schlicht auf <a href=\"https:\/\/borncity.com\/blog\/2019\/01\/11\/access-datenbankprobleme-nach-januar-2019-updates\/#comment-67267\" target=\"_blank\" rel=\"noopener\">meinen Kommentar<\/a>, wo ich die Frage nach der Konvertierung und den m\u00f6glichen Risiken gestellt hatte. Die <a href=\"https:\/\/borncity.com\/blog\/2019\/01\/11\/access-datenbankprobleme-nach-januar-2019-updates\/#comment-67273\" target=\"_blank\" rel=\"noopener\">Antwort eines Blog-Lesers<\/a> war eindeutig und f\u00fcr mich nachvollziehbar. Und Detlef J\u00e4ger weist in <a href=\"https:\/\/borncity.com\/blog\/2019\/01\/11\/access-datenbankprobleme-nach-januar-2019-updates\/#comment-67288\" target=\"_blank\" rel=\"noopener\">diesem Kommentar<\/a> sowie in Folgekommentaren auf Probleme im Zusammenhang mit ADO und bestimmen Befehlen (Datenbank komprimieren\/reparieren) hin. Felder mit einer L\u00e4nge gr\u00f6\u00dfer 32 Zeichen werden bei Anwendung bestimmter ADO-Befehle geleert.<\/p>\n<blockquote><p>Anmerkung: Weil es gerade hier passt \u2013 ich bin in den heise.de-Kommentaren auf <a href=\"https:\/\/www.heise.de\/forum\/heise-online\/News-Kommentare\/Windows-Updates-vom-Januar-2019-verursachen-Access-Datenbankfehler\/Access-Probleme-schon-laenger-seit-Windows10-1803\/thread-5851995\/#posting_33750263\" target=\"_blank\" rel=\"noopener\">diesen Post<\/a> gesto\u00dfen, der von einem neu implementierten Lease-Mechanismus in Windows 10 V1803 f\u00fcr Netzwerkzugriffe und Access-Problemen berichtet.<\/p><\/blockquote>\n<p>Damit ist die Information bekannt \u2013 ich habe bei MS Answers im eskalierten Forenthread auch die Information zu den ADO-Risiken eingestellt. Jetzt muss jeder Betroffene sehen, welche Workarounds und Fixes umsetzbar sind. An dieser Stelle danke an die Blog-Leser, die Sachdienliches zum Thema beigetragen haben.<\/p>\n<p><strong>\u00c4hnliche Artikel:<\/strong><br \/>\n<a href=\"https:\/\/borncity.com\/blog\/2019\/01\/09\/patchday-windows-10-updates-8-januar-2019\/\">Patchday Windows 10-Updates (8. Januar 2019)<\/a><br \/>\n<a href=\"https:\/\/borncity.com\/blog\/2019\/01\/09\/patchday-updates-fr-windows-7-8-1-server-8-jan-2019\/\">Patchday: Updates f\u00fcr Windows 7\/8.1\/Server 8. Jan. 2019<\/a><br \/>\n<a href=\"https:\/\/borncity.com\/blog\/2019\/01\/11\/access-datenbankprobleme-nach-januar-2019-updates\/\">Access Datenbankprobleme nach Januar 2019-Updates<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>[English]Microsoft hat den Datenbankfehler beim Zugriff auf Access 97 .mdb-Datenbanken per Jet Database Engine best\u00e4tigt. Das Problem wird in allen unterst\u00fctzten Windows-Versionen durch die Sicherheitsupdates vom 8. Januar 2019 verursacht.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,185,3694],"tags":[24,4315,3288],"class_list":["post-213662","post","type-post","status-publish","format-standard","hentry","category-problemlosung","category-update","category-windows-10","tag-problem","tag-update","tag-windows-en"],"_links":{"self":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/213662","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/comments?post=213662"}],"version-history":[{"count":0,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/213662\/revisions"}],"wp:attachment":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/media?parent=213662"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/categories?post=213662"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/tags?post=213662"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}