?? 6072.htm
字號:
<HTML>
<HEAD>
<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>
<meta HTTP-EQUIV='Expires' CONTENT=0>
<link rel='stylesheet' href='../../../../news.css'>
<style type='text/css'>
.fst{padding:0px 15px;width:770px;background:#eeeecc;border-left:1px solid #000000;border-right:1px solid #000000}
.fstdiv3 img{border:0px;border-right:8px solid #eeeecc;border-top:6px solid #eeeecc}
</style>
<title>
Microsoft數據訪問組件的再發布
</title>
</HEAD>
<BODY aLink=#990000 bgColor=#ffffff bottomMargin=0 leftMargin=0 rightMargin=0 topMargin=0 marginwidth=0 marginheight=0>
<center>
<TABLE align=center bgColor=#cccc99 border=0 cellPadding=2 cellSpacing=0 width=770>
<TBODY>
<TR>
<TH align=left >
Microsoft數據訪問組件的再發布
</TH>
</TD></TR>
</TBODY></TABLE>
<TABLE align=center bgColor=#eeeecc border=1 cellPadding=1 cellSpacing=0 width=770>
<TBODY>
<TR><TD colSpan=5 >
<a href='http://www.csdn.net'>中國軟件開發網絡</a>
-->
<a href='http://www.csdn.net/develop'>開發圖書館</a>
-->
<a href='http://www.csdn.net\develop\list_article.asp?lib=1&bigclassid=
1
'>
Visual C++
</a>
-->
<a href='http://www.csdn.net\develop\list_article.asp?lib=1&bigclassid=
1
&smallclassid=
107
'>
數據庫操作
</a>
-->
<a href='
http://www.csdn.net/develop/library/vc/datebase/6072.shtm
'>
Microsoft數據訪問組件的再發布
</a>
</TD></tr>
<TR>
<TD align=left width=300>
<B>關鍵字:</B><BR>
Microsoft數據訪問組件的再發布
</TD>
<TD align=middle width=120>
<B>貼文時間</B><br>
2001-3-31 16:08:06
</TD>
<TD align=middle width=80>
<B>文章類型: </B><BR>
轉貼
</TD>
<TD align=middle width=100>
<B>給貼子投票 </B>
<BR><a href='http://www.csdn.net/develop/addscore.asp?id=
6072
'>投票</a>
</TD></TR>
<TR>
<TD >
vcmfc
轉貼
</TD>
<TD colSpan=3 vAlign=top>
<B>出處: </B><A href='
http://www.zdnet.com.cn
'>
http://www.zdnet.com.cn
</A></TD></TR>
<TR><TD colSpan=5 bgcolor=#cccc99> </TD></TR>
</TD></TR></TBODY></TABLE>
<div align=center><div class=fst align=left><div class=fstdiv3 id=print2>
<br><br><SPAN class=B1><B>Microsoft數據訪問組件的再發布</B></SPAN>
<P><SPAN class=a10>作者: Don Willits <BR>日期: 2000年06月27日 </SPAN>
<P><SPAN class=Text1><!-- storybody -->
<P><B>概要:</B>解釋了關于再發布MDAC組件的問題</P>
<P>主要討論:</P>
<UL>
<LI>定義Microsoft 通用數據訪問策略、數據訪問組件和數據訪問。
<LI>再發布MDAC (包括依賴關系和文件列表)。
<LI>與各種開發環境一起再發布。 </LI></UL>
<H2 class=b2a>簡介</H2>
<P>Microsoft數據訪問組件(MDAC)現在正處于一個稱為“DLL地獄”的邊緣。這有兩個原因。首先,大量的應用程序需要再發布一個或多個MDAC組件,其中包括開放數據庫連接(ODBC)、OLE DB、Microsoft ActiveX Data Objects (ADO)、和遠程數據服務(Remote Data Service ,RDS)。其次,MDAC組件與其它可再發布的系統組件之間有著直接或間接的依賴關系。本文是關于最近版本的MDAC組件的再發布過程中可能遇到的問題的一個綜合性的概述。文中枚舉了在安裝或再發布MDAC組件時必須注意的問題。</P>
<P>就MDAC的再發布問題,已經有一些Microsoft知識庫的文章。本文對這些文章只提供引用和上下文以幫助讀者決定是否需要進一步了解細節,而不是重復它們的內容。</P>
<H1 class=b2a>Microsoft通用數據訪問策略,Microsoft數據訪問組件和數據訪問軟件開發工具包</H1>
<P>通用數據訪問是微軟公司為了對一個從桌面到企業系統的組織里的所有類型的信息(包括關系型的和非關系型的數據)提供高性能的訪問而設計的數據訪問策略。它通過四個關鍵技術來完成這一點:ODBC,OLE DB,ADO,和RDS。最近,聯機分析處理(OLAP)和多維擴展又分別加入到了OLE DB (OLE DB for OLAP)和ADO(ADO MD)中。</P>
<P>ODBC是一個通過SQL查詢語法來在各個不同的數據源之間操縱關系型數據的國際標準。因為它是一個國際標準,所以通過使用各種Microsoft或第三方提供的ODBC驅動程序,你可以用它操縱許多種關系型數據源。ODBC最主要的缺點是它僅適用于基于SQL語法的關系型數據。</P>
<H1 class=b2a>MDAC 1.5</H1>
<P>到了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放在同一路徑下。</P>
<P>再次地, 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。</P>
<P>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數據提供商從一個非關系型數據庫中取回數據。</P>
<P>MDAC 1.5 曾經有五個(或更多)單獨的版本,其中每個版本都有不同版本的ODBC 3.5、OLE DB 1.5、ADO 1.5和RDS 1.5組件以及 ODBC 驅動程序和OLE DB 提供商。除了文件版本和對安裝程序修訂了一些Bug外,最開始的兩個版本沒有什么顯著差別。下面就是MDAC 1.5版本的概要情況:</P>
<UL type=disc>
<LI><B>Internet Explorer 4.0:</B>與Internet Explorer 4.0和Internet Client SDK 4.0一起分發。與兩個產品的安裝集成在一起。
<LI><B>MDAC 1.5</B>(<B>PDC):</B>更新了與Internet Exporer一起分發的組件。僅從1997 Professional Developers Conference CD的MDAC單獨安裝程序中可以得到。
<LI><B>MDAC 1.5a:</B>1997年10月6日到1997年11月20日期間可以從網上下載的單獨安裝的MDAC安裝程序中得到。
<LI><B>MDAC 1.5b:</B>可在Windows NT 4.0 Option Pack中得到,MDAC的獨立安裝實際上與Option Pack集成在一起(而不是作為一個單獨的安裝程序)。
<LI><B>MDAC 1.5c:</B>1997年11月20日后可以從網上下載,有兩種版本。一是MDAC的獨立安裝版本,另一個是小一些的MDAC再發布版本,它只安裝運行期間組件。MDAC 1.5c 與包含在OLE DB 1.5和ODBC 3.5 SDK中的位測試匹配。在1.5b 和 1.5c版本之間修訂的bug有所增加,但是都很重要,主要是修訂ADO的線程問題和ODBC的連接池問題。
<LI><B>Windows 98 和/或 Internet Explorer 4.01 Service Pack 1:</B>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的事務對象更加安全。 </LI></UL>
<P>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可用組件的再發布)]。</P>
<P>與MDAC的獨立安裝版本相比, MDAC 的再發布版本沒有那么多開發者想要的設置選項。但是,MDAC的獨立安裝版本并不總是提供開發者想要的東西:即使在通過命令行開關禁止它去檢測時,MDAC 的獨立安裝程序都可以檢測到安裝一個特定組件需要些什么。有些理由可以解釋為什么不用MDAC的獨立安裝程序來在一個再發布場景下安裝MAAC組件。詳細信息請參閱知識庫文章Q177913 [Use the MDAC Stand-alone Setup EXE in Unattended Mode(使用無人照管模式的MDAC安裝程序)]。</P>
<P>你應該使用MDAC再發布版本來在發布MDAC1.5。雖然MDAC獨立版本似乎在安裝特定組件時提供更多選項,但是它是依賴于操作系統的,這樣就增加了你的再發布機制的大小和復雜性。也就是說,你不得不分發兩個6MB的文件,一個用于Windows NT ,一個用于Windows 95。此外,你的再發布機制必需能夠判斷當前的操作系統類型,這樣你才能正確地使用適當的MDAC獨立版本。</P>
<P>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。</P>
<P>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])。如果你把對話框拖到最左邊然后點擊<B>Next</B>,則安裝程序將會停止。MDAC的再發布版本則沒有這個問題。即使沒有這個DLL文件,安裝也能正常運行。</P>
<P>在發行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的應用程序。</P>
<P>唯一實際與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]。</P>
<P>到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] 中有記載。</P>
<P>在開發者中常常造成混亂的一個問題是再發布一個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 安裝向導環境的,但是這個需求對其它情形下的同樣適用)。</P>
<P>與所有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再發布來安裝。</P>
<P>MDAC 1.5 再發布非常有用,但有時安裝MDAC 1.5組件的.cab文件更好用。要了解圍繞MDAC 1.5 再發布的.cab文件的創建問題,請參看知識庫文章Q185622 (HOWTO: Adding the MDAC Redistribution Setup to CAB Files)。</P>
<P>許多開發者想控制再發布的大小。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驅動程序。</P>
<P>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協議部署它時是有用的。</P>
<P>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上測試和支持。</P>
<P><B>表2. MDAC 1.5組件的文件路徑和分布</B></P>
<P>SYS\…<驅動器名>:\<Windir>\<Systemdir> </P>
<P>OLE\…<驅動器名>:\Program Files\Common Files\System\Oledb</P>
<P>ADO\…<驅動器名>:\Program Files\Common Files\System\Ado</P>
<P>RDS\…<驅動器名>:\Program Files\Common Files\System\Msadc</P>
<TABLE border=1 cellPadding=0 cellSpacing=0>
<TBODY>
<TR>
<TD colSpan=14 vAlign=top width=865>
<P><B>ODBC 驅動程序管理器 </B></P></TD></TR>
<TR>
<TD vAlign=top width=141>
<P><B>路徑和文件名</B></P></TD>
<TD vAlign=top width=94>
<P><B><BR>IE 4.0</B></P></TD>
<TD colSpan=2 vAlign=top width=112>
<P><B><BR>MDAC 1.5</B></P></TD>
<TD colSpan=2 vAlign=top width=103>
<P><B><BR>MDAC 1.5a</B></P></TD>
<TD colSpan=2 vAlign=top width=108>
<P><B><BR>MDAC 1.5b</B></P></TD>
<TD colSpan=2 vAlign=top width=103>
<P><B><BR>MDAC 1.5c</B></P></TD>
<TD colSpan=2 vAlign=top width=85>
<P><B>IE 4.01<BR>SP1</B></P></TD>
<TD colSpan=2 vAlign=top width=119>
<P><B>Windows 98</B></P></TD></TR>
<TR>
<TD vAlign=top width=141>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -