{"id":55001446,"date":"2023-08-01T00:00:00","date_gmt":"2023-07-31T14:23:29","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1446"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Datenbanken_automatisch_komprimieren","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Datenbanken_automatisch_komprimieren\/","title":{"rendered":"Datenbanken automatisch komprimieren"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/67267099d33b4f3f994e067f9aaaaf9c\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>In vielen Datenbankanwendungen fallen tempor&auml;re Daten an, also Daten, die in Tabellen geschrieben und in der gleichen Session wieder gel&ouml;scht werden. Das kann sowohl in nicht aufgeteilten Datenbanken als auch in aufgeteilten Datenbanken mit Frontend und Backend geschehen. Man k&ouml;nnte denken, die Gr&ouml;&szlig;e der Datenbankdatei w&uuml;rde nach dem Anf&uuml;gen und L&ouml;schen von Daten einigerma&szlig;en konstant sein. Das ist jedoch nicht der Fall: Gel&ouml;schte Daten sind zwar nicht mehr in den Tabellen zu finden, allerdings ben&ouml;tigt die Datenbank anschlie&szlig;end ungef&auml;hr genauso viel Speicherplatz wie vor dem L&ouml;schen. Wie das zu erkl&auml;ren ist und wie wir durch die Komprimierung einer Datenbank dennoch daf&uuml;r sorgen k&ouml;nnen, dass eine Datenbank sich durch die Verwendung tempor&auml;rer Daten nicht &uuml;berm&auml;&szlig;ig aufbl&auml;ht, beschreiben wir in diesem Beitrag.<\/b><\/p>\n<h2>Beispieldatenbank erzeugen<\/h2>\n<p>Wenn wir das Verhalten von Access-Datenbanken beim Anlegen und L&ouml;schen von Daten und beim Komprimieren der Datenbank untersuchen wollen, brauchen wir die M&ouml;glichkeit, schnell Daten hinzuzuf&uuml;gen und zu entfernen &#8211; und nat&uuml;rlich eine Tabelle, in der wir die Daten speichern.<\/p>\n<p>Die Tabelle soll <b>tblTexte<\/b> hei&szlig;en und neben dem Prim&auml;rschl&uuml;sselfeld <b>ID <\/b>ein Textfeld namens <b>Beispieltext <\/b>mit einer Feldgr&ouml;&szlig;e von 255 Zeichen enthalten (siehe Bild 1).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_1446_001.png\" alt=\"Tabelle f&uuml;r Beispieldaten\" width=\"535,1025\" height=\"374,0897\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Tabelle f&uuml;r Beispieldaten<\/span><\/b><\/p>\n<p>Zum Anlegen einer relevanten Menge von Daten verwenden wir die folgende Prozedur:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>TabelleFuellen()\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>i<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     For i = 1 To 10000\r\n         db.Execute \"INSERT INTO tblTexte(Beispieltext)  VALUES(''1234567890...12345'')\", dbFailOnError\r\n     <span style=\"color:blue;\">Next<\/span> i\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Diese legt 10.000 Datens&auml;tze mit jeweils 255 Zeichen an. Um die Datens&auml;tze schnell wieder zu l&ouml;schen, verwenden wir die folgende Prozedur:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>TabelleLeeren()\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     db.Execute \"DELETE FROM tblTexte\",  dbFailOnError\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>F&uuml;hren wir die erste Prozedur f&uuml;r eine bis dahin leere Datenbank aus, erhalten wir eine Datenbankgr&ouml;&szlig;e von ungef&auml;hr 3.264 KB.<\/p>\n<h2>Untersuchen der Datenbankgr&ouml;&szlig;e nach dem L&ouml;schen der Daten<\/h2>\n<p>Anschlie&szlig;end f&uuml;hren wir die zweite Prozedur aus und l&ouml;schen damit alle Datens&auml;tze der Tabelle <b>tblTexte<\/b>. Schlie&szlig;en wir danach die Datenbank, bleibt die Dateigr&ouml;&szlig;e erhalten &#8211; obwohl die Tabelle keine Daten mehr enth&auml;lt.<\/p>\n<h2>Platz f&uuml;r gel&ouml;schte Daten wird erst beim Komprimieren freigegeben<\/h2>\n<p>Der Grund f&uuml;r dieses Verhalten ist, dass der Speicherplatz erst nach dem Komprimieren einer Datenbank freigegeben wird. Also &ouml;ffnen wir die Datenbank mit der leeren Tabelle erneut und rufen f&uuml;r diese den Befehl <b>Datenbank komprimieren und reparieren <\/b>auf (unter Access 365 beispielsweise unter <b>Datei|Informationen <\/b>zu finden).<\/p>\n<p>Betrachten wir anschlie&szlig;end erneut die Dateigr&ouml;&szlig;e, weist diese wieder um die 400 KB aus. Daraus k&ouml;nnen wir ableiten: Der Speicherplatz f&uuml;r gel&ouml;schte Datens&auml;tze wird erst nach dem Komprimieren der Datenbank freigegeben.<\/p>\n<h2>Automatische Komprimierung aktivieren<\/h2>\n<p>F&uuml;r monolithische Access-Anwendungen, also solche, die nur aus einer einzigen Datenbankdatei und nicht aus Frontend und Backend bestehen, k&ouml;nnen wir in den Access-Optionen die Option <b>Beim Schlie&szlig;en komprimieren <\/b>aktivieren (siehe Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_1446_002.png\" alt=\"Aktivieren der automatischen Komprimierung\" width=\"499,5589\" height=\"403,4549\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Aktivieren der automatischen Komprimierung<\/span><\/b><\/p>\n<p>F&uuml;llen wir die Tabelle wieder mit Daten und l&ouml;schen diese erneut, finden wir gleich nach dem n&auml;chsten Schlie&szlig;en wieder die geringe Dateigr&ouml;&szlig;e von rund 400 KB vor.<\/p>\n<h2>Komprimierung bei aufgeteilten Datenbanken<\/h2>\n<p>Nun teilen wir die Beispieldatenbank in Frontend und Backend auf, was am schnellsten mit dem Men&uuml;befehl <b>Datenbanktools|Daten verschieben|Access-Datenbank <\/b>gelingt. Hier brauchen wir nur den Pfad zur neuen Backenddatenbank anzugeben. Das Ergebnis ist eine neue Backenddatenbank, in welche die einzige Tabelle der bisher verwendeten Datenbank verschoben wurde, sowie eine Verkn&uuml;pfung zu dieser Tabelle in der aktuellen Datenbankdatei.<\/p>\n<p>Erstere nennen wir nun <b>BackendKomprimieren_FE.accdb<\/b>, letztere <b>BackendKomprimieren_BE.accdb<\/b>.<\/p>\n<h2>Anlegen und L&ouml;schen in Frontend und Backend<\/h2>\n<p>Die Frontenddatenbank mit der Tabellenverkn&uuml;pfung und das Backend mit der leeren Tabelle haben wir nun zun&auml;chst komprimiert. Die Gr&ouml;&szlig;en lauteten danach:<\/p>\n<ul>\n<li>Frontend: 432 KB<\/li>\n<li>Backend: 348 KB<\/li>\n<\/ul>\n<p>Anschlie&szlig;end rufen wir die Prozedur zum Anlegen der 10.000 Datens&auml;tze in der Tabelle <b>tblTexte <\/b>auf. Dabei f&auml;llt zuerst auf, dass der Vorgang viel l&auml;nger dauert als in der monolithischen <b>.accdb<\/b>-Datei. Noch viel interessanter ist die Beobachtung des ben&ouml;tigten Speicherplatzes f&uuml;r die beiden Dateien:<\/p>\n<ul>\n<li>Frontend: 40.412 KB<\/li>\n<li>Backend: 3.208 KB<\/li>\n<\/ul>\n<p>Der Teil mit der Tabelle ist also &auml;hnlich gewachsen wie zuvor, aber das Frontend ist massiv gr&ouml;&szlig;er geworden &#8211; es w&auml;chst um mehr als den zehnfachen Speicherplatz der eigentlich erzeugten Daten. Obwohl es noch nicht einmal eine von uns angelegte Tabelle mit Daten enth&auml;lt. Die Gr&ouml;&szlig;e &auml;ndert sich auch nach dem Schlie&szlig;en nicht.<\/p>\n<p>Anschlie&szlig;end haben wir die Prozedur zum Schreiben der Daten erneut aufgerufen, um zu pr&uuml;fen, ob wir das Frontend so bis zur Grenze von 2 GB aufbl&auml;hen k&ouml;nnen. Das ist jedoch nicht der Fall: Beim zweiten Durchlauf wird die Frontenddatenbank nur noch unwesentlich vergr&ouml;&szlig;ert, w&auml;hrend das Backend seine Gr&ouml;&szlig;e wie erwartet um ca. 2.800 KB &auml;ndert.<\/p>\n<h2>Wachstum des Frontends<\/h2>\n<p>Zum Wachstum der Gr&ouml;&szlig;e des Frontends noch folgende Anmerkung: Dies geschieht nur, wenn wir die Daten per VBA in die Tabelle <b>tblTexte<\/b> des Backends einf&uuml;gen. Wir haben in einem zweiten Versuch manuell mehrere tausend Datens&auml;tze dort eingef&uuml;gt und in diesem Fall wurde zwar das Backend vergr&ouml;&szlig;ert, nicht jedoch das Frontend.<\/p>\n<h2>Komprimieren des Frontends<\/h2>\n<p>Komprimieren wir nun das Frontend, wird dieses wieder auf die urspr&uuml;ngliche Gr&ouml;&szlig;e geschrumpft. An der Gr&ouml;&szlig;e des Backends &auml;ndert sich zun&auml;chst nichts, was auch nicht zu erwarten war, da wir die enthaltenen Daten nicht gel&ouml;scht haben. Also &ouml;ffnen wir das Frontend erneut und l&ouml;schen die Daten im Backend mit der Prozedur <b>TabelleLeeren<\/b>.<\/p>\n<p>Die Gr&ouml;&szlig;e des Backends bleibt erhalten. Nun rufen wir in der Frontenddatenbank den Befehl <b>Komprimieren und Reparieren <\/b>auf. Obwohl wir die Daten im Backend gel&ouml;scht haben, &auml;ndert sich dessen Speicherbedarf nicht.<\/p>\n<p>Wenn wir das Frontend einer Kombination aus Frontend und Backend komprimieren, wird also nur der Speicherplatz im Frontend freigegeben, der f&uuml;r das Schreiben von Datens&auml;tzen im Backend angefallene Daten verwendet wurde.<\/p>\n<h2>Backend komprimieren<\/h2>\n<p>Wie also k&ouml;nnen wir nun daf&uuml;r sorgen, dass der Speicherplatz f&uuml;r im laufenden Betrieb angelegte und wieder gel&ouml;schte Daten im Backend wieder freigegeben wird? Immerhin darf das Backend nicht gr&ouml;&szlig;er als 2 GB werden, was bei solchen Operationen schnell geschehen kann.<\/p>\n<p>&Ouml;ffnen wir das Backend ohne das Frontend und komprimieren es nach dem L&ouml;schen der Daten mit dem daf&uuml;r vorgesehen Befehl <b>Komprimieren und Reparieren<\/b>, erh&auml;lt es wieder seine urspr&uuml;ngliche Dateigr&ouml;&szlig;e.<\/p>\n<h2>Backend beim Schlie&szlig;en komprimieren<\/h2>\n<p>Die Vermutung liegt nahe, dass wir nur f&uuml;r das Backend die Option <b>Beim Schlie&szlig;en komprimieren <\/b>einstellen m&uuml;ssen, damit dieses beim Schlie&szlig;en des Frontends automatisch komprimiert wird.<\/p>\n<p>Dies f&uuml;hrt allerdings nicht zum Erfolg. Nach dem Einstellen dieser Option und dem Schreiben und L&ouml;schen der Daten &uuml;ber das Frontend erh&auml;lt das Backend nicht wieder die Gr&ouml;&szlig;e der Datenbank mit der geleerten Tabelle.<\/p>\n<p>Woran liegt das? Offensichtlich findet beim Zugriff auf das Backend &uuml;ber die Tabellenverkn&uuml;pfungen kein &Ouml;ffnen und Schlie&szlig;en der Backenddatenbank in dem Sinne statt, dass dabei die f&uuml;r das Schlie&szlig;en aktivierte Komprimierung ausgel&ouml;st wird. <\/p>\n<p>Wir m&uuml;ssen also einen anderen Weg finden, um das Backend zu komprimieren.<\/p>\n<h2>Backend per VBA komprimieren<\/h2>\n<p>VBA bietet eine Methode zum Komprimieren einer Datenbank. Diese hei&szlig;t <b>CompactDatabase<\/b> und erwartet unter anderem die folgenden beiden Parameter:<\/p>\n<ul>\n<li>Pfad der zu komprimierenden Datenbankdatei<\/li>\n<li>Pfad der komprimierten Datenbankdatei<\/li>\n<\/ul>\n<p>Wir k&ouml;nnen also nicht einfach die Datenbank komprimieren, sondern erstellen eine neue Datenbank, welche der komprimierten Version der Datenbank entspricht. Um diese Datenbank sp&auml;ter wieder unter dem urspr&uuml;nglichen Namen nutzen zu k&ouml;nnen, ben&ouml;tigen wir also noch ein paar weitere Anweisungen.<\/p>\n<p>Wir haben diese in einer Funktion namens <b>BackendKomprimieren <\/b>zusammengefasst (siehe Listing 1).<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>BackendKomprimieren(strBackendtabelle<span style=\"color:blue;\"> As String<\/span>)<span style=\"color:blue;\"> As Boolean<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strBackend<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strBackendverzeichnis<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strBackendTemp<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strBackendOld<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strBackendendung<span style=\"color:blue;\"> As String<\/span>\r\n     strBackend = DLookup(\"Database\", \"MSysObjects\", \"Name = ''\" & strBackendtabelle & \"''\")\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> <span style=\"color:blue;\">Len<\/span>(Dir(strBackend)) = 0<span style=\"color:blue;\"> Then<\/span>\r\n         strBackendverzeichnis = <span style=\"color:blue;\">Mid<\/span>(strBackend, 1, <span style=\"color:blue;\">InStrRev<\/span>(strBackend, \"\\\"))\r\n         strBackendendung = <span style=\"color:blue;\">Mid<\/span>(strBackend, <span style=\"color:blue;\">InStrRev<\/span>(strBackend, \".\"))\r\n         strBackendTemp = strBackendverzeichnis & \"BackendTemp_\" & Format(Now, \"yyyymmdd_hhnnss\") & strBackendendung\r\n         ''Ohne Kennwortschutz:\r\n         On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n         DBEngine.CompactDatabase strBackend, strBackendTemp\r\n         ''Mit Kennwortschutz:\r\n         ''DBEngine.CompactDatabase strBackend, strBackendTemp , , , \";pwd=ami\"\r\n         <span style=\"color:blue;\">If <\/span>Err.Number = 3704<span style=\"color:blue;\"> Then<\/span>\r\n             <span style=\"color:blue;\">MsgBox<\/span> \"Das Backend kann nicht komprimiert werden, da noch Tabellen im Frontend ge&ouml;ffnet sind.\", _\r\n                 vbOKOnly + vbExclamation, \"Fehler beim Komprimieren\"\r\n             <span style=\"color:blue;\">Exit Function<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n         strBackendOld = strBackend & \"_Old_\" & Format(Now, \"yyyymmdd_hhnnss\") & strBackendendung\r\n         Name strBackend<span style=\"color:blue;\"> As <\/span>strBackendOld\r\n         Name strBackendTemp<span style=\"color:blue;\"> As <\/span>strBackend\r\n         <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> <span style=\"color:blue;\">Len<\/span>(Dir(strBackend)) = 0<span style=\"color:blue;\"> Then<\/span>\r\n             Kill strBackendOld\r\n             BackendKomprimieren = <span style=\"color:blue;\">True<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Funktion zum Komprimieren einer Backenddatenbank<\/span><\/b><\/p>\n<p>Diese Funktion erwartet den Namen einer der Tabellenverkn&uuml;pfungen als Parameter. In unserem Beispiel lautet der Aufruf also beispielsweise:<\/p>\n<pre><span style=\"color:blue;\">Debug.Print<\/span> BackendKomprimieren(\"tblTexte\")<\/pre>\n<p>Dieser Aufruf gibt gleich das Ergebnis der Funktion im Direktbereich aus.<\/p>\n<p>Die Funktion deklariert einige Variablen und ermittelt dann den Pfad zu der zu komprimierenden Backenddatenbank. Dazu nutzt sie die Tatsache, dass der Pfad einer per Verkn&uuml;pfung eingebundenen Access-Tabelle im Feld <b>Database<\/b> der Systemtabelle <b>MSysObjects <\/b>gespeichert wird. Der Pfad landet anschlie&szlig;end in der Variablen <b>strBackend<\/b>.<\/p>\n<p>Nach einer Pr&uuml;fung, ob die Backenddatenbank vorhanden ist, ermittelt sie das Verzeichnis, in dem sich die Backenddatenbank befindet, sowie die Dateiendung (in der Regel <b>.accdb<\/b>), und schreibt beide in die Variablen <b>strBackendverzeichnis <\/b>und <b>strBackendendung<\/b>.<\/p>\n<p>In der Variablen <b>strBackendTemp <\/b>erstellt sie einen neuen Pfad, der aus dem Verzeichnis und einem Dateinamen inklusive der aktuellen Zeit wie in folgendem Beispiel erstellt:<\/p>\n<pre>C:\\...\\BackendTemp_20230529_120406.accdb<\/pre>\n<p>Dann erfolgt das eigentliche Komprimieren mit der Methode <b>CompactDatabase <\/b>der <b>DBEngine<\/b>-Klasse. Diese komprimiert die Datei aus <b>strBackend <\/b>in die neue Datei <b>strBackendTemp<\/b>. Falls das Backend durch ein Kennwort gesch&uuml;tzt ist, kann man dieses wie in der auskommentierten nachfolgenden Version des Aufrufs angeben.<\/p>\n<p>Beim Aufruf der Methode <b>CompactDatabase <\/b>k&ouml;nnen Fehler auftreten, zum Beispiel der Fehler 3704 (<b>Sie haben versucht, eine Datenbank zu &ouml;ffnen, die bereits von Benutzer &#8220;[Benutzername]&#8220; auf Computer &#8220;[Computername]&#8220; ge&ouml;ffnet ist. Versuchen Sie es erneut, wenn die Datenbank verf&uuml;gbar ist.<\/b>).<\/p>\n<p>Dieser tritt auf, wenn noch eine der Tabellen des Backends im Frontend ge&ouml;ffnet ist.<\/p>\n<p>In diesem Fall gibt die Funktion eine Meldung aus und bricht die Funktion ab.<\/p>\n<p>War die Komprimierung jedoch erfolgreich, wird zun&auml;chst die Originalversion des Backends aus <b>strBackend <\/b>tempor&auml;r umbenannt. Der Dateiname lautet dann beispielsweise:<\/p>\n<pre>BackendKomprimieren_BE.accdb_Old_20230529_120936.accdb<\/pre>\n<p>Anschlie&szlig;end pr&uuml;ft die Funktion, ob unter dem urspr&uuml;nglichen Namen aus <b>strBackend <\/b>eine Datenbankdatei vorliegt. In diesem Fall wird das vorherige Backend gel&ouml;scht und die Funktion gibt den Wert <b>True <\/b>als Ergebnis zur&uuml;ck.<\/p>\n<p>Damit erhalten wir also eine M&ouml;glichkeit, die Backenddatenbank zu komprimieren, wenn alle Tabellenverkn&uuml;pfungen auf dieses Backend geschlossen sind.<\/p>\n<p>Nun ben&ouml;tigen wir noch eine M&ouml;glichkeit, diese Funktion &auml;hnlich wie bei der Option <b>Beim Schlie&szlig;en komprimieren <\/b>erst beim Schlie&szlig;en der Datenbank aufzurufen.<\/p>\n<h2>Komprimieren per VBA beim Schlie&szlig;en<\/h2>\n<p>Dazu k&ouml;nnen wir eine Methode nutzen, die wir bereits im Beitrag <b>Code beim Schlie&szlig;en der Anwendung ausf&uuml;hren <\/b>(<b>www.access-im-unternehmen.de\/1370<\/b>) vorgestellt haben. Hier setzen wir ein Formular ein, dass wir beim &Ouml;ffnen der Datenbank automatisch &ouml;ffnen und das dann direkt unsichtbar gemacht wird. Dadurch sieht der Benutzer dieses Formular nicht. Es wird jedoch, wenn der Benutzer die Datenbankanwendung beendet, automatisch geschlossen. Hier sorgen wir mit einer Ereignisprozedur f&uuml;r das Ereignis <b>Beim Entladen <\/b>daf&uuml;r, dass wir beim Schlie&szlig;en der Datenbank die Funktion <b>BackendKomprimieren<\/b> aufrufen k&ouml;nnen.<\/p>\n<p>Das <b>Autoexec<\/b>-Makro, mit dem wir das noch zu erstellende Formular <b>frmStart <\/b>&ouml;ffnen, sieht wie in Bild 3 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_1446_003.png\" alt=\"Autoexec-Makro zum &Ouml;ffnen eines Formulars\" width=\"424,5589\" height=\"284,278\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Autoexec-Makro zum &Ouml;ffnen eines Formulars<\/span><\/b><\/p>\n<p>Das Formular <b>frmStart <\/b>enth&auml;lt keine Elemente, aber eine Ereignisprozedur (siehe Bild 4). Dieses wird beim Entladen ausgel&ouml;st und f&uuml;hrt die folgende Prozedur aus:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_1446_004.png\" alt=\"Entwurf des Formulars frmStart\" width=\"499,5589\" height=\"361,4694\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Entwurf des Formulars frmStart<\/span><\/b><\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Unload(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     BackendKomprimieren \"tblTexte\"\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Sie soll also lediglich die Funktion <b>BackendKomprimieren <\/b>f&uuml;r die einzige verkn&uuml;pfte Tabelle dieser Datenbank aufrufen. Damit sorgt sie daf&uuml;r, dass beim Schlie&szlig;en der Anwendung die Komprimierung des Backends erfolgt.<\/p>\n<h2>Im Mehrbenutzerbetrieb<\/h2>\n<p>Wenn mehrere Benutzer die Datenbank verwenden und einer der Benutzer sein Frontend schlie&szlig;t, wird das Backend nicht komprimiert, wenn noch eine seiner Tabellen in einer anderen Datenbank ge&ouml;ffnet ist.<\/p>\n<p>In diesem Fall kommt es auf das &uuml;bliche Nutzerverhalten an, wie man f&uuml;r eine Komprimierung der Datenbank sorgt. Wenn alle Frontends zu bestimmten Zeitpunkten geschlossen sind, beispielsweise weil nachts niemand mit der Datenbank arbeitet, wird das Backend beim Schlie&szlig;en des letzten ge&ouml;ffneten Frontends komprimiert.<\/p>\n<p>Hier gibt es aber auch noch Fallstricke, denn es kann passieren, dass das Formular <b>frmStart <\/b>nicht als letztes Formular geschlossen wird. In diesem Fall ist vielleicht noch ein weiteres Formular ge&ouml;ffnet, das an eine der verkn&uuml;pften Tabellen gebunden ist und somit das Komprimieren des Backends verhindert.<\/p>\n<p>Wenn nicht ausgeschlossen werden kann, dass Benutzer die Anwendung durchg&auml;ngig ge&ouml;ffnet lassen und dabei auch verkn&uuml;pfte Tabellen anzeigen, m&uuml;sste man noch einen Schritt weitergehen und zu bestimmten Zeitpunkten daf&uuml;r sorgen, dass die Verbindungen zum Backend getrennt werden. Dies w&uuml;rde jedoch den Rahmen des vorliegenden Beitrags sprengen.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Dieser Beitrag zeigt, wie sich das Komprimieren in verschiedenen Szenarien auswirkt und dass ein automatisches Komprimieren des Backends einer Datenbank nicht ohne VBA erfolgen kann.<\/p>\n<p>Dazu muss die Bedingung erf&uuml;llt sein, dass aktuell keine Verbindungen zu den Tabellen bestehen.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>BackendKomprimieren.accdb<\/p>\n<p>BackendKomprimieren_BE.accdb<\/p>\n<p>BackendKomprimieren_FE.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/E56EF7B3-8331-4809-9693-E7B190221FC9\/aiu_1446.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In vielen Datenbankanwendungen fallen tempor&auml;re Daten an, also Daten, die in Tabellen geschrieben und in der gleichen Session wieder gel&ouml;scht werden. Das kann in nicht aufgeteilten Datenbanken der Fall sein, aber auch in aufgeteilten Datenbanken mit Frontend und Backend geschehen. Man k&ouml;nnte denken, die Gr&ouml;&szlig;e der Datenbankdatei w&uuml;rde nach dem Anf&uuml;gen und L&ouml;schen von Daten einigerma&szlig;en konstant sein. Das ist jedoch nicht der Fall: Gel&ouml;schte Daten sind zwar nicht mehr in den Tabellen zu finden, allerdings ben&ouml;tigt die Datenbank anschlie&szlig;end ungef&auml;hr genauso viel Speicherplatz wie vor dem L&ouml;schen. Wie das zu erkl&auml;ren ist und wie wir durch die Komprimierung einer Datenbank dennoch daf&uuml;r sorgen k&ouml;nnen, dass eine Datenbank sich durch die Verwendung tempor&auml;rer Daten nicht allzusehr aufbl&auml;ht, beschreiben wir in diesem Beitrag.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662023,66042023,44000021],"tags":[],"class_list":["post-55001446","post","type-post","status-publish","format-standard","hentry","category-662023","category-66042023","category-Tabellen_und_Datenmodellierung"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Datenbanken automatisch komprimieren - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Datenbanken_automatisch_komprimieren\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Datenbanken automatisch komprimieren\" \/>\n<meta property=\"og:description\" content=\"In vielen Datenbankanwendungen fallen tempor&auml;re Daten an, also Daten, die in Tabellen geschrieben und in der gleichen Session wieder gel&ouml;scht werden. Das kann in nicht aufgeteilten Datenbanken der Fall sein, aber auch in aufgeteilten Datenbanken mit Frontend und Backend geschehen. Man k&ouml;nnte denken, die Gr&ouml;&szlig;e der Datenbankdatei w&uuml;rde nach dem Anf&uuml;gen und L&ouml;schen von Daten einigerma&szlig;en konstant sein. Das ist jedoch nicht der Fall: Gel&ouml;schte Daten sind zwar nicht mehr in den Tabellen zu finden, allerdings ben&ouml;tigt die Datenbank anschlie&szlig;end ungef&auml;hr genauso viel Speicherplatz wie vor dem L&ouml;schen. Wie das zu erkl&auml;ren ist und wie wir durch die Komprimierung einer Datenbank dennoch daf&uuml;r sorgen k&ouml;nnen, dass eine Datenbank sich durch die Verwendung tempor&auml;rer Daten nicht allzusehr aufbl&auml;ht, beschreiben wir in diesem Beitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Datenbanken_automatisch_komprimieren\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-31T14:23:29+00:00\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"12\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbanken_automatisch_komprimieren\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbanken_automatisch_komprimieren\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Datenbanken automatisch komprimieren\",\"datePublished\":\"2023-07-31T14:23:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbanken_automatisch_komprimieren\\\/\"},\"wordCount\":2257,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbanken_automatisch_komprimieren\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/67267099d33b4f3f994e067f9aaaaf9c\",\"articleSection\":[\"2023\",\"4\\\/2023\",\"Tabellen und Datenmodellierung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbanken_automatisch_komprimieren\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbanken_automatisch_komprimieren\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbanken_automatisch_komprimieren\\\/\",\"name\":\"Datenbanken automatisch komprimieren - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbanken_automatisch_komprimieren\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbanken_automatisch_komprimieren\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/67267099d33b4f3f994e067f9aaaaf9c\",\"datePublished\":\"2023-07-31T14:23:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbanken_automatisch_komprimieren\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbanken_automatisch_komprimieren\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbanken_automatisch_komprimieren\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/67267099d33b4f3f994e067f9aaaaf9c\",\"contentUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/67267099d33b4f3f994e067f9aaaaf9c\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbanken_automatisch_komprimieren\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Datenbanken automatisch komprimieren\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Datenbanken automatisch komprimieren - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Datenbanken_automatisch_komprimieren\/","og_locale":"de_DE","og_type":"article","og_title":"Datenbanken automatisch komprimieren","og_description":"In vielen Datenbankanwendungen fallen tempor&auml;re Daten an, also Daten, die in Tabellen geschrieben und in der gleichen Session wieder gel&ouml;scht werden. Das kann in nicht aufgeteilten Datenbanken der Fall sein, aber auch in aufgeteilten Datenbanken mit Frontend und Backend geschehen. Man k&ouml;nnte denken, die Gr&ouml;&szlig;e der Datenbankdatei w&uuml;rde nach dem Anf&uuml;gen und L&ouml;schen von Daten einigerma&szlig;en konstant sein. Das ist jedoch nicht der Fall: Gel&ouml;schte Daten sind zwar nicht mehr in den Tabellen zu finden, allerdings ben&ouml;tigt die Datenbank anschlie&szlig;end ungef&auml;hr genauso viel Speicherplatz wie vor dem L&ouml;schen. Wie das zu erkl&auml;ren ist und wie wir durch die Komprimierung einer Datenbank dennoch daf&uuml;r sorgen k&ouml;nnen, dass eine Datenbank sich durch die Verwendung tempor&auml;rer Daten nicht allzusehr aufbl&auml;ht, beschreiben wir in diesem Beitrag.","og_url":"https:\/\/access-im-unternehmen.de\/Datenbanken_automatisch_komprimieren\/","og_site_name":"Access im Unternehmen","article_published_time":"2023-07-31T14:23:29+00:00","author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"12\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Datenbanken_automatisch_komprimieren\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Datenbanken_automatisch_komprimieren\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Datenbanken automatisch komprimieren","datePublished":"2023-07-31T14:23:29+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Datenbanken_automatisch_komprimieren\/"},"wordCount":2257,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Datenbanken_automatisch_komprimieren\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/67267099d33b4f3f994e067f9aaaaf9c","articleSection":["2023","4\/2023","Tabellen und Datenmodellierung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Datenbanken_automatisch_komprimieren\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Datenbanken_automatisch_komprimieren\/","url":"https:\/\/access-im-unternehmen.de\/Datenbanken_automatisch_komprimieren\/","name":"Datenbanken automatisch komprimieren - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Datenbanken_automatisch_komprimieren\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Datenbanken_automatisch_komprimieren\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/67267099d33b4f3f994e067f9aaaaf9c","datePublished":"2023-07-31T14:23:29+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Datenbanken_automatisch_komprimieren\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Datenbanken_automatisch_komprimieren\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Datenbanken_automatisch_komprimieren\/#primaryimage","url":"http:\/\/vg08.met.vgwort.de\/na\/67267099d33b4f3f994e067f9aaaaf9c","contentUrl":"http:\/\/vg08.met.vgwort.de\/na\/67267099d33b4f3f994e067f9aaaaf9c"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Datenbanken_automatisch_komprimieren\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Datenbanken automatisch komprimieren"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001446","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55001446"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001446\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001446"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001446"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}