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.
So erstellen Sie einen Verbindungsserver für den Zugriff auf eine Access-Datenbank:
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'
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
Verwenden Sie sp_addlinkedsrvlogin nach dem Konfigurieren des Registrierungseintrags, um Anmeldenamenzuordnungen zwischen lokalen Anmeldenamen und Access-Anmeldenamen zu erstellen:
sp_addlinkedsrvlogin 'Nwind', false, 'Joe', 'AccessUser', '034fhd99dl'
Sicherheitshinweis |
---|
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]
Siehe auch