Erstellen Sie einen eindeutigen OLE DB-Provider, den Sie in das Deployment Ihrer Anwendung einbeziehen können, indem Sie eine eindeutige Gruppe von GUIDs erstellen, den Provider benennen und eindeutige DLL-Namen wählen.
Voraussetzungen
Es gibt keine Voraussetzungen für diese Aufgabe.
Kopieren Sie den folgenden Code in einen Texteditor und speichern Sie ihn als .reg-Datei:
REGEDIT4 ; Special registry entries for a private OLE DB provider. [HKEY_CLASSES_ROOT\myoledb16] @="Custom SQL Anywhere OLE DB Provider 16.0" [HKEY_CLASSES_ROOT\myoledb16\Clsid] @="{GUID1}" ; Data1 of the following GUID must be 3 greater than the ; previous, for example, 41dfe9f3 + 3 => 41dfe9ee. [HKEY_CLASSES_ROOT\myoledba16] @="Custom SQL Anywhere OLE DB Provider 16.0" [HKEY_CLASSES_ROOT\myoledba16\Clsid] @="{GUID4}" ; Current version (or version independent prog ID) ; entries (what you get when you have "SQLAny" ; instead of "SQLAny.16") [HKEY_CLASSES_ROOT\SQLAny] @="SQL Anywhere OLE DB Provider" [HKEY_CLASSES_ROOT\SQLAny\Clsid] @="{GUID1}" [HKEY_CLASSES_ROOT\SQLAny\CurVer] @="SQLAny.16" [HKEY_CLASSES_ROOT\SQLAnyEnum] @="SQL Anywhere OLE DB Provider Enumerator" [HKEY_CLASSES_ROOT\SQLAnyEnum\Clsid] @="{GUID2}" [HKEY_CLASSES_ROOT\SQLAnyEnum\CurVer] @="SQLAnyEnum.16" [HKEY_CLASSES_ROOT\SQLAnyErrorLookup] @="SQL Anywhere OLE DB Provider Extended Error Support" [HKEY_CLASSES_ROOT\SQLAnyErrorLookup\Clsid] @="{GUID3}" [HKEY_CLASSES_ROOT\SQLAnyErrorLookup\CurVer] @="SQLAnyErrorLookup.16" [HKEY_CLASSES_ROOT\SQLAnyA] @="SQL Anywhere OLE DB Provider Assist" [HKEY_CLASSES_ROOT\SQLAnyA\Clsid] @="{GUID4}" [HKEY_CLASSES_ROOT\SQLAnyA\CurVer] @="SQLAnyA.16" ; Standard entries (Provider=SQLAny.16) [HKEY_CLASSES_ROOT\SQLAny.16] @="Sybase SQL Anywhere OLE DB Provider 16.0" [HKEY_CLASSES_ROOT\SQLAny.16\Clsid] @="{GUID1}" [HKEY_CLASSES_ROOT\SQLAnyEnum.16] @="Sybase SQL Anywhere OLE DB Provider Enumerator 16.0" [HKEY_CLASSES_ROOT\SQLAnyEnum.16\Clsid] @="{GUID2}" [HKEY_CLASSES_ROOT\SQLAnyErrorLookup.16] @="Sybase SQL Anywhere OLE DB Provider Extended Error Support 16.0" [HKEY_CLASSES_ROOT\SQLAnyErrorLookup.16\Clsid] @="{GUID3}" [HKEY_CLASSES_ROOT\SQLAnyA.16] @="Sybase SQL Anywhere OLE DB Provider Assist 16.0" [HKEY_CLASSES_ROOT\SQLAnyA.16\Clsid] @="{GUID4}" ; SQLAny (Provider=SQLAny.16) [HKEY_CLASSES_ROOT\CLSID\{GUID1}] @="SQLAny.16" "OLEDB_SERVICES"=dword:ffffffff [HKEY_CLASSES_ROOT\CLSID\{GUID1}\ExtendedErrors] @="Extended Error Service" [HKEY_CLASSES_ROOT\CLSID\{GUID1}\ExtendedErrors\{GUID3}] @="Sybase SQL Anywhere OLE DB Provider Error Lookup" [HKEY_CLASSES_ROOT\CLSID\{GUID1}\InprocServer32] @="d:\\mypath\\bin32\\myoledb16.dll" "ThreadingModel"="Both" [HKEY_CLASSES_ROOT\CLSID\{GUID1}\OLE DB Provider] @="Sybase SQL Anywhere OLE DB Provider 16.0" [HKEY_CLASSES_ROOT\CLSID\{GUID1}\ProgID] @="SQLAny.16" [HKEY_CLASSES_ROOT\CLSID\{GUID1}\VersionIndependentProgID] @="SQLAny" ; SQLAnyErrorLookup [HKEY_CLASSES_ROOT\CLSID\{GUID3}] @="Sybase SQL Anywhere OLE DB Provider Error Lookup 16.0" @="SQLAnyErrorLookup.16" [HKEY_CLASSES_ROOT\CLSID\{GUID3}\InprocServer32] @="d:\\mypath\\bin32\\myoledb16.dll" "ThreadingModel"="Both" [HKEY_CLASSES_ROOT\CLSID\{GUID3}\ProgID] @="SQLAnyErrorLookup.16" [HKEY_CLASSES_ROOT\CLSID\{GUID3}\VersionIndependentProgID] @="SQLAnyErrorLookup" ; SQLAnyEnum [HKEY_CLASSES_ROOT\CLSID\{GUID2}] @="SQLAnyEnum.16" [HKEY_CLASSES_ROOT\CLSID\{GUID2}\InprocServer32] @="d:\\mypath\\bin32\\myoledb16.dll" "ThreadingModel"="Both" [HKEY_CLASSES_ROOT\CLSID\{GUID2}\OLE DB Enumerator] @="Sybase SQL Anywhere OLE DB Provider Enumerator" [HKEY_CLASSES_ROOT\CLSID\{GUID2}\ProgID] @="SQLAnyEnum.16" [HKEY_CLASSES_ROOT\CLSID\{GUID2}\VersionIndependentProgID] @="SQLAnyEnum" ; SQLAnyA [HKEY_CLASSES_ROOT\CLSID\{GUID4}] @="SQLAnyA.16" [HKEY_CLASSES_ROOT\CLSID\{GUID4}\InprocServer32] @="d:\\mypath\\bin32\\myoledba16.dll" "ThreadingModel"="Both" [HKEY_CLASSES_ROOT\CLSID\{GUID4}\ProgID] @="SQLAnyA.16" [HKEY_CLASSES_ROOT\CLSID\{GUID4}\VersionIndependentProgID] @="SQLAnyA" |
Bei Namen von Registrierungswerten wird die Groß- und Kleinschreibung berücksichtigt.
Verwenden Sie das Microsoft Visual Studio-Dienstprogramm uuidgen, um 4 sequenzielle UUIDs (GUIDs) zu erstellen.
Führen Sie beispielsweise den folgenden Befehl an einer Eingabeaufforderung aus:
uuidgen -n4 -s -x >oledbs.txt |
Die 4 UUIDs bzw. GUIDs werden in der folgenden Sequenz zugewiesen:
Die Provider-Klassen-ID (unten GUID1)
Die Enum-Klassen-ID (unten GUID2)
Die ErrorLookup-Klassen-ID (unten GUID3)
Die Provider Assist-Klassen-ID (unten GUID4). Diese letzte GUID wird in Windows Mobile-Deployments nicht verwendet.
Es ist wichtig, dass die IDs sequenziell zugeordnet werden (was die Option -x in der Befehlszeile bewirkt).
Jede GUID sollte ähnlich wie die folgende angezeigt werden:
Name | GUID |
---|---|
GUID1 | 41dfe9f3-db92-11d2-8c43-006008d26a6f |
GUID2 | 41dfe9f4-db92-11d2-8c43-006008d26a6f |
GUID3 | 41dfe9f5-db92-11d2-8c43-006008d26a6f |
GUID4 | 41dfe9f6-db92-11d2-8c43-006008d26a6f |
Der erste Teil der GUID (z.B. 41dfe9f3), der inkrementiert wird.
Ändern Sie mit der Suchen/Ersetzen-Funktion eines Editors die Elemente GUID1, GUID2, GUID3 und GUID4 im Text in die entsprechende GUID. (Ersetzen Sie beispielsweise GUID1 durch 41dfe9f3-db92-11d2-8c43-006008d26a6f, wenn dies die GUID ist, die uuidgen für Sie generiert hat.)
Wählen Sie den Providernamen, den Sie in Ihrer Anwendung in Verbindungszeichenfolgen usw. verwenden (z.B. Provider=SQLAny).
Die folgenden Namen sind für SQL Anywhere reserviert und dürfen nicht als Providernamen verwendet werden:
Version 10 oder höher | Version 9 oder früher |
---|---|
SAOLEDB | ASAProv |
SAErrorLookup | ASAErrorLookup |
SAEnum | ASAEnum |
SAOLEDBA | ASAProvA |
Ändern Sie mit der Suchen/Ersetzen-Funktion eines Editors alle Textstellen der Zeichenfolge "SQLAny" in den von Ihnen gewählten Providernamen. Dies umfasst auch alle Textstellen, bei denen "SQLAny" ein Teil einer längeren Zeichenfolge ist (z.B. SQLAnyEnum).
Angenommen Sie wählen den Providernamen "Acme". Die Namen, die im Registrierungseintrag HKEY_CLASSES_ROOT angezeigt werden, sind in der folgenden Tabelle zusammen mit den SQL Anywhere-Namen (zum Vergleich) aufgelistet.
SQL Anywhere-Provider | Ihr benutzerdefinierter Provider |
---|---|
SAOLEDB | Acme |
SAErrorLookup | AcmeErrorLookup |
SAEnum | AcmeEnum |
SAOLEDBA | AcmeA |
Erstellen Sie Kopien der SQL Anywhere-Provider-DLLs (dboledb16.dll und dboledba16.dll) unter anderen Namen.
copy dboledb16.dll myoledb16.dll copy dboledba16.dll myoledba16.dll |
Die Datei dboledba16.dll gibt es nicht für Windows Mobile.
Ein spezieller Registrierungsschlüssel durch das auf dem gewählten DLL-Namen basierende Skript erstellt. Der Name muss sich von den Namen der Standard-DLLs (z.B. dboledb16.dll oder dboledba16.dll) unterscheiden. Wenn Sie die Provider-DLL myoledb16 nennen, sucht der Provider in HKEY_CLASSES_ROOT einen Registrierungseintrag mit demselben Namen. Dies gilt auch für die Provider-Schema-Assist-DLL. Wenn Sie die DLL myoledba16 nennen, sucht der Provider in HKEY_CLASSES_ROOT einen Registrierungseintrag mit demselben Namen. Der gewählte Name muss eindeutig sein und darf von keinem anderen Benutzer verwendet werden. Hier einige Beispiele.
Gewählte DLL-Namen | Entsprechung HKEY_CLASSES_ROOT\Name |
---|---|
myoledb16.dll | HKEY_CLASSES_ROOT\myoledb16 |
myoledba16.dll | HKEY_CLASSES_ROOT\myoledba16 |
acmeOledb.dll | HKEY_CLASSES_ROOT\acmeOledb |
acmeOledba.dll | HKEY_CLASSES_ROOT\acmeOledba |
SAcustom.dll | HKEY_CLASSES_ROOT\SAcustom |
SAcustomA.dll | HKEY_CLASSES_ROOT\SAcustomA |
Ändern Sie mit der Suchen/Ersetzen-Funktion eines Editors alle Vorkommen der Zeichenfolgen myoledb16 und myoledba16 im Registrierungsskript in die beiden von Ihnen gewählten DLL-Namen.
Ändern Sie mit der Suchen/Ersetzen-Funktion eines Editors alle Textstellen der Zeichenfolge d:\\mypath\\bin32\\ im Registrierungsskript in den Speicherort, an dem die DLLs installiert wurden. Verwenden Sie zwei Schrägstriche, wenn Sie einen einzelnen Schrägstrich angeben wollen. Dieser Schritt muss zum Zeitpunkt der Anwendungsinstallation ausgeführt werden.
Speichern Sie das Registrierungsskript auf der Festplatte und führen Sie es aus.
Probieren Sie den neuen Provider aus. Ändern Sie Ihre ADO/OLE DB-Anwendung so, dass sie den neuen Providernamen verwendet.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |