Wenn der OLE DB-Provider installiert wird, muss die Windows-Registrierung geändert werden. Hierzu wird gewöhnlich die in den OLE DB-Provider integrierte Selbstregistrierungsfunktion verwendet. Sie können z.B. das Windows-Tool regsvr32 verwenden. Eine Standardgruppe von Registrierungseinträgen wird vom Provider erstellt.
In einer typischen Verbindungszeichenfolge ist eine der Komponenten das Providerattribut. Um anzuzeigen, dass der SQL Anywhere OLE DB-Provider verwendet werden soll, geben Sie den Namen des Providers an. Im Folgenden sehen Sie ein Visual Basic-Beispiel:
connectString = "Provider=SAOLEDB;DSN=SQL Anywhere 16 Demo" |
In ADO bzw. OLE DB gibt es zahlreiche weitere Wege, den Provider namentlich zu referenzieren. Im folgenden C++-Beispiel wird neben dem Providernamen auch die zu verwendende Version angegeben.
hr = db.Open(_T("SAOLEDB.16"), &dbinit); |
Der Providername wird in der Registrierung gesucht. Wenn Sie die Registrierung auf Ihrem Computersystem untersuchen, finden Sie den Eintrag in HKEY_CLASSES_ROOT für SAOLEDB.
[HKEY_CLASSES_ROOT\SAOLEDB] @="SQL Anywhere OLE DB Provider" |
Er hat zwei Sub-Schlüssel, die einen Klassenbezeichner (ClsId) und die aktuelle Version (CurVer) des Providers enthalten. Hier sehen Sie ein Beispiel.
[HKEY_CLASSES_ROOT\SAOLEDB\Clsid] @="{41dfe9f7-db91-11d2-8c43-006008d26a6f}" [HKEY_CLASSES_ROOT\SAOLEDB\CurVer] @="SAOLEDB.16" |
Es sind mehrere ähnliche Einträge vorhanden. Sie werden verwendet, um eine spezifische Instanz eines OLE DB-Providers zu identifizieren. Wenn Sie Clsid in der Registrierung unter HKEY_CLASSES_ROOT\CLSID suchen und die Sub-Schlüssel überprüfen, stellen Sie fest, dass einer der Einträge den Speicherort der Provider-DLL angibt.
[HKEY_CLASSES_ROOT\CLSID\ {41dfe9f3-db91-11d2-8c43-006008d26a6f}\ InprocServer32] @="c:\\sa16\\bin64\\dboledb16.dll" "ThreadingModel"="Both" |
Hier liegt das Problem vor, dass die Struktur sehr monolithisch ist. Würden Sie die SQL Anywhere-Software von Ihrem System deinstallieren, würden die Registrierungseinträge für den OLE DB-Provider entfernt und die Provider-DLL würde von der Festplatte entfernt. Die Anwendungen, die den Provider benötigen, könnten nicht mehr ausgeführt werden.
Wenn Anwendungen verschiedener Hersteller denselben OLE DB-Provider verwenden, würde jede Installation des Providers die gemeinsamen Registrierungseinstellungen überschreiben. Die Version des Providers, den Sie für Ihre Anwendung vorgesehen haben, würde in diesem Fall von einer neueren (oder älteren!) Version des Providers ersetzt.
Dies könnte zu einer unerwünschten Instabilität führen. Um dieses Problem zu vermeiden, kann der SQL Anywhere OLE DB-Provider angepasst werden.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |