{"id":55000618,"date":"2008-08-01T00:00:00","date_gmt":"2020-05-06T15:19:05","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=618"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Abfragen_von_Access_zum_SQL_Server","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Abfragen_von_Access_zum_SQL_Server\/","title":{"rendered":"Abfragen von Access zum SQL Server"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg04.met.vgwort.de\/na\/19e68f2ea6264f499c0fdc376f12e626\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Wussten Sie, dass &#8222;Query&#8220; ins Deutsche &uuml;bersetzt &#8222;Abfragen&#8220; hei&szlig;t Nat&uuml;rlich wussten Sie das. Es ist ja auch die korrekte Bezeichnung, wenn es um Datenbanken geht. Aber wussten Sie auch, dass &#8222;Query&#8220; ebenso f&uuml;r &#8222;R&uuml;ckfrage&#8220; und sogar f&uuml;r &#8222;Reklamation&#8220; steht &auml;hnlich ist es mit dem Verb: &#8222;to query&#8220; wird als &#8222;abfragen&#8220;, aber auch als &#8222;bezweifeln&#8220; und &#8222;in Frage stellen&#8220; verstanden. Nun sollen die Ergebnisse von Access-Abfragen nat&uuml;rlich weder bezweifelt noch in Frage gestellt werden; auch nicht, wenn die Abfragen auf einen SQL Server zugreifen. Aber die Antwortzeiten solcher Abfragen werden Sie in manchen F&auml;llen durchaus bezweifeln. Auch die Vorgehensweise, mit der Access die Daten vom SQL Server anfordert, kann in Frage gestellt werden.<\/b><\/p>\n<p>Access bietet mit seinen Abfragen ein umfangreiches Tool, um Daten aus verschiedenen Tabellen miteinander zu verkn&uuml;pfen, auf die wesentlichen Daten zu reduzieren und sie aufzubereiten. Doch die Abfragen haben ihre T&uuml;cken, wenn sie auf eingebundene Tabellen des SQL Servers zugreifen.<\/p>\n<p>Der Grund hierf&uuml;r ist recht einfach: Die eingebundenen Tabellen werden von der Jet-Engine nicht als SQL Server-Tabellen, sondern wie Access-Tabellen gehandhabt. Jede Abfrage wird &uuml;ber die Jet-Engine an den SQL Server &uuml;bergeben. Und die Jet-Engine entscheidet, welche Daten in welcher Menge vom SQL Server angefordert werden. Das kann bei einfachen Abfragen eine gute, bei etwas komplizierteren Abfragen eine eher schlechte Entscheidung sein. <\/p>\n<p>&#8222;Kompliziert&#8220; ist in einem solchen Fall relativ. Die Abfragen m&uuml;ssen nicht unbedingt komplex sein; ein einfaches <b>SELECT <\/b>auf eine Tabelle mit einem Verweis auf ein Formularfeld in der <b>WHERE<\/b>-Bedingung reicht schon, um die Jet-Engine dazu zu veranlassen, sicherheitshalber alle Daten der dieser Abfrage zugrundeliegenden SQL Server-Tabellen anzufordern.<\/p>\n<p>Bei kleinen Tabellen mag das nicht relevant sein. Aber Sie arbeiten ja mit dem SQL Server als Backend, weil Sie gro&szlig;e Datenmengen bearbeiten wollen. Insofern sollten Sie pr&uuml;fen, wann in welchem Umfang Daten &uuml;ber das Netzwerk angefordert werden. Doch dazu m&uuml;ssen Sie zun&auml;chst wissen, wie die Jet-Engine bei der Anforderung der Daten vorgeht.<\/p>\n<h2>Der Abfrageoptimierer<\/h2>\n<p>F&uuml;r jede Access-Abfrage erstellt die Jet-Engine einen Ausf&uuml;hrungsplan, anhand dessen der Access-Abfrageoptimierer die optimale Vorgehensweise zur Ausf&uuml;hrung der Abfrage ermittelt.<\/p>\n<p>Dies gilt sowohl f&uuml;r Abfragen auf Access-Tabellen, wie auch auf in Access eingebundene SQL Server-Tabellen. <\/p>\n<p>Gerade bei Abfragen auf SQL Server-Tabellen ist das Ergebnis des Abfrageoptimierers entscheidend f&uuml;r die Art und Weise, wie die Daten vom SQL Server angefordert werden. <\/p>\n<p>Im Grunde genommen gibt es f&uuml;r die Ermittlung der Daten vom SQL Server drei Varianten:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Die Abfrage wird 1:1 an den SQL Server &uuml;bergeben. Das ist die beste Variante. Der SQL Server f&uuml;hrt die Abfrage aus und liefert die ermittelten Datens&auml;tze an Access.<\/li>\n<li class=\"aufz-hlung\">Die Abfrage wird in einzelnen Teilen an den SQL Server &uuml;bergeben. Dieser Mittelweg kann gut, aber auch schlecht sein. Access teilt die Abfrage in mehrere kleine Abfragen auf und &uuml;bergibt diese an den SQL Server. Die ermittelten Ergebnismengen werden wieder zur&uuml;ck zu Access &uuml;bertragen und dort mit den Datens&auml;tzen der anderen Abfrageteile verkn&uuml;pft. Dabei k&ouml;nnen die &uuml;bermittelten Ergebnismengen durchaus mehr Daten als eigentlich notwendig enthalten.<\/li>\n<li class=\"aufz-hlung\">Die Abfrage wird nicht an den SQL Server &uuml;bergeben. Das ist die schlechteste Variante. Access fordert vom SQL Server alle Daten der in der Abfrage befindlichen Tabellen an und verkn&uuml;pft diese lokal.<\/li>\n<\/ul>\n<p>Wie Sie sehen, sind das nicht gerade die sch&ouml;nsten Aussichten, was den Netzwerk-Traffic zwischen Access und SQL Server betrifft.<\/p>\n<p>Um den Netzwerk-Traffic nicht g&auml;nzlich in die H&auml;nde der Jet-Engine zu legen, m&uuml;ssen Sie die Access-Abfragen anpassen. <\/p>\n<p>F&uuml;r diese Anpassungen ist es sinnvoll zu wissen, wann der Abfrageoptimierer die Abfrage in welcher Form an den SQL Server &uuml;bergibt. <\/p>\n<p>Dies ist grunds&auml;tzlich von der Abfrage selbst abh&auml;ngig. Es gibt einige Gr&uuml;nde f&uuml;r eher suboptimale Entscheidungen des Abfrageoptimierers:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Abfragen mit Ausdr&uuml;cken oder Funktionen: Ausdr&uuml;cke oder Access- beziehungsweise VBA-Funktionen k&ouml;nnen innerhalb einer Access-Abfrage in der Spaltenauflistung wie auch in der <b>WHERE<\/b>-Bedingung genutzt werden.<\/li>\n<li class=\"aufz-hlung\">Abfragen mit Access-Funktionen werden nur dann an den SQL Server &uuml;bergeben, wenn die Funktion vom SQL Server unterst&uuml;tzt wird. Dies ist aber nur bei wenigen Access-Funktionen wie <b>DISTINCT <\/b>oder bei einigen Aggregationen wie <b>SUM <\/b>der Fall.<\/li>\n<li class=\"aufz-hlung\">Bei den SQL Server nicht bekannten Access-Funktionen wie <b>DMAX<\/b>, <b>FORMAT<\/b>, <b>PIVOT TRANSFORM <\/b>beziehungsweise bei VBA-Funktionen oder bei Ausdr&uuml;cken versucht der Abfrageoptimierer das Beste herauszuholen. Im g&uuml;nstigsten Fall wird die Access-Abfrage in mehrere Abfragen gesplittet. Folgendes Beispiel soll dies verdeutlichen. Die Abfrage<\/li>\n<\/ul>\n<pre>SELECT dbo_Orders.OrderID,\r\ndbo_Orders.Freight\r\nFROM dbo_Orders\r\nWHERE dbo_Orders.Freight) &gt; DMax(&quot;UnitPrice&quot;,&quot;dbo_Order Details&quot;)<\/pre>\n<p>wird in zwei einzelne Anweisungen gesplittet:<\/p>\n<pre>SELECT MAX(&quot;UnitPrice&quot;) FROM &quot;dbo&quot;.&quot;Order Details&quot;<\/pre>\n<p>und<\/p>\n<pre>SELECT &quot;Freight&quot; &quot;dbo&quot;.&quot;Orders&quot;.&quot;OrderID&quot;\r\nFROM &quot;dbo&quot;.&quot;Orders&quot;<\/pre>\n<p>Access &uuml;bernimmt das Verkn&uuml;pfen der beiden &uuml;bertragenen Ergebnismengen.<\/p>\n<ul>\n<li class=\"aufz-hlung\">Abfragen mit Verweis auf ein Formularfeld: &auml;hnlich wie bei Funktionen oder Ausdr&uuml;cken sind dem SQL Server auch Formularfelder unbekannt. Insofern werden auch hier die Daten der in der Abfrage verwendeten SQL Server-Tabellen an den Client &uuml;bertragen. Im besten Fall wird die Abfrage gesplittet, um nur Teilergebnisse vom SQL Server zu ermitteln und diese zur Komplettierung der Abfrage an Access zu &uuml;bertragen.<\/li>\n<li class=\"aufz-hlung\">Komplexe Tabellenverkn&uuml;pfungen: Sofern die Tabellenverkn&uuml;pfungen zu komplex f&uuml;r den Abfrageoptimierer sind, werden entweder Teilergebnisse auf dem SQL Server ermittelt oder die kompletten Tabelleninhalte der in der Abfrage verwendeten SQL Server-Tabellen an Access &uuml;bergeben.<\/li>\n<li class=\"aufz-hlung\">Abfragen mit <b>TOP n <\/b>und <b>TOP n PERCENT<\/b>: Die <b>TOP<\/b>-Anweisung wird von der Jet-Engine bei der &Uuml;bergabe der Abfrage ignoriert und Access erh&auml;lt alle Datens&auml;tze der in der Abfrage enthaltenen Tabellen. Erst lokal wird die Ausgabe auf die in der TOP-Klausel angegebenen Mengen begrenzt.<\/li>\n<li class=\"aufz-hlung\">Abfragen mit berechneten Spalten: Die Jet-Engine &uuml;bermittelt die Berechnungsformeln nicht an den SQL Server. Insofern liefert der SQL Server lediglich die Spalten, mit denen der Wert berechnet wird. Die Berechnung selbst wird von der Jet-Engine &uuml;bernommen.<\/li>\n<\/ul>\n<p>Es gibt noch weitere Gr&uuml;nde f&uuml;r den Abfrageoptimierer, die Abfrage nicht 1:1 oder nur teilweise an den SQL Server zu &uuml;bergeben, wie beispielsweise <\/p>\n<ul>\n<li class=\"aufz-hlung\">Abfragen mit einem <b>GROUP BY <\/b>um ein weiteres <b>GROUP BY <\/b>beziehungsweise <b>DISTINCT<\/b>,<\/li>\n<li class=\"aufz-hlung\">Abfragen mit einem <b>JOIN <\/b>&uuml;ber einen oder mehrere <b>GROUP BY <\/b>beziehungsweise <b>DISTINCT <\/b>oder <\/li>\n<li class=\"aufz-hlung\">Operationen bei <b>UNION<\/b>&#8211; oder Unterabfragen, die heterogene Daten vermischen und noch einige mehr. <\/li>\n<\/ul>\n<p>Grunds&auml;tzlich handelt der Abfrageoptimierer also nach der altbekannten Bauernregel &#8222;Was der Bauer nicht kennt, isst er nicht&#8220;. Ergo werden nur Abfragen an den SQL Server &uuml;bergeben, bei denen der Abfrageoptimierer der Meinung ist, dass der SQL Server &#8211; oder auch die OBDC-Schnittstelle &#8211; diese interpretieren kann.<\/p>\n<p>In welcher Art und Weise die anderen Abfragen am SQL Server ankommen, liegt in der Hand des Abfrageoptimierers. Und den sollten Sie im Auge behalten. Denn wenn die Abfrage nicht auf dem SQL Server ausgef&uuml;hrt wird, sondern f&uuml;r die Ausf&uuml;hrung die kompletten Daten oder Teile davon an den Client &uuml;bertragen werden, degradiert Access Ihre m&uuml;hsam erstellte Client\/Server-Applikation zu einem File-Server-System.<\/p>\n<p><!--30percent--><\/p>\n<p>Bleibt die Frage, wie Sie den Abfrageoptimierer beobachten k&ouml;nnen. Dabei kann Ihnen nun wieder der SQL Server helfen &#8211; oder besser gesagt ein Tool des SQL Servers: der Profiler.<\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Der Profiler<\/p>\n<p>Jede Anweisung, die der SQL Server ausf&uuml;hrt, kann mit dem Profiler aufgezeichnet werden. Sie sehen also nicht, wie Access die Abfragen optimiert, aber Sie sehen, welche Anweisungen der SQL Server ausf&uuml;hrt. <\/p>\n<p>Sofern Sie die Aufzeichnung auf Ihre Access-Applikation eingrenzen, k&ouml;nnen Sie also verfolgen, welche Anweisungen SQL Server von Access erh&auml;lt und ausf&uuml;hrt, das hei&szlig;t, Sie sehen, ob Access nun die komplette Abfrage oder nur Teile oder &#8211; im schlimmsten Fall &#8211; einfache <b>SELECT<\/b>-Anweisungen zur Ermittlung der kompletten Tabelleninhalte an den SQL Server &uuml;bergibt.<\/p>\n<p>Um die Abfragen aufzuzeichnen, starten Sie zun&auml;chst den Profiler, den Sie in der Programmgruppe des SQL Servers finden. Dort richten Sie eine Ablaufverfolgung ein, indem Sie im Men&uuml; <b>Datei <\/b>den Befehl <b>Neue Ablaufverfolgung <\/b>w&auml;hlen und sich anschlie&szlig;end auf dem SQL Server anmelden, auf den Sie per Access zugreifen m&ouml;chten.<\/p>\n<p>Im Dialog <b>Ablaufverfolgungseigenschaften <\/b>geben Sie der Ablaufverfolgung im Feld <b>Ablaufverfolgungsname <\/b>eine Bezeichnung und w&auml;hlen danach die Ablaufverfolgungsvorlage <b>Leer <\/b>aus dem Listenfeld <b>Vorlage verwenden <\/b>(siehe Bild 1). Anschlie&szlig;end wechseln Sie zur Registerkarte <b>Ereignisauswahl<\/b>.<\/p>\n<table class=\"table-style-2\">\n<thead>\n<p class=\"kastentabelleheader\">Typ der Access-Abfrage<\/p>\n<p class=\"kastentabelleheader\">Objekt im SQL Server<\/p>\n<\/thead>\n<tfoot>\n<td  colspan=\"2\">\n<p><b><span style=\"color:darkgrey\">Tab. 1: Access-Abfragen im SQL Server<\/span><\/b><\/p>\n<\/tfoot>\n<td class=\"aiu-zeile1\">\n<td class=\"aiu-zeile1\">\n<pre>(Sicht oder Benutezrdefinierte Funktion auch m&ouml;glich)<\/pre>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_04\/SQLServer-web-images\/pic001_opt.jpeg\" alt=\"pic001.TIF\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Definition der Ablaufverfolgung<\/span><\/b><\/p>\n<p>Zum Aufzeichnen der von Access an den SQL Server &uuml;bergebenen Anweisungen reicht das Ereignis <b>SQL:StmtCompleted <\/b>aus der Ereignisgruppe <b>TSQL<\/b> vollkommen aus<b> <\/b>(siehe Bild 2). <\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_04\/SQLServer-web-images\/pic002_opt.jpeg\" alt=\"pic002.TIF\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Auswahl der Ereignisse<\/span><\/b><\/p>\n<p>Um nicht alle Aktivit&auml;ten aller Datenbanken des SQL Servers in der Ablaufverfolgung aufzuzeichnen, m&uuml;ssen Sie noch &uuml;ber die Schaltfl&auml;che Spaltenfilter die Ablaufverfolgung auf die Datenbank &#8211; in diesem Beispiel die Datenbank &#8222;Northwind&#8220; &#8211; eingrenzen. <\/p>\n<p>Dazu ermitteln Sie zun&auml;chst im SQL Server Management Studio mit <b>SELECT DB_ID(&apos;Northwind&apos;) <\/b>die ID der Datenbank und tragen diese in den Filter Datenbank-Id ein (siehe Bild 3).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_04\/SQLServer-web-images\/pic003_opt.jpeg\" alt=\"pic003.TIF\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Definition des Filters<\/span><\/b><\/p>\n<p>Schlie&szlig;en Sie den Dialog <b>Filter bearbeiten <\/b>mit <b>OK <\/b>und starten Sie anschlie&szlig;end die Ablaufverfolgung mit einem Klick auf <b>Ausf&uuml;hren<\/b>. Der Profiler zeichnet nun alle Anweisungen auf, die an die Datenbank &#8222;Northwind&#8220; &uuml;bergeben werden und zeigt diese im Ausgabefenster an (siehe Bild 4).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_04\/SQLServer-web-images\/pic004_opt.jpeg\" alt=\"pic004.TIF\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4: Die Ablaufverfolgung<\/span><\/b><\/p>\n<p>Jetzt m&uuml;ssen Sie nur noch in Access die entsprechenden Abfragen ausf&uuml;hren und sich im Profiler die jeweiligen Anweisungen anschauen. So k&ouml;nnen Sie bei jeder Abfrage pr&uuml;fen, in welcher Art und Weise diese an den SQL Server &uuml;bergeben wird.<\/p>\n<p>Anhand dieser Informationen k&ouml;nnen Sie dann Ihre Access-Abfragen &auml;ndern, um einen besseren Ausf&uuml;hrungsplan zu erzielen oder aber &#8211; und das ist die bessere Variante &#8211; Sie verlagern Ihre Access-Abfragen auf den SQL Server. <\/p>\n<p>Dadurch wird die Abfrage auf dem SQL Server ausgef&uuml;hrt und Access erh&auml;lt nur die ermittelten Datens&auml;tze. <\/p>\n<p>Das bringt einiges an Performance, denn <\/p>\n<ul>\n<li class=\"aufz-hlung\">die Abfrage wird auf einem Server ausgef&uuml;hrt, der in der Regel etwas kr&auml;ftiger ist als ein <\/p>\n<pre>Client ist,<\/li>\r\n<li class=\"aufz-hlung\">der SQL Server speichert bereits ausgef&uuml;hrte Abfragen im Arbeitsspeicher, um bessere Abfrageergebnisse zu erzielen, und <\/li>\r\n<li class=\"aufz-hlung\">der Netzwerk-Traffic wird minimiert, da nur die durch die Abfrage ermittelten Datens&auml;tze &uuml;ber das Netz transferiert werden.<\/li>\r\n<\/ul>\r\n<p>Was aber bietet der SQL Server an M&ouml;glichkeiten, die den Access-Abfragen am n&auml;chsten kommen Vergleicht man den Abfragedesigner von Access mit dem des SQL Servers, f&auml;llt die Wahl auf den ersten Blick auf die Sichten. Doch bevor Sie sich nun ohne weiterzulesen direkt an das Umsetzen der Abfragen zu Sichten machen, sollten Sie sich bewusst sein, was die Sichten des SQL Servers wirklich sind.<\/pre>\n<h2>Abfragen vs. Sichten<\/h2>\n<p>Sichten sind den Abfragen von Access zwar &auml;hnlich, denn auch hier werden mehrere Zeilen und Spalten von einer oder mehreren Tabellen zur Laufzeit ermittelt, aber im Vergleich zur Funktionalit&auml;t von Access-Abfragen sind die Sichten des SQL Servers stark eingeschr&auml;nkt. <\/p>\n<p>Um die Funktionalit&auml;t der Access-Abfragen im SQL Server abbilden zu k&ouml;nnen, reichen die Sichten alleine nicht aus. F&uuml;r die Umsetzung von Access-Abfragen m&uuml;ssen beim SQL Server bis zu drei verschiedene Komponenten genutzt werden: <b>Sichten<\/b>, <b>gespeicherte Prozeduren <\/b>und <b>benutzerdefinierte Funktionen<\/b>.<\/p>\n<h2>Sichten <\/h2>\n<p>Im Grunde genommen sind Sichten wie virtuelle Tabellen zu verstehen, die das Ergebnis einer <b>SELECT<\/b>-Anweisung liefern. Sichten werden nach der ersten Ausf&uuml;hrung im Ausf&uuml;hrungscache gespeichert und stehen somit schneller zur Verf&uuml;gung.<\/p>\n<p>Sichten sind von der Struktur her sehr einfach, was auch die Einschr&auml;nkungen erkl&auml;rt. So k&ouml;nnen Sichten keine Parameter enthalten und sofern die Sicht komplexere Tabellenverkn&uuml;pfungen enth&auml;lt, k&ouml;nnen die Daten der zugrundeliegenden Tabellen &uuml;ber die Sicht nicht &auml;ndert werden.<\/p>\n<p>In Access werden die Sichten nicht als Sichten unterst&uuml;tzt, sondern als Tabellen. Sichten m&uuml;ssen in Access wie Tabellen eingebunden werden, das hei&szlig;t, sofern die Daten &uuml;ber die Sicht manipuliert werden sollen, muss beim Einbinden der Sicht ein Prim&auml;rschl&uuml;ssel vergeben werden.<\/p>\n<p>Nat&uuml;rlich muss die f&uuml;r den Prim&auml;rschl&uuml;ssel ausgew&auml;hlte Spalte eindeutige Werte enthalten. Nach dem Einbinden stehen die Sichten in Access als eingebundene Tabellen zur Verf&uuml;gung.<\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Gespeicherte Prozeduren<\/p>\n<p>&auml;hnlich wie bei Sichten gibt es auch f&uuml;r gespeicherten Prozeduren einen Ausf&uuml;hrungscache, den Procedure-Cache. Hier werden die Ausf&uuml;hrungen der gespeicherten Prozeduren gespeichert und wiederverwendet. <\/p>\n<p>Gespeicherte Prozeduren werden in T-SQL geschrieben und k&ouml;nnen nicht nur Ergebnismengen liefern, sondern auch Daten manipulieren. Durch diese Flexibilit&auml;t sind gespeicherte Prozeduren optimal zur Pr&uuml;fung von Gesch&auml;ftsregeln und zur Kapselung beziehungsweise Standardisierung von Datenmanipulationen. Dabei sind im Gegensatz zu den Sichten auch Ein- und Ausgabe-Parameter m&ouml;glich.<\/p>\n<p>Es gibt aber auch Einschr&auml;nkungen: Gespeicherte Prozeduren k&ouml;nnen nicht in einer <b>SELECT<\/b>-Anweisung, in einer Sicht oder in einer benutzerdefinierten Funktion verwendet werden.<\/p>\n<h2>Benutzerdefinierte Funktionen<\/h2>\n<p>Hier gibt es zwei verschiedene Typen: Die Tabellen-Funktionen und die Skalar-Funktionen. Eine Tabellen-Funktion gibt immer eine Ergebnismenge zur&uuml;ck. Tabellen-Funktionen k&ouml;nnen wie Sichten oder Tabellen in einer Tabellenverkn&uuml;pfung verwendet werden, mit dem Vorteil, dass Tabellenfunktionen Parameter unterst&uuml;tzen. Skalar-Funktionen hingegen liefern immer nur einen einzigen Wert. Skalar-Funktionen unterst&uuml;tzen ebenfalls Parameter und k&ouml;nnen in <b>WHERE<\/b>-Bedingungen oder in <b>SELECT<\/b>-Anweisungen als Spalte genutzt werden. Beide Typen k&ouml;nnen in gespeicherten Prozeduren und in Sichten verwendet werden.<\/p>\n<p>Sie sehen schon, so einfach wird das mit dem &#8222;Verlagern der Abfragen auf den SQL Server&#8220; nicht. Um Access-Abfragen als Sichten, gespeicherte Prozeduren und benutzerdefinierte Funktionen auf dem SQL Server anzulegen, m&uuml;ssen Sie vor allem eines beherrschen: T-SQL.<\/p>\n<p>Ohne Kenntnisse in T-SQL werden Sie die Abfragen nicht ad&auml;quat umsetzen k&ouml;nnen. Denn auch in T-SQL ist es durchaus m&ouml;glich, langsame Abfragen zu programmieren. <\/p>\n<p>Um die Abfragen auf den SQL Server zu verlagern, ohne dass Sie tiefere T-SQL-Kenntnisse besitzen, gibt es noch eine weitere, wenn auch nicht immer zufriedenstellende M&ouml;glichkeit: Migrieren Sie Ihre MDB in eine ADP. Nein &#8211; das ist jetzt kein Aufruf zur Verwendung von ADPs. Aber auf diesem Weg k&ouml;nnen Sie sich vom Upsizing-Assistenten die Access-Abfragen als Sichten, gespeicherte Prozeduren und benutzerdefinierte Funktionen erstellen lassen. Diese SQL Server-Komponenten k&ouml;nnen Sie als Vorlage nutzen und die ADP nach der Migration wieder l&ouml;schen.<\/p>\n<h2>Die Migration<\/h2>\n<p>Zugegeben &#8211; die Ergebnisse der Migration sind nicht immer optimal. Aber f&uuml;r einen Einblick, wie welche Access-Abfrage in welche SQL Server-Komponente umgesetzt wird, sind sie allemal ausreichend. Eventuell haben Sie auch mit den erstellten Komponenten schon einen Performance-Vorteil. Und wenn nicht, k&ouml;nnen Sie Sichten, gespeicherte Prozeduren und benutzerdefinierten Funktionen jederzeit nachtr&auml;glich optimieren. Falls Sie den Weg &uuml;ber die ADP nicht gehen m&ouml;chten, enth&auml;lt Tabelle 1 eine &Uuml;bersicht, welche Access-Abfragetypen vom Upsizing-Assistenten in welche SQL Server-Komponenten &uuml;bersetzt werden. Diese Tabelle k&ouml;nnen Sie als Richtlinie f&uuml;r die manuelle Umsetzung der Access-Abfragen zu SQL Server-Komponenten nutzen.<\/p>\n<p>Der Upsizing-Assistent kann nicht alle Access-Abfragen umsetzen. Es gibt einige Konstrukte, die in Access einwandfrei funktionieren, aber nicht im SQL Server. Da w&auml;re zum Beispiel der Verweis auf einen Spaltennamen der in derselben Abfrage erzeugt wird:<\/p>\n<pre>SELECT dbo_Products.ProductName,\r\nSum([dbo_Order Details].Quantity) As SumOrder,\r\nCount([dbo_Order Fetails].ProductId) As QtyORder,\r\n[SumOrder]\/[QtyORder] As Schnitt\r\nFROM dbo_Products\r\nINNER JOIN [dbo_Order Details]\r\nON dbo_Products.ProductId\r\n= [dbo_Order Details].ProductId\r\nGROUP BY dbo_Products.ProductName<\/pre>\n<p>F&uuml;r diese Abfrage erstellt der Upsizing-Assistent keine SQL Server-Komponente, obwohl die Umsetzung eigentlich trivial ist, denn Sie m&uuml;ssen die Zeile <b>[SumOrder]\/[QtyORder] As Schnitt <\/b>nur durch die eigentlichen Spaltennamen und -Funktionen austauschen:<\/p>\n<pre>SELECT dbo.Products.ProductName,\r\nSum(dbo.[Order Details].Quantity) As SumOrder,\r\nCount(dbo.[Order Details].ProductId) As QtyORder,\r\nCast(Sum(dbo.[Order Details].Quantity) As float)\r\n\/ Count(dbo.[Order Details].ProductId) As Schnitt FROM dbo.Products\r\nINNER JOIN dbo.[Order Details]\r\nON dbo.Products.ProductId\r\n= dbo.[Order Details].ProductId\r\nGROUP BY dbo.Products.ProductName<\/pre>\n<p>Dabei ist zu beachten, dass ein Integer geteilt durch einen Integer wieder einen Integer ergibt. Insofern muss die Spalte &#8222;Schnitt&#8220; noch in eine Gleitkommazahl konvertiert werden. Ein Garant f&uuml;r Probleme ist bei jedem Datenbanksystem das Datumsformat. Auch der Upsizing-Assistent hat hier so seine M&uuml;he. Access erwartet das Datum im Format <b>#01.03.2008# <\/b>beziehungsweise in der englischen Schreibweise <b>#03.01.2008#<\/b>.<\/p>\n<p>Der SQL Server akzeptiert viele verschiedene Formate, nur die beiden oben genannten eben nicht. Die Ursache f&uuml;r das Problem ist das Kennzeichen <b>#<\/b>. Die beste L&ouml;sung ist, dem SQL Server das Datum immer als String im ISO-Format (<b>yyyymmdd<\/b>) zu &uuml;bergeben.<\/p>\n<pre>SELECT dbo.Orders.* FROM dbo.Orders\r\nWHERE dbo.Orders.ShippedDate = &apos;19980506&apos;<\/pre>\n<p>Dazu kommt noch das Problem mit der teilweise abweichenden SQL-Syntax. In Access wird es dem Anwender leicht gemacht und die <b>DELETE<\/b>-Anweisung der <b>UPDATE<\/b>-Anweisung angepasst. Ob nun beim einfachen L&ouml;schen von Datens&auml;tzen einer Tabelle oder beim etwas komplexeren L&ouml;schen von Datens&auml;tzen, f&uuml;r deren Ermittlung zun&auml;chst noch weitere Tabellen miteinander verkn&uuml;pft werden m&uuml;ssen, f&uuml;r den SQL Server enth&auml;lt die <b>DELETE<\/b>-Anweisung von Access gleich zwei syntaktische Fehler.<\/p>\n<pre>DELETE [dbo_Order Details].*\r\nFROM [dbo_Order Details]\r\nINNER JOIN dbo_Orders\r\nON [dbo_Order Details].OrderID\r\n= bo_Orders.OrderID\r\nWHERE (((dbo_Orders.ShippedDate) Is Null)\r\nAND ((dbo_Orders.RequiredDate) &lt; #12\/31\/1998#))<\/pre>\n<p>Zum einen gibt es im SQL Server kein <b>DELETE * FROM tabelle<\/b>, sondern lediglich ein <b>DELETE FROM tabelle<\/b>,<b> <\/b>und zum anderen wird die Tabellenverkn&uuml;pfung &uuml;ber <b>INNER JOIN <\/b>in dieser Form nicht unterst&uuml;tzt. Hier kann entweder die SQL Server-Syntax<\/p>\n<pre>DELETE FROM dbo.[Order Details]\r\nFROM dbo.[Order Details]\r\nINNER JOIN dbo.Orders\r\nON dbo.[Order Details].OrderId\r\n= dbo.Orders.OrderId\r\nWHERE dbo.Orders.ShippedDate Is Null\r\nAND dbo.Orders.RequiredDate &lt;= &apos;31.12.1998&apos;<\/pre>\n<p>oder ANSI-SQL verwendet werden:<\/p>\n<pre>DELETE FROM dbo.[Order Details]\r\nWHERE dbo.[Order Details].OrderId\r\nIN (\r\nSELECT OrderId\r\nFROM dbo.Orders\r\nWHERE dbo.Orders.ShippedDate Is Null\r\nAND dbo.Orders.RequiredDate &lt;= &apos;31.12.1998&apos;)<\/pre>\n<p>Last but not least sei noch die Kreuztabellenabfrage erw&auml;hnt. Diese wird nicht vom Upsizing-Assistenten umgesetzt, da es in SQL Server keine Kreuztabellenabfragen gibt. In den SQL Server Versionen vor 2005 gibt es nicht mal einen PIVOT-Befehl, denn dieser wurde erst mit dem SQL Server 2005 eingef&uuml;hrt. In der Version 2000 und fr&uuml;her muss die Kreuztabellenabfrage mit einer umst&auml;ndlichen <b>CASE<\/b>-Anweisung umgesetzt werden. Mehr dazu finden Sie in den &#8222;Books Online&quot; des SQL Servers unter &#8222;Kreuztabellenabfrage&#8220; beziehungsweise &#8222;Pivot&#8220;. Sie sehen, die Umsetzung der Abfragen in Sichten, gespeicherte Prozeduren beziehungsweise benutzerdefinierte Funktionen ist kein leichtes Unterfangen. Aber der Aufwand lohnt sich, denn er wird mit einer besseren Performance belohnt.<\/p>\n<h2>Fazit<\/h2>\n<p>Dies war ein kleiner Einblick in die Vorgehensweise, wie Access die Abfragen an den SQL Server &uuml;bergibt und wie Sie ermitteln k&ouml;nnen, welche Datenmengen vom SQL Server an Access &uuml;bertragen werden. Mit diesen Informationen k&ouml;nnen Sie nun ein besseres Abfrageverhalten Ihrer Access\/SQL Server-Applikation erzielen. Sie haben dazu zwei Alternativen: Entweder Sie arbeiten weiterhin mit Access-Abfragen und passen diese so an, dass der Abfrageoptimierer diese 1:1 an den SQL Server &uuml;bergibt, oder aber Sie ersetzen Ihre Access-Abfragen durch die SQL Server-Komponenten Sichten, gespeicherte Prozeduren beziehungsweise benutzerdefinierte Funktionen. Letzteres ist die bessere Alternative, da hier die Ressourcen und M&ouml;glichkeiten des SQL Servers genutzt werden und das Netzwerk nur noch mit den relevanten Daten belastet wird. Aber auch hier gibt es einen Haken: In einer MDB k&ouml;nnen gespeicherte Prozeduren und benutzerdefinierte Funktionen nicht wie Sichten genutzt werden. Mehr zu diesem Thema finden Sie in einem weiteren Beitrag.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wussten Sie, dass &#8222;Query&#8220; ins Deutsche &uuml;bersetzt &#8222;Abfragen&#8220; hei&szlig;t Nat&uuml;rlich wussten Sie das. Es ist ja auch die korrekte Bezeichnung, wenn es um Datenbanken geht. Aber wussten Sie auch, dass &#8222;Query&#8220; ebenso f&uuml;r &#8222;R&uuml;ckfrage&#8220; und sogar f&uuml;r &#8222;Reklamation&#8220; steht &Auml;hnlich ist es mit dem Verb: &#8222;to query&#8220; wird als &#8222;abfragen&#8220;, aber auch als &#8222;bezweifeln&#8220; und &#8222;in Frage stellen&#8220; verstanden. Nun sollen die Ergebnisse von Access-Abfragen nat&uuml;rlich weder bezweifelt noch in Frage gestellt werden; auch nicht, wenn die Abfragen auf einen SQL Server zugreifen. Aber die Antwortzeiten solcher Abfragen werden Sie in manchen F&auml;llen durchaus bezweifeln. Auch die Vorgehensweise, mit der Access die Daten vom SQL Server anfordert, kann in Frage gestellt werden.<\/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":[662008,66042008,44000029,44000022],"tags":[],"class_list":["post-55000618","post","type-post","status-publish","format-standard","hentry","category-662008","category-66042008","category-Abfragetechnik_und_SQL","category-SQL_Server_und_Co"],"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>Abfragen von Access zum SQL Server - 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\/Abfragen_von_Access_zum_SQL_Server\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Abfragen von Access zum SQL Server\" \/>\n<meta property=\"og:description\" content=\"Wussten Sie, dass &quot;Query&quot; ins Deutsche &uuml;bersetzt &quot;Abfragen&quot; hei&szlig;t Nat&uuml;rlich wussten Sie das. Es ist ja auch die korrekte Bezeichnung, wenn es um Datenbanken geht. Aber wussten Sie auch, dass &quot;Query&quot; ebenso f&uuml;r &quot;R&uuml;ckfrage&quot; und sogar f&uuml;r &quot;Reklamation&quot; steht &Auml;hnlich ist es mit dem Verb: &quot;to query&quot; wird als &quot;abfragen&quot;, aber auch als &quot;bezweifeln&quot; und &quot;in Frage stellen&quot; verstanden. Nun sollen die Ergebnisse von Access-Abfragen nat&uuml;rlich weder bezweifelt noch in Frage gestellt werden; auch nicht, wenn die Abfragen auf einen SQL Server zugreifen. Aber die Antwortzeiten solcher Abfragen werden Sie in manchen F&auml;llen durchaus bezweifeln. Auch die Vorgehensweise, mit der Access die Daten vom SQL Server anfordert, kann in Frage gestellt werden.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Abfragen_von_Access_zum_SQL_Server\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-06T15:19:05+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg04.met.vgwort.de\/na\/19e68f2ea6264f499c0fdc376f12e626\" \/>\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=\"17\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Abfragen_von_Access_zum_SQL_Server\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Abfragen_von_Access_zum_SQL_Server\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Abfragen von Access zum SQL Server\",\"datePublished\":\"2020-05-06T15:19:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Abfragen_von_Access_zum_SQL_Server\\\/\"},\"wordCount\":3037,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Abfragen_von_Access_zum_SQL_Server\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/19e68f2ea6264f499c0fdc376f12e626\",\"articleSection\":[\"2008\",\"4\\\/2008\",\"Abfragetechnik und SQL\",\"SQL Server und Co.\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Abfragen_von_Access_zum_SQL_Server\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Abfragen_von_Access_zum_SQL_Server\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Abfragen_von_Access_zum_SQL_Server\\\/\",\"name\":\"Abfragen von Access zum SQL Server - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Abfragen_von_Access_zum_SQL_Server\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Abfragen_von_Access_zum_SQL_Server\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/19e68f2ea6264f499c0fdc376f12e626\",\"datePublished\":\"2020-05-06T15:19:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Abfragen_von_Access_zum_SQL_Server\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Abfragen_von_Access_zum_SQL_Server\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Abfragen_von_Access_zum_SQL_Server\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/19e68f2ea6264f499c0fdc376f12e626\",\"contentUrl\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/19e68f2ea6264f499c0fdc376f12e626\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Abfragen_von_Access_zum_SQL_Server\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Abfragen von Access zum SQL Server\"}]},{\"@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":"Abfragen von Access zum SQL Server - 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\/Abfragen_von_Access_zum_SQL_Server\/","og_locale":"de_DE","og_type":"article","og_title":"Abfragen von Access zum SQL Server","og_description":"Wussten Sie, dass \"Query\" ins Deutsche &uuml;bersetzt \"Abfragen\" hei&szlig;t Nat&uuml;rlich wussten Sie das. Es ist ja auch die korrekte Bezeichnung, wenn es um Datenbanken geht. Aber wussten Sie auch, dass \"Query\" ebenso f&uuml;r \"R&uuml;ckfrage\" und sogar f&uuml;r \"Reklamation\" steht &Auml;hnlich ist es mit dem Verb: \"to query\" wird als \"abfragen\", aber auch als \"bezweifeln\" und \"in Frage stellen\" verstanden. Nun sollen die Ergebnisse von Access-Abfragen nat&uuml;rlich weder bezweifelt noch in Frage gestellt werden; auch nicht, wenn die Abfragen auf einen SQL Server zugreifen. Aber die Antwortzeiten solcher Abfragen werden Sie in manchen F&auml;llen durchaus bezweifeln. Auch die Vorgehensweise, mit der Access die Daten vom SQL Server anfordert, kann in Frage gestellt werden.","og_url":"https:\/\/access-im-unternehmen.de\/Abfragen_von_Access_zum_SQL_Server\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-06T15:19:05+00:00","og_image":[{"url":"http:\/\/vg04.met.vgwort.de\/na\/19e68f2ea6264f499c0fdc376f12e626","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"17\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Abfragen_von_Access_zum_SQL_Server\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Abfragen_von_Access_zum_SQL_Server\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Abfragen von Access zum SQL Server","datePublished":"2020-05-06T15:19:05+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Abfragen_von_Access_zum_SQL_Server\/"},"wordCount":3037,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Abfragen_von_Access_zum_SQL_Server\/#primaryimage"},"thumbnailUrl":"http:\/\/vg04.met.vgwort.de\/na\/19e68f2ea6264f499c0fdc376f12e626","articleSection":["2008","4\/2008","Abfragetechnik und SQL","SQL Server und Co."],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Abfragen_von_Access_zum_SQL_Server\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Abfragen_von_Access_zum_SQL_Server\/","url":"https:\/\/access-im-unternehmen.de\/Abfragen_von_Access_zum_SQL_Server\/","name":"Abfragen von Access zum SQL Server - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Abfragen_von_Access_zum_SQL_Server\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Abfragen_von_Access_zum_SQL_Server\/#primaryimage"},"thumbnailUrl":"http:\/\/vg04.met.vgwort.de\/na\/19e68f2ea6264f499c0fdc376f12e626","datePublished":"2020-05-06T15:19:05+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Abfragen_von_Access_zum_SQL_Server\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Abfragen_von_Access_zum_SQL_Server\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Abfragen_von_Access_zum_SQL_Server\/#primaryimage","url":"http:\/\/vg04.met.vgwort.de\/na\/19e68f2ea6264f499c0fdc376f12e626","contentUrl":"http:\/\/vg04.met.vgwort.de\/na\/19e68f2ea6264f499c0fdc376f12e626"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Abfragen_von_Access_zum_SQL_Server\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Abfragen von Access zum SQL Server"}]},{"@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\/55000618","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=55000618"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000618\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000618"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000618"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000618"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}