window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Zugriff auf Server über ODBC

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Manchmal stehen Sie vor der Aufgabe, die Daten eines SQL-Servers unter Access zu verwalten, oder sogar einen solchen als Backend zu verwenden. Grund für seinen Einsatz ist meist eine Mehrbenutzerumgebung, bei der Access-Backends schnell in die Knie gehen. Ein Buch mit sieben Siegeln Keine Scheu, die Sache ist nicht gar so kompliziert und die ersten Schritte sind schnell gemacht!

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1607_ODBC.zip.

SQL-Server und ODBC

Greifen Sie unter Access auf die Daten von Tabellen zu, so befinden sich diese entweder in der aktuellen Datenbankdatei, oder in einer externen ACCDB oder MDB. Handelt es sich um eine externe Datei, so müssen deren Tabellen über den Tabellenverknüpfungsdialog von Access verlinkt werden. Auch wenn dies nicht so offensichtlich ist, kommt hier in beiden Fällen eine zusätzliche Komponente in Gestalt der Access Database Engine als zusätzliche Schicht ins Spiel. Diese Engine kann sogar ohne Access selbst unter Windows installiert werden – Microsoft bietet sie als freien Download an. Diese Engine stellt quasi den Datenbankserver von Access dar.

Ein SQL-Server verrichtet ähnliche Arbeit, wie die Access Database Engine, verwaltet seine Tabellendateien jedoch unsichtbar im Hintergrund. Erst auf eine SQL-Anfrage über einen Kommunikationskanal zu ihm, sei es das TCP/IP-Protokoll oder eine sogenannte Pipe, liefert er die gewünschten Daten aus. Access allein ist nicht imstande, solche Anfragen zu stellen, denn es kennt ja die Schnittstelle zum Server, seine API, nicht. Deshalb wurde einst eine allgemeingültige Schnittstelle unter Windows geschaffen, die auf den Namen Open Database Connectivity (ODBC) hört. Diese standardisierte Schnittstelle hat einen Satz von Zugriffsmethoden, die Access anzusprechen weiß. Das ODBC-System vermittelt diese Zugriffe über einen speziellen Treiber, der für den jeweiligen SQL-Server installiert sein muss. Der Treiber allein kennt die API des Servers und übersetzt die Anfragen auf dessen Schnittstelle. Damit der Unterschied etwas deutlicher wird folgt hier zunächst im Groben die Darstellung des Zugriffs von Access auf eine ACCDB-Datei:

Access
|
Access Database Engine
|
(Netzwerk)
|
ACCDB-Datei

Access fragt die Access Database Engine an, die ihrerseits entweder lokal oder gegebenenfalls über ein Netzwerk auf die Datei zugreift, um deren Daten auszulesen oder zu schreiben. ähnlich sieht dies bei der ODBC-Kommunikation aus, nur dass hier zusätzliche Schichten nach der Access Database Engine eingezogen sind, die ihrerseits nun natürlich andere Methoden zum Zugriff absetzen muss:

Access
|
Access Database Engine
|
ODBC-Administrator
|
ODBC-Treiber
|
(Netzwerk)
|
DBMS (SQL-Server)

Der ODBC-Administrator ist das Framework für alle ODBC-Vorgänge. Er lädt oder entlädt etwa einen bestimmten installierten ODBC-Treiber, der von der Engine bestimmt wird. Dieser Administrator enthält auch eine Oberfläche, die sich über die Systemsteuerung von Windows aufrufen lässt. Allerdings geht das zunächst nur mit administrativen Rechten, weil sich hier Systemeinstellungen ändern ließen.

Der schließlich geladene ODBC-Treiber kontaktiert den SQL-Server und verarbeitet als Mittler die Zugriffe. In der Regel geschieht dies über einen TCP/IP-Kanal, und das selbst dann, wenn der SQL-Server lokal installiert ist. ähnlich, wie ein HTML-Web-Server, nimmt der SQL-Server die Anfragen auf, sucht die gewünschten Daten aus seinem DBMS (Database Management System) heraus, und schickt sie zurück. Das Ganze schlägt nun die entgegengesetzte Richtung ein, bis die Daten schließlich an Access gelangen.

Konkrete SQL-Server

An dieser Stelle wären einige frei verfügbare Implementationen von SQL-Servern zu nennen. Der prominenteste ist wohl der aus dem Hause Microsoft selbst. Er nennt sich denn auch schlicht und ungeniert SQL-Server (Microsoft SQL Server). Die großen Versionen sind kostenpflichtig, und das nicht zu knapp! Die Developer Edition, seit der Version 2014 für jeden installierbar, der einen Account auf der Visual Studio-Seite anlegt, ist genauso mächtig, sein Einsatz jedoch ausschließlich für Entwicklungszwecke gedacht. Produktiver Einsatz ist untersagt. Anders bei der Express Edition, die beliebig einsetzbar ist, dafür aber einige Einschränkungen aufweist. Die Gegenüberstellung zeigt die wichtigsten Unterschiede:

Developer Edition
- Arbeitet mit allen CPU-Kernen
- Gesamter RAM ist ansprechbar 
- Datenbankgröße beliebig
- Für den Download ist ein Visual Studio-Account erforderlich
Express 2014
- Arbeitet mit max. 4 CPU-Kernen 
- Nur 1 GB RAM pro Instanz
- Datenbankgröße max. 10 GB
- Frei downloadbar

Wenn man die Limitationen von Access und ACCDBs kennt, so erscheinen die Beschränkungen der Express-Edition ziemlich verkraftbar. Im Gegenteil! Mit 10 GB kann eine Datenbank sogar erheblich größer sein, als eine ACCDB.

Die Tools zur Verwaltung der Server hingegen sind frei erhältlich.

Nicht weniger verbreitet ist der MySQL-Server, welcher einen langen Weg vom Open Source-Projekt über die Firmen MySQL AB, Sun und nun Oracle hinter sich hat. Die MySQL Community Edition unterliegt funktionell keinen wesentlichen Beschränkungen gegenüber der recht teureren Enterprise Edition. Liest man die Lizenzbedingungen des im Quellcode verfügbaren Servers allerdings genau, so wird klar, dass Closed Source untersagt ist. Das bedeutet für Sie als Access- Entwickler, dass Ihre Datenbank, sobald sie auf den Server zugreift, ebenfalls quelloffen sein muss. Eine ACCDE mit verstecktem VBA-Code wäre somit nicht erlaubt, es sei denn, ihr Quellcode wäre öffentlich dokumentiert. Die meisten Firmen wären damit nicht glücklich. Die Entscheidung, ob man das alles so genau nehmen muss, überlassen wir Ihnen…

Ein Ausweg aus dem Dilemma führt zu MariaDB. Der Server ist ein kompletter Ersatz für MySQL und wird auch vom Team um den ursprünglichen Hauptentwickler Johansson weiterprogrammiert, der Wert auf wirkliches Open Source legt. MariaDB ist kompatibel und kann sogar über den ODBC-Treiber für MySQL angesprochen werden.

Noch mehr Open Source bekommt man mit dem immer verbreiteteren PostGreSQL. Die Engine lässt in keiner Hinsicht zu wünschen übrig und ist inzwischen eher fortschrittlicher und funktionell umfangreicher, als MySQL.

Schließlich zu erwähnen wäre noch der SQL-Server ORACLE Express 11g (XE), die abgespeckte Version des in Unternehmen weltweit verbreitetsten DBMS. Man bekommt auch hier einen sehr professionellen Server, muss dafür aber ziemliche Abstriche machen:

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar