Microsoft数据访问组件的再发布

类别:VC语言 点击:0 评论:0 推荐:
Microsoft数据访问组件的再发布

作者: Don Willits
日期: 2000年06月27日

概要:解释了关于再发布MDAC组件的问题

主要讨论:

定义Microsoft 通用数据访问策略、数据访问组件和数据访问。 再发布MDAC (包括依赖关系和文件列表)。 与各种开发环境一起再发布。 简介

Microsoft数据访问组件(MDAC)现在正处于一个称为“DLL地狱”的边缘。这有两个原因。首先,大量的应用程序需要再发布一个或多个MDAC组件,其中包括开放数据库连接(ODBC)、OLE DB、Microsoft ActiveX Data Objects (ADO)、和远程数据服务(Remote Data Service ,RDS)。其次,MDAC组件与其它可再发布的系统组件之间有着直接或间接的依赖关系。本文是关于最近版本的MDAC组件的再发布过程中可能遇到的问题的一个综合性的概述。文中枚举了在安装或再发布MDAC组件时必须注意的问题。

就MDAC的再发布问题,已经有一些Microsoft知识库的文章。本文对这些文章只提供引用和上下文以帮助读者决定是否需要进一步了解细节,而不是重复它们的内容。

Microsoft通用数据访问策略,Microsoft数据访问组件和数据访问软件开发工具包

通用数据访问是微软公司为了对一个从桌面到企业系统的组织里的所有类型的信息(包括关系型的和非关系型的数据)提供高性能的访问而设计的数据访问策略。它通过四个关键技术来完成这一点:ODBC,OLE DB,ADO,和RDS。最近,联机分析处理(OLAP)和多维扩展又分别加入到了OLE DB (OLE DB for OLAP)和ADO(ADO MD)中。

ODBC是一个通过SQL查询语法来在各个不同的数据源之间操纵关系型数据的国际标准。因为它是一个国际标准,所以通过使用各种Microsoft或第三方提供的ODBC驱动程序,你可以用它操纵许多种关系型数据源。ODBC最主要的缺点是它仅适用于基于SQL语法的关系型数据。

MDAC 1.5

到了MDAC 1.5,MDAC组件的安装和再发布就比较协调了。MDAC 1.5 包括ODBC 3.5、OLE DB 1.5、ADO 1.5和RDS 1.5。RDS是高级数据连接器(Advanced Data Connector)的后继者,但是改换了名称,以表明它已经越来越成为ADO的一个特性。到MDAC 2.0时,关于RDS的文档就和ADO放在同一路径下。

再次地, MDAC 1.5 的各个部分包含在各种SDK和产品中。MDAC 1.5在Web上作为一个独立安装程序发布,同时作为Windows NT 4.0 Option Pack的一部分发布。MDAC 1.5的一些组件包含在Internet Explorer 4.x中,特别是RDS客户端组件。Windows 98也包含MDAC 1.5 组件,同时包含MDAC 1.5组件的还有OLE DB 1.5 SDK和ODBC 3.5 SDK。

MDAC 1.5包含Microsoft Access/Microsoft Jet、SQL Server 的ODBC 驱动程序,以及Oracle 的ODBC驱动程序的重大更新版本。此外,可以从微软公司得到两个另外的OLE DB 提供商(虽然它们不包含在MDAC Stack中)。Microsoft Index Server的OLE DB提供商也可以单独地从MDAC Stack得到。这些提供商都通过ODBC不支持的方式加强了OLE DB的功能,特别是利用非SQL查询语法来通过OLE DB数据提供商从一个非关系型数据库中取回数据。

MDAC 1.5 曾经有五个(或更多)单独的版本,其中每个版本都有不同版本的ODBC 3.5、OLE DB 1.5、ADO 1.5和RDS 1.5组件以及 ODBC 驱动程序和OLE DB 提供商。除了文件版本和对安装程序修订了一些Bug外,最开始的两个版本没有什么显著差别。下面就是MDAC 1.5版本的概要情况:

Internet Explorer 4.0:与Internet Explorer 4.0和Internet Client SDK 4.0一起分发。与两个产品的安装集成在一起。 MDAC 1.5PDC):更新了与Internet Exporer一起分发的组件。仅从1997 Professional Developers Conference CD的MDAC单独安装程序中可以得到。 MDAC 1.5a:1997年10月6日到1997年11月20日期间可以从网上下载的单独安装的MDAC安装程序中得到。 MDAC 1.5b:可在Windows NT 4.0 Option Pack中得到,MDAC的独立安装实际上与Option Pack集成在一起(而不是作为一个单独的安装程序)。 MDAC 1.5c:1997年11月20日后可以从网上下载,有两种版本。一是MDAC的独立安装版本,另一个是小一些的MDAC再发布版本,它只安装运行期间组件。MDAC 1.5c 与包含在OLE DB 1.5和ODBC 3.5 SDK中的位测试匹配。在1.5b 和 1.5c版本之间修订的bug有所增加,但是都很重要,主要是修订ADO的线程问题和ODBC的连接池问题。 Windows 98 和/或 Internet Explorer 4.01 Service Pack 1:MDAC的最后一个1.5d版本可以在Windows 98和Internet Explorer 4.01 Service Pack 1中找到。这两个产品包含的MDAC组件都不完整,但是两者都包含了唯一完整的最新ADO和RDS 1.5d组件。Windows 98 分发了一个MDAC前的Access ODBC Driver 子集,一个MDAC 1.5a OLE DB Provider for ODBC子集,以及ADO 1.5d 组件和RDS 1.5d组件。Internet Explorer 4.01 SP1 分发了 ODBC 3.0 (MDAC 1.0), MDAC 1.5前的 Access驱动程序,一个MDAC 1.0 SQL Server ODBC Driver文件,一个MDAC 1.5a OLE DB Provider for ODBC子集,以及最新的ADO 和RDS 1.5d 组件。要从Windows 98 或 Internet Explorer 4.01 SP1得到一个最新1.5组件的最新全集,你必需首先安装MDAC 1.5c,它将过时的ODBC组件和OLE DB组件更新。由于与这两个产品一起分发的MDAC 1.5d版本与MDAC 2.0在时间上非常接近,所以MDAC 产品小组不再发布一个独立或再发布版本的MDAC安装程序。1.5d版本的重要改动是移去了RDS的依赖关系,使得在脚本运行和初始化时基于DCOM的事务对象更加安全。

MDAC 1.5的再发布和依赖关系现在变得既简单又复杂。使用MDAC 1.5的独立安装程序可以很轻易地安装整个MDAC 1.5,尽管安装程序本身不是独立于操作系统的: MDAC在Windows 95下的安装程序不能在Windows NT下运行,反之亦然。MDAC 1.5 还提供了一组丰富的特性来从命令行安装特定的组件或驱动程序/提供商。MDAC 1.5的再发布版本提供了一个操作系统无关的安装程序,在Windows NT 3.51 和4.0以及 Windows 95上运行得一样好。欲了解使用MDAC 1.5再发布的详细信息,请参看知识库文章 Q181126 [INFO: Redistribution for MDAC 1.5 Components Available(MADC可用组件的再发布)]。

与MDAC的独立安装版本相比, MDAC 的再发布版本没有那么多开发者想要的设置选项。但是,MDAC的独立安装版本并不总是提供开发者想要的东西:即使在通过命令行开关禁止它去检测时,MDAC 的独立安装程序都可以检测到安装一个特定组件需要些什么。有些理由可以解释为什么不用MDAC的独立安装程序来在一个再发布场景下安装MAAC组件。详细信息请参阅知识库文章Q177913 [Use the MDAC Stand-alone Setup EXE in Unattended Mode(使用无人照管模式的MDAC安装程序)]。

你应该使用MDAC再发布版本来在发布MDAC1.5。虽然MDAC独立版本似乎在安装特定组件时提供更多选项,但是它是依赖于操作系统的,这样就增加了你的再发布机制的大小和复杂性。也就是说,你不得不分发两个6MB的文件,一个用于Windows NT ,一个用于Windows 95。此外,你的再发布机制必需能够判断当前的操作系统类型,这样你才能正确地使用适当的MDAC独立版本。

MDAC独立安装程序实际上包含了半个SDK,它们为MDAC 1.5提供SDK组件。然而,另外两个SDK——ODBC 3.5 SDK (发布于1998年春天)和OLE DB 1.5 SDK (发布于1997秋天)—是MDAC 安装的补充。如果你运行所有三个安装程序,你将得到一个完整的范例、文档、头文件和库文件集合。这就是为什么创建Data Access SDK的原因:开发者仅仅需要执行一个安装程序就可以获得MDAC 2.0的所有SDK。

MDAC 1.5对一个OLE Automation 补丁有依赖关系,特别是在老版本的Windows 95上运行时。(欲了解如何获得这个补丁的信息,请参看知识库文章Q164529 [FILE: Updated Automation System Files])。进一步地,MDAC 1.5独立版本对一个从Internet Explorer 3.02(或后来的版本)中或单独发布补丁中得到的更新Comctl32.dll文件有依赖关系。(欲了解如何获得这个Comctl32.dll 补丁,请参看知识库文章Q165487 [Incorrect or Garbled Text on Tab Labels in Properties])。如果没有这个更新Comctl32.dll文件,MDAC独立版本的安装对话框的宽度将会是显示器宽度的20倍(欲了解此信息,请参看知识库文章Q183092 [PRB: MDAC Stand-alone Setup Dialog Overly Large on Windows 95])。如果你把对话框拖到最左边然后点击Next,则安装程序将会停止。MDAC的再发布版本则没有这个问题。即使没有这个DLL文件,安装也能正常运行。

在发行MDAC 1.5是并不知道这些依赖关系。通用数据访问Web页错误地说,你必须在安装MDAC 1.5前安装Internet Explorer 4.0。实际上,Internet Explorer 4.0碰巧安装了Automation补丁和Comctl32.dll补丁;但是你可以用前文提高的文章介绍的方法分别地、独立地获得这两个补丁。你不需要Internet Explorer 4.0来开发和再发布基于MDAC 1.5的应用程序。

唯一实际与Internet Explorer 4.0有依赖关系的是RDS,特别是当你的RDS客户端应用程序是基于Web的程序时。否则的话,你就可以在不安装Internet Explorer 4.0的机器上开发你的MDAC 1.5 应用程序了。再发布一个RDS客户端应用程序需要一套必要的DLL,而不管你的客户端是否基于Visual Basic。欲了解详细信息,请参看知识库文章Q176874 [HOWTO: Distributing RDS Client with Visual Basic Setup Wizard]。

到MDAC 1.5时,在ODBC 3.5和OLE DB Provider for ODBC Drivers之间的依赖关系更为明显。OLE DB Provider for ODBC Version 1.1根据ODBC 3.0的特定Unicode规范编写。由于这些规范到ODBC 3.5时发生了变化,所以在再发布一个基于ODBC 3.5的应用程序时,你必需使用OLE DB Provider for ODBC version 1.5。否则,你的软件的安装就会有破坏顾客机器上现存的基于OLE DB和ADO的应用程序的危险。这个依赖关系在知识库文章Q178852 [INFO: OLE DB Provider for ODBC Now an ODBC 3.5 Core Component] 和Q178843 [FILE: Required Files to Redistribute ODBC Version 3.5] 中有记载。

在开发者中常常造成混乱的一个问题是再发布一个RDS客户端程序的最小需求。如果你的RDS 1.5实在是基于Web的,那么是的,你需要Internet Explorer 4.0(如果你使你的Web客户端使用RDS 1.1,则你可以使用Internet Explorer 3.02)。如果你的客户端程序不是基于Web的,那么你无须安装Internet Explorer。欲了解安装RDS客户端组件的最低需求,请参看知识库文章Q176874 [HOWTO: Distributing RDS Client with Visual Basic Setup Wizard]。(文章是针对在Visual Basic 安装向导环境的,但是这个需求对其它情形下的同样适用)。

与所有MDAC 1.5的五个版本一起分发的Msadc11.cab文件没有适当地利用文件的版本信息,特别是它不能正确地更新和覆盖一个安装了ADC 1.0组件的系统。因此,有旧的RDS客户端组件的客户端不会从Msadc11.cab文件下载更新的组件。ClsidView范例阐述了这个问题。但是,产品小组最近发行了一个更新后的Msadc11.cab文件,它纠正了MDAC 1.5 和 MDAC 2.0里的这些错误(请参看See 知识库文章Q185963 [FIX:Updated RDS Msadc11.cab for Internet Explorer Download PRB],上面有关于此问题的讨论和如何获得更新后的Msadc11.cab文件)。对RDS 1.5组件没有RDS .cab文件。安装它们的唯一方法是用Internet Explorer 4.01、MDAC 独立安装程序或MDAC再发布来安装。

MDAC 1.5 再发布非常有用,但有时安装MDAC 1.5组件的.cab文件更好用。要了解围绕MDAC 1.5 再发布的.cab文件的创建问题,请参看知识库文章Q185622 (HOWTO: Adding the MDAC Redistribution Setup to CAB Files)。

许多开发者想控制再发布的大小。MDAC 1.5再发布组件的大小不在于ADO、RDS、或OLE DB组件,而在于ODBC或不同的ODBC驱动程序。Access驱动程序本身的大小为约2 MB。这就是为什么MDAC再发布有两种方式,Mdacrdst.exe 和 Mdacfull.exe。Mdacrdst (1.7 MB)包含ODBC 3.5、 OLE DB Provider for ODBC Drivers、ADO 1.5、RDS 1.5和SQL Server ODBC Driver。Mdacfull (nearly 4 MB)有包含在Mdacrdst中的所有组件,此外加上Oracle和Microsoft Access/Microsoft Jet ODBC驱动程序。

Windows 98 和Internet Explorer 4.01 确实包含MDAC 1.5d的组件。但是,它们包含的ODBC和OLE DB版本是不完全的,并且比那些MDAC 1.5c中的版本要老。为了保证你得到最新的版本,请应用Windows 98 或Internet Explorer 4.01 Service Pack 1,然后安装MDAC 1.5c。对MDAC 1.5d的改动仅仅是加入了新的特性;它们仅仅在你使用远程数据服务和用DCOM协议部署它时是有用的。

ODBC 3.5 在Windows NT 3.51、4.0 和 Windows 95上测试并为这些平台所支持。OLE DB 1.5、ADO 1.5和RDS 1.5 在Windows NT 4.0和Windows 95上测试并支持。然而,再次地,依赖关系使它们不能在Windows NT 3.51上测试和支持。

表2. MDAC 1.5组件的文件路径和分布

SYS\…<驱动器名>:\<Windir>\<Systemdir>

OLE\…<驱动器名>:\Program Files\Common Files\System\Oledb

ADO\…<驱动器名>:\Program Files\Common Files\System\Ado

RDS\…<驱动器名>:\Program Files\Common Files\System\Msadc

ODBC 驱动程序管理器

路径和文件名


IE 4.0


MDAC 1.5


MDAC 1.5a


MDAC 1.5b


MDAC 1.5c

IE 4.01
SP1

Windows 98

SYS\Ds16gt.dll

 

3.50.32.14

3.50.33.8

3.50.33.30

3.50.36.9

3.0.23.1

 

SYS\Ds32gt.dll

3.50.32.14

3.50.33.8

3.50.33.30

3.50.36.9

3.0.23.1

SYS\Mtxdm.dll

1996.10.23.90

1997.6.394.0

1997.6.394.0

1997.6.394.0

 

SYS\Odbc16gt.dll

3.50.32.14

3.50.33.8

3.50.33.30

3.50.36.9

3.0.23.1

SYS\Odbc32.dll

3.50.32.14

3.50.33.8

3.50.33.30

3.50.36.9

3.0.23.1

SYS\Odbc32gt.dll

3.50.32.14

3.50.33.8

3.50.33.30

3.50.36.9

3.0.23.1

SYS\Odbcad32.exe

3.50.32.14

3.50.33.8

3.50.33.30

3.50.36.9

3.0.23.1

SYS\Odbccp32.cpl

3.50.32.14

3.50.33.8

3.50.33.30

3.50.36.9

3.0.23.1

SYS\Odbccp32.dll

3.50.32.14

3.50.33.8

3.50.33.30

3.50.36.9

3.0.23.1

SYS\Odbccr32.dll

3.50.32.14

3.50.33.8

3.50.33.30

3.50.36.9

3.0.23.1

SYS\Odbccu32.dll

3.50.32.14

3.50.33.8

3.50.33.30

3.50.36.9

3.0.23.1

SYS\Odbcint.dll

3.50.32.14

本文地址:http://com.8s8s.com/it/it3847.htm