Microsoft 数据访问技术简介
2008-09-06 10:01:30 来源:WEB开发网在介绍SQL Native Client编程之前,首先来了解一下Microsoft提供的所有数据访问技术,以便读者能够对这些技术有一个全面的了解,从而选择出适合自己的方式来连接到SQL Server 2005。自然,如果希望能够使用SQL Server 2005的所有新增功能并且获得强劲的性能,则还是应当使用ADO.NET 2.0。
Microsoft所提供的数据访问技术包括DB-Library、ESQL、DAO、Microsoft数据访问组件(即MDAC,包括ODBC、ADO和OLE DB)、ADO.NET和SQL Native Client,下面将说明哪些技术在未来会继续得到增强,以及哪些技术在未来会被弃用或排除。
9.1.1 Microsoft数据访问组件
通过Microsoft数据访问组件(MDAC),开发人员可以连接到种类繁多的关系和非关系数据源,并且使用这些数据源中的数据。
1.MDAC的主要版本
要检查当前操作系统中所安装MDAC的版本,可以单击Windows“开始”菜单上的“运行”命令,在打开的文本框中键入regedit,启动注册表编辑器并定位到HKEY_LOCAL_MACHINESoftwareMicrosoftDataAccess路径下的FullInstallVer和Version项,可以看到MDAC的版本信息。
可以在MDAC的Web站点(http://msdn.microsoft.com/data/ref/mdac/downloads/)查找MDAC的最新版本,下载并安装到计算机中。目前MDAC的最新版本为2.8 SP1,发布日期为2005年5月10日。表9-1列出了已发布的MDAC,以及它们的支持程度。
表9-1 MDAC的主要版本
版本 | 说明 |
MDAC 1.5、MDAC 2.0和MDAC 2.1 | 这些版本的MDAC是通过Microsoft Windows NT Option Pack、Microsoft Windows Platform SDK或在MDAC Web站点发布的独立版本。这些版本的MDAC不再被支持 |
MDAC 2.5 | 该版本的MDAC随附在Windows 2000操作系统中。MDAC 2.5的未来Service Pack将随附在相应的Windows 2000 Service Pack中。同时,这些MDAC Service Pack也会被单独发布到MDAC Web站点中。只能在Windows NT、Windows 95和Windows 98平台上安装该版本的MDAC。该版本当前仍旧被支持 |
MDAC 2.6 | 包括MDAC 2.6 RTM、SP1和SP2版本,分别随附在Microsoft SQL Server 2000 RTM、SP1和SP2中。同时,这些MDAC Service Pack根据Microsoft SQL Server 2000 Service Pack发布日程安排发布到MDAC Web站点中。可以将该版本的MDAC和它的Service Pack安装到Windows 2000、Windows Millennium Edition、Windows NT、Windows 95和Windows 98平台上。该版本不再被支持 |
MDAC 2.7 | 该版本的MDAC随附在Microsoft Windows XP RTM和SP1操作系统中。可以将该版本的MDAC和它的Service Pack安装到Windows 2000、Windows Millennium、Windows NT和Windows 98平台上 现在,32位版本的MDAC 2.7已经被发布到MDAC Web站点,而64位版本的MDAC 2.7将仅与64位版本的Windows XP一起发布 |
MDAC 2.8 | 该版本的MDAC随附在Windows Server 2003以及Windows XP SP2和更高版本中,这也是MDAC的最新版本 32位版本的MDAC 2.8和SP1现在已经发布到MDAC Web站点中,而64位版本的MDAC 2.8将仅与64位版本的Windows Server 2003一起发布 |
2.MDAC 2.8的体系结构
通过MDAC 2.8的体系结构,客户端/服务器应用程序、多层架构应用程序或Web浏览器应用程序可以访问SQL、半结构化存储和旧式数据存储区。另外,通过MDAC,这些应用程序通过使用ADO、OLE DB或ODBC可以灵活地访问数据。图9-1显示了MDAC 2.8的体系结构及常用组件。
图9-1 MDAC 2.8的体系结构
表9-1列出了在未来仍旧会受到支持的组件,在开发新的应用程序或者升级现有的应用程序时,应当使用这些组件。
表9-1 未来受支持的组件
组件 | 说明 |
ADO | 包括ADO Multi-Dimensional(ADOMD)和ADO Extensions for DDL and Security(ADOX)。ADO提供了将继续得到增强的高级编程模型,尽管ADO的性能要比直接针对OLE DB或ODBC编码稍差一些,但它易于学习和使用,并且可以在诸如VBScript或JScript之类的脚本语言中使用 ADOMD将与多维数据提供程序(例如,Microsoft OLAP提供程序,也称为Microsoft分析服务提供程序)一起使用。自MDAC 2.0开始,没有对其进行过重大的功能增强。但是,它将可以在64位Windows操作系统上使用 ADOX支持对数据库、表、索引或存储过程的定义进行创建和修改。可以将ADOX与任何提供程序一起使用,Microsoft Jet OLE DB提供程序为ADOX提供了完整支持,而Microsoft SQL OLE DB提供程序提供了有限的支持。在未来的MDAC版本中,没有为ADOX计划重大的增强。但是,它将可以在64位Windows操作系统上使用 |
OLE DB | OLE DB是一个全面的COM接口集,包括SQL Server OLE DB提供程序、Oracle OLE DB提供程序、用于ODBC驱动程序的OLE DB提供程序、Data Shape Provider和Remote Data Provider。这些接口可用于访问数据库、文件系统、消息存储区、目录服务、工作流和文档存储区中的数据。OLE DB核心服务(尽管不是每个OLE DB提供程序)将可以在64位Windows操作系统上使用 其中,用于SQL Server的Microsoft OLE DB提供程序(SQLOLEDB)支持对Microsoft SQL Server 6.5和更高版本的访问,该OLE DB提供程序将是未来MDAC功能增强的中心 |
ODBC | 使用ODBC接口可以访问多种数据库管理系统(DBMS)中的数据,但使用该API的应用程序被限制为只能访问关系数据源。ODBC将可以在64位Windows操作系统上使用 其中,Microsoft SQL Server ODBC驱动程序(SQLODBC)支持对Microsoft SQL Server 6.5和更高版本的访问,它将可以在64位Windows操作系统上使用 |
表9-2列出了在未来会被弃用的MDAC组件,虽然在MDAC的当前版本中仍然支持这些组件,但Microsoft建议在开发新的应用程序时避免使用这些组件。
表9-2 未来被弃用的组件
组件 | 说明 |
Jet | 从版本2.6开始,MDAC不再包含Jet组件。也就是说,MDAC 2.6、2.7、2.8以及未来的所有MDAC版本都不包含Microsoft Jet、Microsoft Jet OLE DB提供程序和ODBC桌面数据库驱动程序 |
MSDASQL | 用于ODBC的Microsoft OLE DB提供程序(MSDASQL)通过ODBC驱动程序提供了对数据库的ADO客户端访问,这已经成为ADO的默认提供程序。但是,在未来版本的MDAC和64位Windows操作系统中MSDASQL将被弃用。因此,要从ADO访问数据库,客户端必须使用适当的本机OLE DB提供程序(例如,SQLOLEDB)来访问Microsoft SQL Server。MSDASQL将不能在64位Windows操作系统上使用。但是,仍然可以通过32位Windows子系统在64位Windows操作系统上使用它 |
MSDADS | 通过Microsoft OLE DB Provider for Data Shaping(MSDADS),可以在应用程序中创建键、字段或行集合之间的分层关系。自MDAC 2.1开始,没有进行过重大的功能增强。该提供程序将在未来的MDAC版本中将被弃用。Microsoft建议使用XML而不是MSDADS |
Oracle ODBC | Microsoft Oracle ODBC驱动程序(Oracle ODBC)提供了对Oracle数据库服务器的访问,它提供了对Oracle 7的完整支持。它还使用Oracle 7仿真提供了对Oracle 8数据库的有限支持。Oracle ODBC驱动程序尚未针对Oracle 9数据库进行测试 |
RDS | 远程数据服务(RDS)是一种用于跨Internet或Intranet访问远程ADO记录集对象的专用Microsoft机制。自MDAC 2.1开始,还没有对RDS进行过重大的功能增强,该组件将被弃用。Microsoft建议通过Microsoft SOAP Toolkit 2.0,使用开放的、基于XML的标准来访问远程数据 |
JRO | 自MDAC 2.6开始,Microsoft Jet OLE DB提供程序和其他相关组件已经被从MDAC协议栈中移除。Jet复制对象(JRO)仅与Jet(Access)数据库一起使用,基本上用于创建或压缩Jet数据库和Jet复制管理。MDAC 2.7是JRO的最后一个版本,它将不能在64位Windows操作系统上使用 |
SQL XML | SQL XML提供了对用于SQL Server的Microsoft OLE DB提供程序(SQLOLEDB)的扩展,以使客户端可以通过XML请求Microsoft SQL Server 2000数据以及检索XML流。它最初是与MDAC 2.6一起发布的。该组件不会被弃用,但是它将被从未来的MDAC版本中移除。该产品的当前版本和更高版本将作为Web下载提供,将可以在64位Windows操作系统上使用 |
9.1.2 SQL Native Client
如果开发基于COM的应用程序,并且需要使用SQL Server 2005的新增功能,则必须使用SQL Native Client数据访问技术。
1.SQL Native Client的组件
SQL Native Client所包含的组件如表9-3所示。
表9-3 SQL Native Client的组件
组件 | 说明 |
sqlncli.dll | 包含所有SQL Native Client功能的动态连接库文件(DLL),包括SQL Native Client OLE DB提供程序和SQL Native Client ODBC驱动程序 |
sqlnclir.rll | SQL Native Client库的补充资源文件 |
sqlncli.chm | 数据源向导的帮助文件。包含如何使用SQL Native Client ODBC驱动程序和SQL Native Client OLE DB提供程序创建SQL Server数据源的文档 |
sqlncli.h | SQL Native Client的头文件。包含所有使用SQL Native Client的新定义。该文件代替了odbcss.h和sqloledb.h文件 |
sqlncli.lib | 用于直接调用bcp实用工具功能的库文件,它是SQL Native Client ODBC驱动程序的一部分。如果要在编程代码中引用sqlncli.lib文件,需要确保sqlncli.dll文件在系统路径中 |
2.安装/卸载SQL Native Client
可以在下列操作系统中安装SQL Native Client:
ØMicrosoft Windows XP SP1和更高版本。
ØMicrosoft Windows 2000 Professional、Server、Advanced Server和Datacenter SP4,以及更高版本。
ØMicrosoft Windows 2003 Server、Enterprise和Datacenter Server,以及更高版本。
在安装SQL Server 2005或SQL Server 2005工具时,SQL Native Client是自动安装的,详细信息可参考1.2.4节的介绍。
SQL Native Client的组件文件sqlncli.dll、sqlnclir.rll和sqlncli.chm安装在%WINDOWS%system32目录下面,SQL Native Client头文件(sqlncli.h)和库文件(sqlncli.lib)安装在%PROGRAM FILES%Microsoft SQL Server90SDK目录下。
除了作为SQL Server安装的一部分安装SQL Native Client之外,在SQL Server 2005安装光盘的%CD%Setup目录下,有一个名为sqlncli.msi的文件,可以进行单独分发,安装到所需要的客户端计算机中。
如果需要在64位Windows上安装SQL Native Clien,则应当使用64位SQL Native Client安装包。在32位SQL Server 2005安装光盘中,64位SQL Native Client安装包的文件名称为sqlncli_x64.msi。而在64位SQL Server 2005安装光盘中,64位SQL Native Client安装包的文件名称为sqlncli.msi。
如果希望从系统中卸载SQL Native Client,可以在从控制面板中打开“添加或删除程序”窗口,选定Microsoft SQL Server Native Client并单击删除按钮。如图9-2所示。
图9-2 卸载SQL Native Client
9.1.3 ADO.NET
ADO.NET是对传统ADO的改进,可用于创建分布式的数据共享应用程序。它是一种高级的应用程序编程接口,支持对数据进行断开连接访问的松散耦合的、n层的、基于Internet的应用程序。
ADO.NET对Microsoft SQL Server和XML等数据源以及通过OLE DB和XML公开的数据源提供一致的访问。数据共享使用者应用程序可以使用ADO.NET来连接到这些数据源,并检索、处理和更新所包含的数据。
ADO.NET通过数据处理将数据访问分解为多个可以单独使用或一前一后使用的不连续组件,这包括数据连接组件和数据集处理组件。ADO.NET包含有如表9-4所示的4种.NET Framework数据提供程序,。
表9-4 ADO.NET包括的数据提供程序
.NET Framework数据提供程序 | 说明 |
SQL Server .NET Framework数据提供程序 | 提供对Microsoft SQL Server 7.0版或更高版本的数据访问 |
OLE DB .NET Framework数据提供程序 | 适合于使用OLE DB公开的数据源 |
ODBC .NET Framework数据提供程序 | 适合于使用ODBC公开的数据源 |
Oracle .NET Framework数据提供程序 | 适用于Oracle数据源。Oracle .NET Framework数据提供程序支持Oracle客户端软件8.1.7版和更高版本 |
有关ADO.NET的详细信息,可参考第10章的介绍。
9.1.4 已过时的数据访问技术
已过时的技术是指在多个产品版本中未增强或更新,并且在未来的产品版本中将被排除的技术。在编写新的应用程序时,不要使用这些技术。当修改那些使用这些技术编写的现有应用程序时,可以考虑将这些应用程序迁移到ADO.NET。表9-5列出已过时的数据访问组件。
表9-5 已过时的数据访问组件
组件 | 说明 |
DB-Library | 这是一个包含C API的特定于SQL Server的编程模型。自SQL Server 6.5以来,一直没有对DB-Library进行任何功能增强。它的最后一个版本随附在SQL Server 2000中,并且将不会被移植到64位Windows操作系统 |
嵌入式 SQL(E-SQL) | 这是一个特定于SQL Server的编程模型,它支持将Transact-SQL语句嵌入到Visual C代码中。自SQL Server 6.5开始,一直没有对E-SQL进行任何功能增强。它的最后一个版本随附在SQL Server 2000中,并且将不会被移植到64位Windows操作系统 |
数据访问对象(DAO) | DAO提供对JET(Access)数据库的访问。可以从Microsoft Visual Basic、Microsoft Visual C++和脚本语言中使用该API。它随附在Microsoft Office 2000和Office XP中。DAO 3.6是该技术的最后一个版本,它将不能在64位Windows操作系统上使用 |
远程数据对象(RDO) | RDO经过专门设计以访问远程的ODBC关系数据源,并且使得ODBC的使用变得更加容易,而无须编写复杂的应用程序代码。它随附在Microsoft Visual Basic版本4、5和6中。RDO版本2.0是该技术的最后一个版本 |
更多精彩
赞助商链接