OLE DB-Anbieter für Jet

Der Microsoft OLE DB-Anbieter für Jet stellt eine OLE DB-Schnittstelle für Microsoft Access-Datenbanken bereit und ermöglicht verteilten Abfragen von SQL Server 2005 und höher den Zugriff auf Access-Datenbanken und Excel-Kalkulationstabellen.

Die Microsoft Office 2007-Treiber können von der folgenden Webseite heruntergeladen werden: 2007 Office System-Treiber: Datenkonnektivitätskomponenten.

TippTipp

Um eine Verbindung mit Microsoft Access herzustellen, muss SQL Server das Microsoft Access-Database Engine (Datenbankmodul) starten. Anders als bei den meisten anderen Anbietern handelt es sich bei Microsoft Access nicht um einen Lightweight-Anbieter, sondern um das gesamte Microsoft Access-Database Engine (Datenbankmodul). Beim Öffnen von Microsoft Access im Prozessbereich von SQL Server können wegen fehlender Datenträger-, Prozessor- oder Arbeitsspeicherressourcen Fehler auftreten. Ein möglicher Fehler ist z. B. "Das Datenquellenobjekt des OLE DB-Anbieters '%ls' kann nicht initialisiert werden". Um Fehler aufgrund von nicht genügendem Arbeitsspeicher zu vermeiden, sollte der Anbieter so konfiguriert werden, dass er außerhalb des Speicherprozessbereichs von SQL Server geöffnet wird.

So führen Sie Microsoft Access außerhalb des SQL Server-Speicherbereichs aus

  1. Erweitern Sie im SQL Server Management Studio Objekt-Explorer den SQL Server-Namen, Serverobjekte, Verbindungsserver und Anbieter, klicken Sie mit der rechten Maustaste auf den Microsoft Access-Anbieter Microsoft.ACE.OLEDB.12.0 oder Microsoft.Jet.OLEDB.4.0, und klicken Sie dann auf Eigenschaften.

  2. Deaktivieren Sie im Feld Anbieteroptionen die Option InProcess zulassen.

  3. Klicken Sie auf OK.

So erstellen Sie einen Verbindungsserver für den Zugriff auf eine Access-Datenbank

  1. Führen Sie sp_addlinkedserver aus, um den Verbindungsserver zu erstellen, und geben Sie dabei Microsoft.Jet.OLEDB.4.0 als provider_name sowie den vollständigen Pfadnamen der Access-Datenbankdatei mit der Erweiterung MDB als data_source an. Die Datenbankdatei mit der Erweiterung MDB muss sich auf dem Server befinden. data_source wird auf dem Server (nicht auf dem Client) ausgewertet, und der Pfad muss auf dem Server gültig sein.

    Um z. B. einen Verbindungsserver namens Nwind für den Zugriff auf die Access-Datenbank Nwind.mdb im Verzeichnis c:\mydata directory zu erstellen, geben Sie Folgendes an:

    sp_addlinkedserver 'Nwind', 'Access', 'Microsoft.Jet.OLEDB.4.0', 
       'c:\mydata\Nwind.mdb'
    
  2. Für den Zugriff auf eine ungesicherte Access-Datenbank muss für SQL Server-Anmeldenamen, mit denen versucht wird, auf eine Access-Datenbank zuzugreifen, eine Anmeldenamenzuordnung zum Benutzernamen Admin ohne Kennwort definiert sein.

    Dieses Beispiel ermöglicht dem lokalen Benutzer Joe den Zugriff auf den Verbindungsserver Nwind.

    sp_addlinkedsrvlogin 'Nwind', false, 'Joe', 'Admin', NULL
    

    Um auf eine gesicherte Access-Datenbank zuzugreifen, konfigurieren Sie die Registrierung (mithilfe des Registrierungs-Editors) für die Verwendung der richtigen Datei mit Arbeitsgruppeninformationen, die von Access verwendet wird. Verwenden Sie den Registrierungs-Editor, um den vollständigen Pfadnamen der von Access verwendeten Datei mit Arbeitsgruppeninformationen zu diesem Registrierungseintrag hinzuzufügen:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\SystemDB

  3. Verwenden Sie sp_addlinkedsrvlogin nach dem Konfigurieren des Registrierungseintrags, um Benutzernamenzuordnungen zwischen lokalen Benutzernamen und Access-Benutzernamen zu erstellen:

    sp_addlinkedsrvlogin 'Nwind', false, 'Joe',
        'AccessUser', '034fhd99dl'
    
SicherheitshinweisSicherheitshinweis

Für dieses Beispiel wird nicht die Windows-Authentifizierung verwendet. Kennwörter werden unverschlüsselt übertragen. Kennwörter sind in Datenquellendefinitionen und Skripts, die auf Datenträgern gespeichert werden, in Sicherungen und in Protokolldateien sichtbar. Verwenden Sie für diese Art von Verbindung auf keinen Fall ein Administratorkennwort. Wenden Sie sich wegen Sicherheitshinweisen speziell für Ihre Umgebung an Ihren Netzwerkadministrator.

Access-Datenbanken besitzen keine Katalog- und Schemanamen. Deshalb kann in verteilten Abfragen auf Tabellen in einem Access-basierten Verbindungsserver mithilfe eines vierteiligen Namens der Form linked_server**...**table_name verwiesen werden.

Das folgende Beispiel ruft alle Zeilen aus der Employees-Tabelle im Verbindungsserver namens Nwind ab.

SELECT * 
FROM Nwind...Employees

So erstellen Sie einen Verbindungsserver für eine Excel-Kalkulationstabelle

Für den Zugriff auf eine Microsoft Excel-Kalkulationstabelle kann der Microsoft OLE DB-Anbieter für Jet 4.0 verwendet werden.

  • Verwenden Sie das in dem folgenden Beispiel angegebene Format, um einen Verbindungsserver zu erstellen, der auf eine Excel-Kalkulationstabelle zugreift.

    EXEC sp_addlinkedserver EXCEL,
         'Jet 4.0',
         'Microsoft.Jet.OLEDB.4.0',
         'c:\data\MySheet.xls', 
          NULL,
         'Excel 5.0;'
    
    GO
    
  • Um auf Daten zugreifen zu können, die sich in einer Excel-Kalkulationstabelle befinden, verknüpfen Sie einen Zellenbereich mit einem Namen. Auf einen benannten Bereich kann zugegriffen werden, indem der Name des Bereichs als Tabellenname verwendet wird. Die folgende Abfrage kann für den Zugriff auf einen benannten Bereich namens SalesData mithilfe des im vorhergehenden Beispiel eingerichteten Verbindungsservers verwendet werden.

    SELECT *
    FROM EXCEL...SalesData
    GO
    

Wenn Sie eine Zeile in einen benannten Zellenbereich einfügen, wird die Zeile hinter der letzten Zeile, die zum benannten Zellenbereich gehört, hinzugefügt. Wenn Sie die Zeile rA unter der Spaltenüberschrift einfügen möchten, sollten Sie daher die Zellen der Spaltenüberschriften mit einem Namen verknüpfen und diesen Namen als Tabellennamen verwenden. Der Zellenbereich wird automatisch vergrößert, wenn Zeilen eingefügt werden.

So richten Sie einen Verbindungsserver für eine formatierte Textdatei ein

Zum Zugreifen auf und Abfragen von Textdateien kann der Microsoft OLE DB-Anbieter für Jet verwendet werden.

  • Um einen Verbindungsserver für den direkten Zugriff auf Textdateien zu erstellen, ohne die Dateien als Tabellen in einer MDB-Datei von Access zu verknüpfen, führen Sie sp_addlinkedserver wie im folgenden Beispiel gezeigt aus.

    Der Anbieter ist Microsoft.Jet.OLEDB.4.0, die Anbieterzeichenfolge lautet 'Text'. Die Datenquelle ist der vollständige Pfadname des Verzeichnisses, in dem sich die Textdateien befinden. Die Datei Schema.ini muss im gleichen Verzeichnis wie die Textdateien vorhanden sein. Eine Datei Schema.ini beschreibt die Struktur der Textdatei. Weitere Informationen zum Erstellen einer schema.ini-Datei finden Sie in der Dokumentation zum Jet-Datenbankmodul.

    --Create a linked server.
    EXEC sp_addlinkedserver txtsrv, 'Jet 4.0', 
       'Microsoft.Jet.OLEDB.4.0',
       'c:\data\distqry',
       NULL,
       'Text'
    GO
    
    --Set up login mappings.
    EXEC sp_addlinkedsrvlogin txtsrv, FALSE, NULL, Admin, NULL
    GO
    
    --List the tables in the linked server.
    EXEC sp_tables_ex txtsrv
    GO
    
    --Query one of the tables: file1#txt
    --by using a four-part name. 
    SELECT * 
    FROM txtsrv...[file1#txt]