安装 OLE DB 提供程序时,必须修改 Windows 注册表。通常,使用内置于 OLE DB 提供程序的自行注册功能进行修改。例如,可以使用 Windows regsvr32 工具来进行此操作。注册表条目的标准集由提供程序创建。
在典型的连接字符串中,提供程序的属性是组成部分之一。要指示将使用的 SQL Anywhere OLE DB 提供程序,需要指定提供程序的名称。下面是 Visual Basic 示例:
connectString = "Provider=SAOLEDB;DSN=SQL Anywhere 16 Demo" |
对于 ADO 和/或 OLE DB,有许多通过名称引用提供程序的其它方法。下面是一个 C++ 示例,其中不仅指定了提供程序名称而且还指定了要使用的版本。
hr = db.Open(_T("SAOLEDB.16"), &dbinit); |
提供程序名称在注册表中查找。如果查看您的计算机系统上的注册表,您会在 HKEY_CLASSES_ROOT 中会找到 SAOLEDB 条目。
[HKEY_CLASSES_ROOT\SAOLEDB] @="SQL Anywhere OLE DB Provider" |
此条目有两个子项,分别包含此提供程序的类标识符 (Clsid) 以及当前版本 (CurVer)。下面是一个示例:
[HKEY_CLASSES_ROOT\SAOLEDB\Clsid] @="{41dfe9f7-db91-11d2-8c43-006008d26a6f}" [HKEY_CLASSES_ROOT\SAOLEDB\CurVer] @="SAOLEDB.16" |
还有若干更类似的条目。它们用于标识 OLE DB 提供程序的特定实例。如果在注册表的 HKEY_CLASSES_ROOT\CLSID 下查找 Clsid 并且查看子项,您将看到其中一个条目标识了提供程序 DLL 的位置。
[HKEY_CLASSES_ROOT\CLSID\ {41dfe9f3-db91-11d2-8c43-006008d26a6f}\ InprocServer32] @="c:\\sa16\\bin64\\dboledb16.dll" "ThreadingModel"="Both" |
此处问题是结构非常单一。如果将 SQL Anywhere 软件从您的系统卸载,OLE DB 提供程序注册表条目将从注册表删除,随后提供程序 DLL 将从硬盘驱动器删除。任何依赖提供程序的应用程序将不再工作。
同样,如果来自不同供应商的应用程序都使用相同的 OLE DB 提供程序,则每次安装相同的提供程序时都将覆盖公用注册表设置。您希望应用程序使用的提供程序版本将由另一较新(或较旧!)的提供程序版本代替。
这种情况所引发的不稳定性是我们不希望发生的。为解决此问题,可以自定义 SQL Anywhere OLE DB 提供程序。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |