Vorgehensweise: Auflisten von OLE DB-Datenquellen (OLE DB)

Um die Datenquellen aufzulisten, die für den SQLOLEDB-Enumerator sichtbar sind, ruft der Consumer die ISourcesRowset::GetSourcesRowset-Methode auf. Diese Methode gibt ein Rowset der Informationen zu den gerade sichtbaren Datenquellen zurück.

Je nach verwendeter Netzwerkbibliothek wird in der entsprechenden Domäne nach den Datenquellen gesucht. Für Named Pipes ist dies die Domäne, an der der Client angemeldet ist. Für AppleTalk ist dies die Standardzone. Für SPX/IPX ist dies die Liste von SQL Server-Installationen, die in der Bindery gefunden wird. Für Banyan VINES sind dies die auf dem lokalen Netzwerk gefundenen SQL Server-Installationen. Multiprotokoll und TCP/IP-Sockets werden nicht unterstützt.

Wenn der Server ein- oder ausgeschaltet wird, kann es einige Minuten dauern, die Informationen in diesen Domänen zu aktualisieren.

Den vollständigen Beispielcode finden Sie in der Datei ListDataSourcesWithEnumerator.cpp. Sie können von der Website mit SQL Server Downloads auf MSDN ein Archiv herunterladen, das das Beispiel enthält.

Dieses Beispiel wurde mit Microsoft Visual C++ 2005 entwickelt.

SicherheitshinweisSicherheitshinweis

Verwenden Sie nach Möglichkeit die Windows-Authentifizierung. Wenn die Windows-Authentifizierung nicht verfügbar ist, fordern Sie Benutzer auf, ihre Anmeldeinformationen zur Laufzeit einzugeben. Die Anmeldeinformationen sollten nicht in einer Datei gespeichert werden. Wenn Sie die Anmeldeinformationen permanent speichern müssen, verschlüsseln Sie sie mit der Win32 Crypto-API.

So listen Sie OLE DB-Datenquellen auf

  1. Rufen Sie das Quellrowset ab, indem Sie ISourceRowset::GetSourcesRowset aufrufen.

  2. Suchen Sie die Beschreibung des Enumeratorenrowsets, indem Sie GetColumnInfo::IColumnInfo aufrufen.

  3. Erstellen Sie die Bindungsstrukturen aus den Spalteninformationen.

  4. Erstellen Sie den Rowsetaccessor durch Aufrufen von IAccessor::CreateAccessor.

  5. Rufen Sie die Zeilen ab, indem Sie IRowset::GetNextRows aufrufen.

  6. Rufen Sie Daten aus der Kopie der Zeile im Rowset ab, indem Sie IRowset::GetData aufrufen und verarbeiten.