第一篇:“ODBC驅(qū)動程序不支持動態(tài)記錄集”錯誤的解決 .
在使用VC進(jìn)行數(shù)據(jù)庫編程時我遇到一個問題。代碼編譯通過,在運(yùn)行時突然彈出一個警告對話框,如下圖:
我納悶在哪里出了問題。我想唯一有可能的是連接數(shù)據(jù)庫時出現(xiàn)了問題。于是我找到連接數(shù)據(jù)庫的代碼:
m_pdatabase->Open(NULL,FALSE,FALSE,“ODBC;DSN=libraryMIS;UID=txm;PWD=txm”);
其中m_pdatabase是一個CDatabase類的指針。于是我查msdn,找到CDatabase的Open函數(shù)。CDatabase::Open
virtual BOOL Open(LPCTSTR lpszDSN, BOOL bExclusive = FALSE, BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = “ODBC;”, BOOL bUseCursorLib = TRUE);
throw(CDBException, CMemoryException);
我猜到問題可能出在哪兒了,我在BOOL bUseCursorLib設(shè)置了默認(rèn)值TRUE。我得先看看bUseCursorLib表示什么意義。bUseCursorLib
TRUE if you want the ODBC Cursor Library DLL to be loaded.The cursor library masks some functionality of the underlying ODBC driver, effectively preventing the use of dynasets(if the driver supports them).The only cursors supported if the cursor library is loaded are static
snapshots and forward-only cursors.The default value is TRUE.If you plan to create a recordset object directly from CRecordset without deriving from it, you should not load the cursor library.大意是說假如bUseCursorLib為TRUE時,ODBC光標(biāo)庫將被加載。光標(biāo)庫會覆蓋ODBC驅(qū)動程序的一些功能,有效地阻止動態(tài)記錄集的使用(假如ODBC驅(qū)動程序支持動態(tài)記錄集的使用的話)。假如光標(biāo)庫被加載唯一的光標(biāo)支持的是靜態(tài)快照集和唯一向前的光標(biāo)。參數(shù)默認(rèn)值是TRUE。假如你直接創(chuàng)建一個CRecordset類對象而不是繼承自它,你不應(yīng)該裝載光標(biāo)庫。
因此問題的解決辦法是將bUseCursorLib的值設(shè)為FALSE。當(dāng)我這樣做了,問題解決了。
第二篇:怎樣解決iexplore.exe應(yīng)用程序錯誤
作者:江西新華電腦學(xué)院
怎樣解決iexplore.exe應(yīng)用程序錯誤
最近觀察到有很多用戶上網(wǎng)時,系統(tǒng)經(jīng)常報(bào)錯:iexplore.exe-應(yīng)用程序錯誤。分析了常見iexplore.exe 應(yīng)用程序錯誤的原因后,發(fā)現(xiàn)主要是病毒木馬影響,其次是瀏覽器加載項(xiàng)。
iexplore.exe應(yīng)用程序錯誤的現(xiàn)象:瀏覽器是上網(wǎng)的最主要通道。目前,使用IE瀏覽器的人仍然是主流,國內(nèi)流行的第三方瀏覽器也大多是IE內(nèi)核。任何原因?qū)е翴E出錯,都會導(dǎo)致上網(wǎng)瀏覽障礙。
比如很多網(wǎng)民瀏覽器頻繁崩潰時會問:
(1)iexplore.exe應(yīng)用程序錯誤
(2)iexplore.exe是什么進(jìn)程可以結(jié)束嗎
(3)iexplore.exe 遇到問題需要關(guān)閉
(4)iexplore.exe是什么進(jìn)程
而瀏覽器崩潰時出錯的提示往往是“iexplore.exe 應(yīng)用程序錯誤”,“0x02e87a90”指令引用的“0x02e87a90”內(nèi)存.該內(nèi)存不能為“read”等等。
iexplore.exe應(yīng)用程序錯誤的原因:情況主要有以下幾種:
1:iexplore.exe會經(jīng)常被病毒假冒或者病毒直接插入iexplore.exe進(jìn)程,病毒木馬程序的BUG會經(jīng)常導(dǎo)致iexplore.exe應(yīng)用程序錯誤。但顯然,病毒木馬作者會無視這一點(diǎn)。
2:病毒木馬感染系統(tǒng)文件的過程中,采取了一些非主流的方式加載,這類方式非常不穩(wěn)定,容易導(dǎo)致iexplore.exe的崩潰,出現(xiàn)iexplore.exe應(yīng)用程序錯誤;最常見的也就是出現(xiàn)iexplore.exe 遇到問題需要關(guān)閉;
3:具體表現(xiàn)一般為“internet explorer遇到加載項(xiàng)需要關(guān)閉,我們對此引起的不便表示道歉.如果你正處于進(jìn)程中,請?zhí)峤?? 等對話框。
4:一般的加載到iexplore.exe的病毒多為盜號木馬,主要是針對大型網(wǎng)游和網(wǎng)銀進(jìn)行盜號;還有對淘寶支付寶帳號下手。除此之外,有些病毒木馬還是下載器,中毒后,會下載大量其它木馬?;蛘甙惭b不需要的軟件,或彈出廣告。
5:除病毒之外的原因就是第三方廠商設(shè)計(jì)的瀏覽器加載項(xiàng),一般稱之為瀏覽器插件。插件的BUG,也會導(dǎo)致iexplore.exe應(yīng)用程序錯誤。
工具/原料
a:金山毒霸2011
b:控制面板,IE選項(xiàng)
解決iexplore.exe應(yīng)用程序錯誤的步驟/方法
方案一:采用金山毒霸最新版本查殺病毒,并修復(fù)系統(tǒng)錯誤。一般情況下不需要全盤查殺,只需要快速查殺,3-5分鐘之后,按提示選擇修復(fù)即可。
方案二:如果金山毒霸最新版本沒有檢查到病毒,但仍然有iexplore.exe應(yīng)用程序錯誤的情況發(fā)生,應(yīng)檢查IE加載項(xiàng)。方法是啟動控制面板,找到internet選項(xiàng),高級頁,點(diǎn)擊管理加載項(xiàng)。將可能有影響的插件禁用。
若管理插件無效,還可以重置或重裝IE。
注意事項(xiàng):
瀏覽器故障通常是小問題,不要匆匆忙忙重裝系統(tǒng)。絕大多數(shù)情況下,3-5分鐘即可搞定。
2013-4-5
第三篇:VPN客戶端創(chuàng)建及錯誤解決
VPN服務(wù)教程
目錄
1.客戶端創(chuàng)建....................................................................................................................................2
1.1.XP系統(tǒng)下創(chuàng)建...................................................................................................................2 1.2.Windows7系統(tǒng)下創(chuàng)建.......................................................................................................7 1.3.Windows8系統(tǒng)下創(chuàng)建.....................................................................................................12 1.4.靜態(tài)IP地址/DNS設(shè)置....................................................................................................16 2.VPN服務(wù)錯誤解決方法..............................................................................................................19 2.1.錯誤868:服務(wù)器名稱問題.........................................................................................19 2.2.無法使用提供的用戶名和密碼進(jìn)行連接錯誤...............................................................20 2.3錯誤691:遠(yuǎn)程服務(wù)器不可達(dá)或飽和或斷開連接和錯誤1168:找不到元素...........20
1.客戶端創(chuàng)建
1.1.XP系統(tǒng)下創(chuàng)建
(1)打開“開始菜單欄”,單擊“控制面板”
(2)找到并雙擊“網(wǎng)絡(luò)連接”
(3)進(jìn)入界面后,按照圖示單擊或雙擊紅色提示框部分即可
(4)返回桌面,找到并雙擊桌面上的“VPN連接”客戶端,輸入獲得的賬號密碼。
(5)點(diǎn)擊上圖當(dāng)中的“屬性”按鈕,切換到安全選項(xiàng)卡,如下圖設(shè)置,點(diǎn)擊確定
(6)返回(4)中的的界面,輸入正確的賬號密碼后點(diǎn)擊“連接”按鈕即可。
1.2.Windows7系統(tǒng)下創(chuàng)建
(1)打開“開始菜單”欄,找到并右鍵單擊”網(wǎng)絡(luò)”,選擇右鍵菜單中的”屬性”
(2)按下圖設(shè)置
(3)創(chuàng)建桌面快捷方式:重復(fù)(1)對照下圖操作
(4)設(shè)置VPN參數(shù):如賬號、密碼、連接類型等。在桌面找到剛創(chuàng)建的“SONTA_VPN”快捷方式,并雙擊。
b
(5)點(diǎn)擊上圖當(dāng)中的“屬性”按鈕,切換到安全選項(xiàng)卡,如下圖設(shè)置,點(diǎn)擊確定
(6)返回(4)中的的界面,輸入正確的賬號密碼后點(diǎn)擊“連接”按鈕即可。1.3.Windows8系統(tǒng)下創(chuàng)建
(1)找到系統(tǒng)“控制面板”
(2)點(diǎn)擊下圖中“查看網(wǎng)絡(luò)狀態(tài)和任務(wù)”
(3)然后按照下圖中紅色選框設(shè)置即可
(4)最后輸入在vpn.dog25.com注冊的賬號和密碼,如果該賬號已成功開通VPN服務(wù),并且客戶端屬性中的“目的地的主機(jī)名或IP地址”填寫正確,即可成功連接。
1.4.靜態(tài)IP地址/DNS設(shè)置
由于學(xué)校的路由器不是很穩(wěn)定,經(jīng)常遭受到局域網(wǎng)病毒攻擊,網(wǎng)關(guān)不能正常分配IP地址,導(dǎo)致經(jīng)常發(fā)生明明連上網(wǎng)線卻連不上電信寬帶或者神州數(shù)碼。此外,學(xué)校的DNS服務(wù)器,在個人電腦沒有聯(lián)網(wǎng)的情況下,無法解析外網(wǎng)的域名,這就導(dǎo)致了明明聯(lián)網(wǎng)了,卻無法打開網(wǎng)頁,但是能上qq的情況。所以為了保證網(wǎng)絡(luò)通信正常,不受局域網(wǎng)病毒影響,請按照如下圖示給個人電腦設(shè)置靜態(tài)IP地址和DNS。
最后點(diǎn)擊“確定”按鈕即可,至此保證你的網(wǎng)絡(luò)在別人連不上的情況下,你卻能正常上網(wǎng)!
2.VPN服務(wù)錯誤解決方法
2.1.錯誤868:服務(wù)器名稱問題
? 導(dǎo)致該錯誤的原因可能有兩個,第一個是由于如下圖中客戶端服務(wù)器地址沒有填對,此時登錄vpn.dog25.com 查詢到自己的服務(wù)器地址設(shè)置好vpn客戶端即可。
? 第二個錯誤是由于自己電腦的DNS沒有設(shè)置好,此時按照文檔的1.4節(jié)設(shè)置好網(wǎng)卡的DNS即可正常連接了!2.2.無法使用提供的用戶名和密碼進(jìn)行連接錯誤
出現(xiàn)該錯誤的原因有多種,包括:本身用戶名和密碼不正確、賬戶VPN服務(wù)未開通、賬戶VPN服務(wù)已到期(流量用完了或到期了)、客戶端服務(wù)器地址設(shè)置不正確。按照如下步驟檢查即可。
首先用剛連接VPN的賬號和密碼登錄vpn.dog25.com,如果能登錄,則排出第一種可能,否則聯(lián)系管理員重置登錄密碼。登錄系統(tǒng)后如果首頁有提示“VPN服務(wù)未開通”,則說明沒有開通VPN服務(wù),或者VPN服務(wù)已到期,否則就是最后一種可能:客戶端服務(wù)器地址設(shè)置不爭取,此時按照上一節(jié)錯誤868中第二個圖設(shè)置即可!
2.3錯誤691:遠(yuǎn)程服務(wù)器不可達(dá)或飽和或斷開連接和錯誤1168:找不到元素
這個錯誤一般發(fā)生在個人電腦沒有連上校內(nèi)局域網(wǎng)。什么時候說明連上校內(nèi)局域網(wǎng)了呢?在斷開所有的網(wǎng)絡(luò)服務(wù)如電信寬帶、chinat、聯(lián)通寬帶、神州數(shù)碼、VPN等服務(wù)之后打開瀏覽器,如果此時還能訪問202.199.155.2,則說明連上校內(nèi)局域網(wǎng)了,否則就沒有,此時連接VPN就會出現(xiàn)691錯誤。一個可能的解決辦法就是將自己的電腦設(shè)置靜態(tài)IP地址,方法在文檔中有介紹,在這里不再敘述。
第四篇:小結(jié)SQLServer連接失敗錯誤及解決
小結(jié)SQL Server連接失敗錯誤及解決
在使用 SQL Server 的過程中,用戶遇到的最多的問題莫過于連接失敗了。一般而言,有以下兩種連接 SQL Server 的方式,一是利用 SQL Server 自帶的客戶端工具,如企業(yè)管理器、查詢分析器、事務(wù)探查器等;二是利用用戶自己開發(fā)的客戶端程序,如ASP 腳本、VB程序等,客戶端程序中又是利用 ODBC 或者 OLE DB 等連接 SQL Server。下面,我們將就這兩種連接方式,具體談?wù)勅绾蝸斫鉀Q連接失敗的問題。
一、客戶端工具連接失敗
在使用 SQL Server 自帶的客戶端工具(以企業(yè)管理器為例)連接 SQL Server時,最常見的錯誤有如下一些:
1、SQL Server 不存在或訪問被拒絕
ConnectionOpen(Connect())
2、用戶'sa'登錄失敗。原因:未與信任 SQL Server 連接相關(guān)聯(lián)。
3、超時已過期。
下面我們依次介紹如何來解決這三個最常見的連接錯誤。
第一個錯誤“SQL Server 不存在或訪問被拒絕”通常是最復(fù)雜的,錯誤發(fā)生的原因比較多,需要檢查的方面也比較多。一般說來,有以下幾種可能性:
1、SQL Server名稱或IP地址拼寫有誤;
2、服務(wù)器端網(wǎng)絡(luò)配置有誤;
3、客戶端網(wǎng)絡(luò)配置有誤。
要解決這個問題,我們一般要遵循以下的步驟來一步步找出導(dǎo)致錯誤的原因。
首先,檢查網(wǎng)絡(luò)物理連接:
ping <服務(wù)器IP地址>
或者
ping <服務(wù)器名稱>
如果 ping <服務(wù)器IP地址> 失敗,說明物理連接有問題,這時候要檢查硬件設(shè)備,如網(wǎng)卡、HUB、路由器等。還有一種可能是由于客戶端和服務(wù)器之間安裝有防火墻軟件造成的,比如 ISA Server。防火墻軟件可能會屏蔽對 ping、telnet 等的響應(yīng),因此在檢查連接問題的時候,我們要先把防火墻軟件暫時關(guān)閉,或者打開所有被封閉的端口。
如果ping <服務(wù)器IP地址> 成功而 ping <服務(wù)器名稱> 失敗,則說明名字解析有問題,這時候要檢查 DNS 服務(wù)是否正常。有時候客戶端和服務(wù)器不在同一個局域網(wǎng)里面,這時候很可能無法直接使用服務(wù)器名稱來標(biāo)識該服務(wù)器,這時候我們可以使用HOSTS文件來進(jìn)行名字解析,具體的方法是:
1、使用記事本打開HOSTS文件(一般情況下位于C:WINNTsystem32driversetc).2、添加一條IP地址與服務(wù)器名稱的對應(yīng)記錄,如:
172.168.10.24 myserver
也可以在 SQL Server 的客戶端網(wǎng)絡(luò)實(shí)用工具里面進(jìn)行配置,后面會有詳細(xì)說明。
其次,使用 telnet 命令檢查SQL Server服務(wù)器工作狀態(tài):
telnet <服務(wù)器IP地址> 1433
如果命令執(zhí)行成功,可以看到屏幕一閃之后光標(biāo)在左上角不停閃動,這說明 SQL Server 服務(wù)器工作正常,并且正在監(jiān)聽1433端口的 TCP/IP 連接;如果命令返回“無法打開連接”的錯誤信息,則說明服務(wù)器端沒有啟動 SQL Server 服務(wù),也可能服務(wù)器端沒啟用 TCP/IP 協(xié)議,或者服務(wù)器端沒有在 SQL Server 默認(rèn)的端口1433上監(jiān)聽。
接著,我們要到服務(wù)器上檢查服務(wù)器端的網(wǎng)絡(luò)配置,檢查是否啟用了命名管道,是否啟用了 TCP/IP 協(xié)議等等。我們可以利用 SQL Server 自帶的服務(wù)器網(wǎng)絡(luò)使用工具來進(jìn)行檢查。
點(diǎn)擊:程序-> Microsoft SQL Server-> 服務(wù)器網(wǎng)絡(luò)使用工具,打開該工具后看到的畫面如下圖所示:
從這里我們可以看到服務(wù)器啟用了哪些協(xié)議。一般而言,我們啟用命名管道以及 TCP/IP 協(xié)議。
點(diǎn)中 TCP/IP 協(xié)議,選擇“屬性”,我們可以來檢查 SQK Server 服務(wù)默認(rèn)端口的設(shè)置,如下圖所示:
一般而言,我們使用 SQL Server 默認(rèn)的1433端口。如果選中“隱藏服務(wù)器”,則意味著客戶端無法通過枚舉服務(wù)器來看到這臺服務(wù)器,起到了保護(hù)的作用,但不影響連接。
檢查完了服務(wù)器端的網(wǎng)絡(luò)配置,接下來我們要到客戶端檢查客戶端的網(wǎng)絡(luò)配置。我們同樣可以利用 SQL Server 自帶的客戶端網(wǎng)絡(luò)使用工具來進(jìn)行檢查,所不同的是這次是在客戶端來運(yùn)行這個工具。
點(diǎn)擊:程序-> Microsoft SQL Server-> 客戶端網(wǎng)絡(luò)使用工具,打開該工具后看到的畫面如下圖所示:
從這里我們可以看到客戶端啟用了哪些協(xié)議。一般而言,我們同樣需要啟用命名管道以及 TCP/IP 協(xié)議。
點(diǎn)擊 TCP/IP 協(xié)議,選擇“屬性”,可以檢查客戶端默認(rèn)連接端口的設(shè)置,如下圖所示。
該端口必須與服務(wù)器一致。
單擊“別名”選項(xiàng)卡,還可以為服務(wù)器配置別名。服務(wù)器的別名是用來連接的名稱,連接參數(shù)中的服務(wù)器是真正的服務(wù)器名稱,兩者可以相同或不同。如下圖中,我們可以使用myserver來代替真正的服務(wù)器名稱sql2kcn-02,并且使用網(wǎng)絡(luò)庫 Named Pipes。別名的設(shè)置與使用HOSTS文件有相似之處。
通過以上幾個方面的檢查,錯誤 1 發(fā)生的原因基本上可以被排除。下面我們再詳細(xì)描述如何來解決錯誤 2。
當(dāng)用戶嘗試在查詢分析器里面使用sa來連接SQL Server,或者在企業(yè)管理器里面使用sa來新建一個SQL Server注冊時,經(jīng)常會遇到如圖 2 所示的錯誤信息。該錯誤產(chǎn)生的原因是由于SQL Server使用了“僅 Windows”的身份驗(yàn)證方式,因此用戶無法使用SQL Server的登錄帳戶(如 sa)進(jìn)行連接。解決方法如下所示:
1、在服務(wù)器端使用企業(yè)管理器,并且選擇“使用 Windows 身份驗(yàn)證”連接上 SQL Server;
2、展開“SQL Server組”,鼠標(biāo)右鍵點(diǎn)擊SQL Server服務(wù)器的名稱,選擇“屬性”,再選擇“安全性”選項(xiàng)卡;
3、在“身份驗(yàn)證”下,選擇“SQL Server和 Windows ”。
4、重新啟動SQL Server服務(wù)。
在以上解決方法中,如果在第 1 步中使用“使用 Windows 身份驗(yàn)證”連接 SQL Server 失敗,那么我們將遇到一個兩難的境地:首先,服務(wù)器只允許了 Windows 的身份驗(yàn)證;其次,即使使用了 Windows 身份驗(yàn)證仍然無法連接上服務(wù)器。這種情形被形象地稱之為“自己把自己鎖在了門外”,因?yàn)闊o論用何種方式,用戶均無法使用進(jìn)行連接。實(shí)際上,我們可以通過修改一個注冊表鍵值來將身份驗(yàn)證方式改為 SQL Server 和 Windows 混合驗(yàn)證,步驟如下所示:
1、點(diǎn)擊“開始”-“運(yùn)行”,輸入regedit,回車進(jìn)入注冊表編輯器;
2、依次展開注冊表項(xiàng),瀏覽到以下注冊表鍵:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerMSSQLServer]
3、在屏幕右方找到名稱“LoginMode”,雙擊編輯雙字節(jié)值;
4、將原值從1改為2,點(diǎn)擊“確定”;
5、關(guān)閉注冊表編輯器;
6、重新啟動SQL Server服務(wù)。
此時,用戶可以成功地使用sa在企業(yè)管理器中新建SQL Server注冊,但是仍然無法使用Windows身份驗(yàn)證模式來連接SQL Server。這是因?yàn)樵?SQL Server 中有兩個缺省的登錄帳戶:BUILTINAdministrators 以及 <機(jī)器名>Administrator 被刪除。要恢復(fù)這兩個帳戶,可以使用以下的方法:
1、打開企業(yè)管理器,展開服務(wù)器組,然后展開服務(wù)器;
2、展開“安全性”,右擊“登錄”,然后單擊“新建登錄”;
3、在“名稱”框中,輸入 BUILTINAdministrators;
4、在“服務(wù)器角色”選項(xiàng)卡中,選擇“System Administrators” ;
5、點(diǎn)擊“確定”退出;
6、使用同樣方法添加 <機(jī)器名>Administrator 登錄。
以下注冊表鍵
HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerMSSQLServerLoginMode 的值決定了SQL Server將采取何種身份驗(yàn)證模式。該值為1,表示使用Windows 身份驗(yàn)證模式;該值為2,表示使用混合模式(Windows 身份驗(yàn)證和 SQL Server 身份驗(yàn)證)。
看完如何解決前兩個錯誤的方法之后,讓我們來看一下如圖 3 所示的第三個錯誤。
如果遇到第三個錯誤,一般而言表示客戶端已經(jīng)找到了這臺服務(wù)器,并且可以進(jìn)行連接,不過是由于連接的時間大于允許的時間而導(dǎo)致出錯。這種情況一般會發(fā)生在當(dāng)用戶在Internet上運(yùn)行企業(yè)管理器來注冊另外一臺同樣在Internet上的服務(wù)器,并且是慢速連接時,有可能會導(dǎo)致以上的超時錯誤。有些情況下,由于局域網(wǎng)的網(wǎng)絡(luò)問題,也會導(dǎo)致這樣的錯誤。
要解決這樣的錯誤,可以修改客戶端的連接超時設(shè)置。默認(rèn)情況下,通過企業(yè)管理器注冊另外一臺SQL Server的超時設(shè)置是 4 秒,而查詢分析器是 15 秒(這也是為什么在企業(yè)管理器里發(fā)生錯誤的可能性比較大的原因)。具體步驟為:
1、在企業(yè)管理器中,選擇菜單上的“工具”,再選擇“選項(xiàng)”;
2、在彈出的“SQL Server企業(yè)管理器屬性”窗口中,點(diǎn)擊“高級”選項(xiàng)卡;
3、在“連接設(shè)置”下的“登錄超時(秒)”右邊的框中輸入一個比較大的數(shù)字,如 20。
查詢分析器中也可以在同樣位置進(jìn)行設(shè)置。
二、應(yīng)用程序連接失敗
以上的三種錯誤信息都是發(fā)生在 SQL Server 自帶的客戶端工具中,在應(yīng)用程序中我們也會遇到類似的錯誤信息,例如:
Microsoft OLE DB Provider for SQL Server(0x80004005)[DBNETLIB][ConnectionOpen(Connect()).]Specified SQL server not found.Microsoft OLE DB Provider for SQL Server(0x80004005)用戶 'sa' 登錄失敗。原因: 未與信任 SQL Server 連接相關(guān)聯(lián)。Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80004005'.[Microsoft][ODBC SQL Server Driver]超時已過期.首先,讓我們來詳細(xì)看以下的示意圖來了解一下使用 ODBC 和使用 OLE DB 連接 SQL Server 有什么不同之處。
從上圖中,我們可以看出在實(shí)際使用中,應(yīng)用程序創(chuàng)建和使用各種 ADO 對象,ADO 對象框架調(diào)用享用的 OLE DB 提供者。為了訪問 SQL Server 數(shù)據(jù)庫,OLE DB 提供了兩種不同的方法:用于 SQL Server 的 OLE DB 提供者以及用于 ODBC 的 OLE DB 提供者。這兩種不同的方法對應(yīng)于兩種不同的連接字符串,標(biāo)準(zhǔn)的連接字符串寫法如下所示:
1、使用用于 SQL Server 的 OLE DB 提供者:
使用 SQL Server 身份驗(yàn)證:
oConn.Open “Provider=sqloledb;” & _ “Data Source=myServerName;” & _ “Initial Catalog=myDatabaseName;” & _ “User Id=myUsername;” & _ “Password=myPassword”
使用 Windows 身份驗(yàn)證(信任連接): oConn.Open “Provider=sqloledb;” & _ “Data Source=myServerName;” & _ “Initial Catalog=myDatabaseName;” & _ “Integrated Security=SSPI”
2、使用用于 ODBC 的 OLE DB 提供者(不使用 ODBC 數(shù)據(jù)源):
使用 SQL Server 身份驗(yàn)證:
oConn.Open “Driver={SQL Server};” & _ “Server=MyServerName;” & _ “Database=myDatabaseName;” & _ “Uid=myUsername;” & _ “Pwd=myPassword”
使用 Windows 身份驗(yàn)證(信任連接): oConn.Open “Driver={SQL Server};” & _ “Server=MyServerName;” & _ “Database=myDatabaseName;” & _ “Trusted_Connection=yes”
3、使用用于 ODBC 的 OLE DB 提供者(使用 ODBC 數(shù)據(jù)源): oConn.Open “DSN=mySystemDSN;” & _ “Uid=myUsername;” & _ “Pwd=myPassword”
如果遇到連接失敗的情況,我們只要按照一中所示的方法,結(jié)合程序中的連接字符串進(jìn)行檢查,基本都能得到解決。另外,還有以下幾個要注意的地方:
1、配置 ODBC 數(shù)據(jù)源時,點(diǎn)擊“客戶端”配置選項(xiàng)可以讓我們指定連接使用的網(wǎng)絡(luò)庫、端口號等屬性,如下圖所示:
2、如果遇到連接超時的錯誤,我們可以在程序中修改 Connection 對象的超時設(shè)置,再打開該連接。例如:
<% Set Conn = Server.CreateObject(“ADODB.Connection”)
DSNtest=“DRIVER={SQL Server};SERVER=ServerName;UID=USER;PWD=password;DATABASE=mydatabase” Conn.Properties(“Connect Timeout”)= 15 '以秒為單位
Conn.open DSNtest
%>
3、如果遇到查詢超時的錯誤,我們可以在程序中修改 Recordset 對象的超時設(shè)置,再打開結(jié)果集。例如:
Dim cn As New ADODB.Connection Dim rs As ADODB.Recordset
...cmd1 = txtQuery.Text Set rs = New ADODB.Recordset rs.Properties(“Command Time Out”)= 300 '同樣以秒為單位,如果設(shè)置為 0 表示無限制
rs.Open cmd1, cn rs.MoveFirst
...三、小結(jié)
本文針對大部分用戶在使用 SQL Server 過程中常見的連接失敗的錯誤,重點(diǎn)討論了在使用 SQL Server 客戶端工具以及用戶開發(fā)的應(yīng)用程序兩種情況下,如何診斷并解決連接失敗的錯誤??催^本文以后,相信每一個讀者都會對 SQL Server 的連接工作原理、身份驗(yàn)證方式以及應(yīng)用程序開發(fā)等有一個較為全面而深入的連接。本文中所有的測試或者示例均在 Windows 2000 Advanced Server + SQL Server 2000 企業(yè)版上通過。
第五篇:visual studio 6.0 link 2001常見錯誤解決總結(jié)
visual studio 6.0 link 2001常見錯誤解決總結(jié)
第一:
nafxcwd.lib(appcore.obj): error LNK2001: unresolved external symbol ___argv
nafxcwd.lib(appcore.obj): error LNK2001: unresolved external symbol ___argc
nafxcwd.lib(timecore.obj): error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(apphelp.obj): error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(filelist.obj): error LNK2001: unresolved external symbol __mbctype
解決辦法:
PROJECT->SETING->C/C++->PREPROCESSOR->定義 _AFXDLL
第二:
解決外部符號錯誤:_main,_WinMain@16,__beginthreadex
在創(chuàng)建MFC項(xiàng)目時, 不使用MFC AppWizard向?qū)? 如果沒有設(shè)置好項(xiàng)目參數(shù), 就會在編譯時產(chǎn)生很多連接錯誤, 如error LNK2001錯誤, 典型的錯誤提示有:
libcmtd.lib(crt0.obj): error LNK2001: unresolved external symbol _main
LIBCD.lib(wincrt0.obj): error LNK2001: unresolved external symbol _WinMain@16
1.Windows子系統(tǒng)設(shè)置錯誤, 提示:
libcmtd.lib(crt0.obj): error LNK2001: unresolved external symbol _main
Windows項(xiàng)目要使用Windows子系統(tǒng), 而不是Console, 可以這樣設(shè)置:
[Project]--> [Settings]--> 選擇“Link”屬性頁,在Project Options中將/subsystem:console改成/subsystem:windows
2.Console子系統(tǒng)設(shè)置錯誤, 提示:
LIBCD.lib(wincrt0.obj): error LNK2001: unresolved external symbol _WinMain@16
控制臺項(xiàng)目要使用Console子系統(tǒng), 而不是Windows, 設(shè)置:
[Project]--> [Settings]--> 選擇“Link”屬性頁,在Project Options中將/subsystem:windows改成/subsystem:console
3.程序入口設(shè)置錯誤, 提示:
msvcrtd.lib(crtexew.obj): error LNK2001: unresolved external symbol _WinMain@16
通常, MFC項(xiàng)目的程序入口函數(shù)是WinMain, 如果編譯項(xiàng)目的Unicode版本, 程序入口必須改為wWinMainCRTStartup, 所以需要重新設(shè)置程序入口:
[Project]--> [Settings]--> 選擇“Link”屬性頁,在Category中選擇Output,再在Entry-point symbol中填入wWinMainCRTStartup, 即可
4.線程運(yùn)行時庫設(shè)置錯誤, 提示:
nafxcwd.lib(thrdcore.obj): error LNK2001: unresolved external symbol __beginthreadexnafxcwd.lib(thrdcore.obj): error LNK2001: unresolved external symbol __endthreadex
這是因?yàn)镸FC要使用多線程時庫, 需要更改設(shè)置:
[Project]--> [Settings]--> 選擇“C/C++”屬性頁,在Category中選擇Code Generation,再在Use run-time library中選擇Debug Multithreaded或者multithreaded
其中,Single-Threaded 單線程靜態(tài)鏈接庫(release版本)
Multithreaded 多線程靜態(tài)鏈接庫(release版本)
multithreaded DLL 多線程動態(tài)鏈接庫(release版本)
Debug Single-Threaded 單線程靜態(tài)鏈接庫(debug版本)
Debug Multithreaded 多線程靜態(tài)鏈接庫(debug版本)
Debug Multithreaded DLL 多線程動態(tài)鏈接庫(debug版本)
單線程: 不需要多線程調(diào)用時, 多用在DOS環(huán)境下
多線程: 可以并發(fā)運(yùn)行
靜態(tài)庫: 直接將庫與程序Link, 可以脫離MFC庫運(yùn)行
動態(tài)庫: 需要相應(yīng)的DLL動態(tài)庫, 程序才能運(yùn)行
release版本: 正式發(fā)布時使用
debug版本: 調(diào)試階段使用
初學(xué)者在學(xué)習(xí)VC++的過程中,遇到的LNK2001錯誤的錯誤消息主要為:
unresolved external symbol “symbol”(不確定的外部“符號”)。
如果連接程序不能在所有的庫和目標(biāo)文件內(nèi)找到所引用的函數(shù)、變量或標(biāo)簽,將產(chǎn)生此錯誤消息。一般來說,發(fā)生錯誤的原因有兩個:一是所引用的函數(shù)、變量不存在、拼寫不正確或者使用錯誤;其次可能使用了不同版本的連接庫。
以下是可能產(chǎn)生LNK2001錯誤的原因:
一.由于編碼錯誤導(dǎo)致的LNK200
11.不相匹配的程序代碼或模塊定義(.DEF)文件能導(dǎo)致LNK2001。例如, 如果在C++源文件內(nèi)聲明了一變量“var1”,卻試圖在另一文件內(nèi)以變量“VAR1”訪問該變量,將發(fā)生該錯誤。
2.如果使用的內(nèi)聯(lián)函數(shù)是在.CPP文件內(nèi)定義的,而不是在頭文件內(nèi)定義將導(dǎo)致LNK2001錯誤。
3.調(diào)用函數(shù)時如果所用的參數(shù)類型同函數(shù)聲明時的類型不符將會產(chǎn)生LNK2001。
4.試圖從基類的構(gòu)造函數(shù)或析構(gòu)函數(shù)中調(diào)用虛擬函數(shù)時將會導(dǎo)致LNK2001。
5.要注意函數(shù)和變量的可公用性,只有全局變量、函數(shù)是可公用的。靜態(tài)函數(shù)和靜態(tài)變量具有相同的使用范圍限制。當(dāng)試圖從文件外部訪問任何沒有在該文件內(nèi)聲明的靜態(tài)變量時將導(dǎo)致編譯錯誤或LNK2001。
函數(shù)內(nèi)聲明的變量(局部變量)只能在該函數(shù)的范圍內(nèi)使用。
C++ 的全局常量只有靜態(tài)連接性能。這不同于C,如果試圖在C++的多個文件內(nèi)使用全局變量也會產(chǎn)生LNK2001錯誤。一種解決的方法是需要時在頭文件中加入該常量的初始化代碼,并在.CPP文件中包含該頭文件;另一種方法是使用時給該變量賦以常數(shù)。
二.由于編譯和鏈接的設(shè)置而造成的LNK2001
1.如果編譯時使用的是/NOD(/NODEFAULTLIB)選項(xiàng),程序所需要的運(yùn)行庫和MFC庫在連接時由編譯器寫入目標(biāo)文件模塊,但除非在文件中明確包含這些庫名,否則這些庫不會被鏈接進(jìn)工程文件。在這種情況下使用/NOD將導(dǎo)致錯誤LNK2001。
2.如果沒有為wWinMainCRTStartup設(shè)定程序入口,在使用Unicode和MFC時將得到“unresolved external on _WinMain@16”的LNK2001錯誤信息。
3.使用/MD選項(xiàng)編譯時,既然所有的運(yùn)行庫都被保留在動態(tài)鏈接庫之內(nèi),源文件中對“func”的引用,在目標(biāo)文件里即對“__imp__func” 的引用。如果試圖使用靜態(tài)庫LIBC.LIB或LIBCMT.LIB進(jìn)行連接,將在__imp__func上發(fā)生LNK2001;如果不使用/MD選項(xiàng)編譯,在使用MSVCxx.LIB連接時也會發(fā)生LNK2001。
4.使用/ML選項(xiàng)編譯時,如用LIBCMT.LIB鏈接會在_errno上發(fā)生LNK2001。
5.當(dāng)編譯調(diào)試版的應(yīng)用程序時,如果采用發(fā)行版模態(tài)庫進(jìn)行連接也會產(chǎn)生LNK2001;同樣,使用調(diào)試版模態(tài)庫連接發(fā)行版應(yīng)用程序時也會產(chǎn)生相同的問題。
6.不同版本的庫和編譯器的混合使用也能產(chǎn)生問題,因?yàn)樾掳娴膸炖锟赡馨缦鹊陌姹緵]有的符號和說明。
編程時打開了函數(shù)內(nèi)聯(lián)(/Ob1或/Ob2),但是在描述該函數(shù)的相應(yīng)頭文件里卻關(guān)閉了函數(shù)內(nèi)聯(lián)(沒有inline關(guān)鍵字),這時將得到該錯誤信息。為避免該問題的發(fā)生,應(yīng)該在相應(yīng)的頭文件中用inline關(guān)鍵字標(biāo)志內(nèi)聯(lián)函數(shù)。
8.不正確的/SUBSYSTEM或/ENTRY設(shè)置也能導(dǎo)致LNK2001。
LINK : fatal error LNK1117: syntax error in option “subsystem:windows/incremental:yes” 解決方法:刪掉incremental:yes
vc編譯報(bào)錯 unresolved external symbol __imp__PlaySoundA@12 解決辦法 添加Winmm.lib和 頭文件中包含 Mmsystem.h
選擇“project”->“setting”->“l(fā)ink”->“Object/librarymodules”然后添加“Winmm.lib”就可以了。