Verknüpfen von Access-Anwendungen mit SQL Server – Azure SQL-Datenbank (AccessToSQL)

Wenn Sie Ihre vorhandenen Access-Anwendungen mit SQL Server verwenden möchten, können Sie Ihre ursprünglichen Access-Tabellen mit den migrierten SQL Server- oder SQL Azure-Tabellen verknüpfen. Das Verknüpfen verändert Ihre Access-Datenbank dahingehend, dass Ihre Abfragen, Formulare, Berichte und Datenzugriffsseiten die Daten in SQL Server oder Azure SQL-Datenbank verwenden und nicht die Daten in Ihrer Access-Datenbank.

Hinweis

Ihre Access-Tabellen verbleiben in Access, werden aber nicht zusammen mit SQL Server- oder SQL Azure-Updates aktualisiert. Nachdem Sie die Tabellen verknüpft und die Funktionalität überprüft haben, möchten Sie Ihre Access-Tabellen vielleicht löschen.

Verknüpfen von Access- und SQL Server-Tabellen

Wenn Sie eine Access-Tabelle mit einer SQL Server- oder SQL Azure-Tabelle verknüpfen, speichert die Jet-Datenbank-Engine Verbindungsinformationen und Tabellenmetadaten, aber die Daten werden in SQL Server oder SQL Azure gespeichert. Diese Verknüpfung ermöglicht Ihren Access-Anwendungen die Arbeit mit Access-Tabellen, obwohl sich die tatsächlichen Tabellen und Daten in SQL Server oder SQL Azure befinden.

Hinweis

Wenn Sie die SQL Server-Authentifizierung verwenden, wird Ihr Passwort in den verknüpften Access-Tabellen als Klartext gespeichert. Wir empfehlen die Verwendung der Windows-Authentifizierung.

Verknüpfen von Tabellen

  1. Wählen Sie im Access Metadata Explorer die Tabellen aus, die Sie verknüpfen möchten.

  2. Klicken Sie mit der rechten Maustaste auf Tabellen und wählen Sie dann Verknüpfen aus.

Der SQL Server Migration Assistant (SSMA) für Access sichert die ursprüngliche Access-Tabelle und erstellt eine verknüpfte Tabelle.

Nachdem Sie die Tabellen verknüpft haben, werden die Tabellen in SSMA mit einem kleinen Verknüpfungssymbol gekennzeichnet. In Access werden die Tabellen mit einem Verknüpft-Symbol angezeigt, bei dem es sich um einen Globus mit einem darauf zeigenden Pfeil handelt.

Wenn Sie in Access eine Tabelle öffnen, werden die Daten über einen Keysetcursors abgerufen. Infolgedessen werden bei großen Tabellen nicht alle Daten gleichzeitig abgerufen. Während Sie die Tabelle durchsuchen, ruft Access jedoch nach Bedarf zusätzliche Daten ab.

Wichtig

Zum Verknüpfen von Access-Tabellen mit einer Azure-Datenbank brauchen Sie SQL Server Native Client (SNAC) Version 10.5 oder höher.
Die aktuelle Version von SNAC erhalten Sie aus dem Microsoft SQL Server 2008 R2 Feature Pack.

Aufheben der Verknüpfung von Access-Tabellen

Wenn Sie die Verknüpfung einer Access-Tabelle mit einer SQL Server- oder SQL Azure-Tabelle aufheben, stellt SSMA die ursprüngliche Access-Tabelle und ihre Daten wieder her.

Aufheben der Verknüpfung von Tabellen

  1. Wählen Sie im Access Metadata Explorer die Tabellen aus, deren Verknüpfung Sie aufheben möchten.

  2. Klicken Sie mit der rechten Maustaste auf Tabellen und wählen Sie dann Verknüpfung aufheben aus.

Verknüpfen von Tabellen mit einem anderen Server

Wenn Sie die Access-Tabellen mit einer SQL Server-Instanz verknüpft haben und später die Verknüpfungen zu einer anderen Instanz ändern möchten, müssen Sie die Tabellen neu verknüpfen.

Verknüpfen von Tabellen mit einem anderen Server

  1. Wählen Sie im Access Metadata Explorer die Tabellen aus, deren Verknüpfung Sie aufheben möchten.

  2. Klicken Sie mit der rechten Maustaste auf Tabellen und wählen Sie dann Verknüpfung aufheben aus.

  3. Klicken Sie auf die Schaltfläche Verbindung mit SQL Server erneut herstellen.

  4. Stellen Sie eine Verbindung mit der Instanz von SQL Server oder SQL Azure her, mit der Sie die Access-Tabellen verknüpfen möchten.

  5. Wählen Sie im Access Metadata Explorer die Tabellen aus, die Sie verknüpfen möchten.

  6. Klicken Sie mit der rechten Maustaste auf Tabellen und wählen Sie dann Verknüpfen aus.

Aktualisieren verknüpfter Tabellen

Wenn die SQL Server- oder SQL Azure-Tabellendefinitionen geändert werden, können Sie die Verknüpfung aufheben und dann nach den in diesem Thema beschriebenen Verfahren die Tabellen in SSMA erneut verknüpfen. Sie können die Tabellen auch über Access aktualisieren.

Aktualisieren verknüpfter Tabellen über Access

  1. Öffnen Sie die Access-Datenbank.

  2. Klicken Sie in der Liste Objekte auf Tabellen.

  3. Klicken Sie mit der rechten Maustaste auf eine verknüpfte Tabelle und wählen Sie dann Tabellenverknüpfungs-Manager aus.

  4. Aktivieren Sie das Kontrollkästchen neben jeder verknüpften Tabelle, die Sie aktualisieren möchten, und klicken Sie dann auf OK.

Mögliche Probleme nach der Migration

In den folgenden Abschnitten sind Probleme, die in vorhandenen Access-Anwendungen auftreten können, nachdem Sie Datenbanken von Access zu SQL Server oder SQL Azure migriert und dann die Tabellen verknüpft haben, zusammen mit den Ursachen und Lösungen aufgeführt.

Langsame Leistung mit verknüpften Tabellen

Ursache: Manche Abfragen können nach dem Upsizing aus den folgenden Gründen langsam sein:

  • Die Anwendung hängt von Funktionen ab, die in SQL Server oder SQL Azure nicht vorhanden sind, weshalb Jet Tabellen lokal abruft, um eine SELECT-Abfrage auszuführen.

  • Abfragen, die viele Zeilen aktualisieren oder löschen, werden von Jet als parametrisierte Abfrage für jede Zeile gesendet.

Lösung: Wandeln Sie die langsamen Abfragen in Pass-Through-Abfragen, gespeicherte Prozeduren oder Ansichten um. Beim Umwandeln in Pass-Through-Abfragen gibt es folgende Probleme:

  • Pass-Through-Abfragen können nicht geändert werden. Das Ändern des Abfrageergebnisses oder Hinzufügen neuer Datensätze muss auf alternative Weise erfolgen, z. B. durch explizite Schaltflächen Ändern oder Hinzufügen in dem mit der Abfrage verbundenen Formular.

  • Manche Abfragen erfordern Benutzereingaben, aber Pass-Through-Abfragen unterstützen keine Benutzereingaben. Benutzereingaben sind über VBA-Code (Visual Basic for Applications) möglich, der zur Eingabe von Parametern auffordert, oder über ein Formular, das als Eingabesteuerelement verwendet wird. In beiden Fällen übermittelt der VBA-Code die Abfrage mit der Benutzereingabe an den Server.

Spalten mit automatischer Inkrementierung werden erst aktualisiert, wenn der Datensatz aktualisiert wird

Ursache: Nach dem Aufrufen von RecordSet.AddNew in Jet ist die Spalte mit automatischer Inkrementierung verfügbar, bevor der Datensatz aktualisiert wird. Dies ist in SQL Server oder SQL Azure nicht der Fall. Der neue Wert der Identitätsspalte ist erst nach dem Speichern des neuen Datensatzes verfügbar.

Lösung: Führen Sie den folgenden VBA-Code (Visual Basic for Applications) aus, bevor Sie auf das Identitätsfeld zugreifen:

Recordset.Update  
Recordset.Move 0,  
Recordset.LastModified  

Neue Datensätze sind nicht verfügbar

Ursache: Wenn Sie mittels VBA einen Datensatz zu einer SQL Server- oder SQL Azure-Tabelle hinzufügen und das Feld der Tabelle mit dem eindeutigen Index einen Standardwert hat und Sie diesem Feld keinen Wert zuweisen, wird der neue Datensatz erst angezeigt, wenn Sie die Tabelle in SQL Server oder SQL Azure erneut öffnen. Wenn Sie versuchen, einen Wert aus dem neuen Datensatz abzurufen, erhalten Sie die folgende Fehlermeldung:

Run-time error '3167' Record is deleted.

Lösung: Wenn Sie die SQL Server- oder SQL Azure-Tabelle mittels VBA-Code öffnen, sollten Sie die dbSeeChanges-Option entsprechend dem folgenden Beispiel einschließen:

Set rs = db.OpenRecordset("TestTable", dbOpenDynaset, dbSeeChanges)

Nach der Migration lassen manche Abfragen das Hinzufügen eines neuen Datensatzes durch den Benutzer nicht zu

Ursache: Wenn eine Abfrage nicht alle Spalten enthält, die in einem eindeutigen Index enthalten sind, können Sie mit der Abfrage keine neuen Werte hinzufügen.

Lösung: Stellen Sie sicher, dass alle Spalten, die in mindestens einem eindeutigen Index enthalten sind, Teil der Abfrage sind.

Sie können ein verknüpftes Tabellenschema mit Access nicht ändern

Ursache: Nach dem Migrieren von Daten und Verknüpfen von Tabellen kann der Benutzer das Schema einer Tabelle in Access nicht ändern.

Lösung: Ändern Sie das Tabellenschema über SQL Server Management Studio und aktualisieren Sie dann die Verknüpfung in Access.

Ursache: Nach dem Migrieren von Daten verlieren Hyperlinks in Spalten ihre Funktionalität und werden zu einfachen nvarchar(max)-Spalten.

Lösung: Keine.

Manche SQL Server-Datentypen werden von Access nicht unterstützt

Ursache: Wenn Sie ihre SQL Server- oder SQL Azure-Tabellen später so aktualisieren, dass sie Datentypen enthalten, die von Access nicht unterstützt werden, können Sie die Tabelle in Access nicht öffnen.

Lösung: Sie können eine Access-Abfrage definieren, die nur die Zeilen mit unterstützten Datentypen zurückgibt.

Siehe auch

Migrieren von Access-Datenbanken zu SQL Server