SQL Server數(shù)據(jù)庫連接失敗錯誤及解決方法_第1頁
SQL Server數(shù)據(jù)庫連接失敗錯誤及解決方法_第2頁
SQL Server數(shù)據(jù)庫連接失敗錯誤及解決方法_第3頁
SQL Server數(shù)據(jù)庫連接失敗錯誤及解決方法_第4頁
SQL Server數(shù)據(jù)庫連接失敗錯誤及解決方法_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、sql server數(shù)據(jù)庫連接失敗錯誤及解決方法在使用 sql server 的過程中,用戶遇到的最多的問題莫過于連接失敗了。一般而言,有以下兩種連接 sql server 的方式,一是利用 sql server 自帶的客戶端工具,如企業(yè)管理器、查詢分析器、事務(wù)探查器等;二是利用用戶自己開發(fā)的客戶端程序,如asp 腳本、vb程序等,客戶端程序中又是利用 odbc 或者 ole db 等連接 sql server。下面,我們將就這兩種連接方式,具體談?wù)勅绾蝸斫鉀Q連接失敗的問題。一、客戶端工具連接失敗 在使用 sql server 自帶的客戶端工具(以企業(yè)管理器為例)連接 sql server時,

2、最常見的錯誤有如下一些: 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ò)物

3、理連接: ping 或者 ping 如果 ping 失敗,說明物理連接有問題,這時候要檢查硬件設(shè)備,如網(wǎng)卡、hub、路由器等。還有一種可能是由于客戶端和服務(wù)器之間安裝有防火墻軟件造成的,比如 isa server。防火墻軟件可能會屏蔽對 ping、telnet 等的響應(yīng),因此在檢查連接問題的時候,我們要先把防火墻軟件暫時關(guān)閉,或者打開所有被封閉的端口。 如果ping 成功而 ping 失敗,則說明名字解析有問題,這時候要檢查 dns 服務(wù)是否正常。有時候客戶端和服務(wù)器不在同一個局域網(wǎng)里面,這時候很可能無法直接使用服務(wù)器名稱來標(biāo)識該服務(wù)器,這時候我們可以使用hosts文件來進行名字解析,具體的方

4、法是: 1、使用記事本打開hosts文件(一般情況下位于c:winntsystem32driversetc). 2、添加一條ip地址與服務(wù)器名稱的對應(yīng)記錄,如: 4 myserver 也可以在 sql server 的客戶端網(wǎng)絡(luò)實用工具里面進行配置,后面會有詳細(xì)說明。 其次,使用 telnet 命令檢查sql server服務(wù)器工作狀態(tài): telnet 1433 如果命令執(zhí)行成功,可以看到屏幕一閃之后光標(biāo)在左上角不停閃動,這說明 sql server 服務(wù)器工作正常,并且正在監(jiān)聽1433端口的 tcp/ip 連接;如果命令返回?zé)o法打開連接的錯誤信息,則說明服務(wù)器端沒有啟

5、動 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ò)使用工具來進行檢查。點擊:程序 - microsoft sql server - 服務(wù)器網(wǎng)絡(luò)使用工具,打開該工具后看到的畫面如下圖所示: 從這里我們可以看到服務(wù)器啟用了哪些協(xié)議。一般而言,我們啟用命名管道以及 tcp/ip 協(xié)議。 點中 tcp/ip 協(xié)議,選擇屬性,我們可以來檢查 sqk serv

6、er 服務(wù)默認(rèn)端口的設(shè)置,如下圖所示: 一般而言,我們使用 sql server 默認(rèn)的1433端口。如果選中隱藏服務(wù)器,則意味著客戶端無法通過枚舉服務(wù)器來看到這臺服務(wù)器,起到了保護的作用,但不影響連接。 檢查完了服務(wù)器端的網(wǎng)絡(luò)配置,接下來我們要到客戶端檢查客戶端的網(wǎng)絡(luò)配置。我們同樣可以利用 sql server 自帶的客戶端網(wǎng)絡(luò)使用工具來進行檢查,所不同的是這次是在客戶端來運行這個工具。 點擊:程序 - microsoft sql server - 客戶端網(wǎng)絡(luò)使用工具, 打開該工具后看到的畫面如下圖所示: 從這里我們可以看到客戶端啟用了哪些協(xié)議。一般而言,我們同樣需要啟用命名管道以及 tcp

7、/ip 協(xié)議。 點擊 tcp/ip 協(xié)議,選擇屬性,可以檢查客戶端默認(rèn)連接端口的設(shè)置,如下圖所示。 該端口必須與服務(wù)器一致。 單擊別名選項卡,還可以為服務(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è)管理器

8、里面使用sa來新建一個sql server注冊時,經(jīng)常會遇到如圖 2 所示的錯誤信息。該錯誤產(chǎn)生的原因是由于sql server使用了僅 windows的身份驗證方式,因此用戶無法使用sql server的登錄帳戶(如 sa )進行連接。解決方法如下所示: 1、 在服務(wù)器端使用企業(yè)管理器,并且選擇使用 windows 身份驗證連接上 sql server; 2、 展開sql server組,鼠標(biāo)右鍵點擊sql server服務(wù)器的名稱,選擇屬性,再選擇安全性選項卡; 3、 在身份驗證下,選擇sql server和 windows 。 4、 重新啟動sql server服務(wù)。 在以上解決方法中,

9、如果在第 1 步中使用使用 windows 身份驗證連接 sql server 失敗,那么我們將遇到一個兩難的境地:首先,服務(wù)器只允許了 windows 的身份驗證;其次,即使使用了 windows 身份驗證仍然無法連接上服務(wù)器。這種情形被形象地稱之為自己把自己鎖在了門外,因為無論用何種方式,用戶均無法使用進行連接。實際上,我們可以通過修改一個注冊表鍵值來將身份驗證方式改為 sql server 和 windows 混合驗證,步驟如下所示: 1、點擊開始-運行,輸入regedit,回車進入注冊表編輯器; 2、依次展開注冊表項,瀏覽到以下注冊表鍵: hkey_local_machinesoftw

10、aremicrosoftmssqlservermssqlserver 3、在屏幕右方找到名稱loginmode,雙擊編輯雙字節(jié)值; 4、將原值從1改為2,點擊確定; 5、關(guān)閉注冊表編輯器; 6、重新啟動sql server服務(wù)。 此時,用戶可以成功地使用sa在企業(yè)管理器中新建sql server注冊,但是仍然無法使用windows身份驗證模式來連接sql server。這是因為在 sql server 中有兩個缺省的登錄帳戶:builtinadministrators 以及 administrator 被刪除。要恢復(fù)這兩個帳戶,可以使用以下的方法: 1、打開企業(yè)管理器,展開服務(wù)器組,然后展開服

11、務(wù)器; 2、展開安全性,右擊登錄,然后單擊新建登錄; 3、在名稱框中,輸入 builtinadministrators; 4、在服務(wù)器角色選項卡中,選擇system administrators ; 5、點擊確定退出; 6、使用同樣方法添加 administrator 登錄。以下注冊表鍵hkey_local_machinesoftwaremicrosoftmssqlservermssqlserverloginmode 的值決定了sql server將采取何種身份驗證模式。該值為1,表示使用windows 身份驗證模式;該值為2,表示使用混合模式(windows 身份驗證和 sql server

12、 身份驗證)。 看完如何解決前兩個錯誤的方法之后,讓我們來看一下如圖 3 所示的第三個錯誤。 如果遇到第三個錯誤,一般而言表示客戶端已經(jīng)找到了這臺服務(wù)器,并且可以進行連接,不過是由于連接的時間大于允許的時間而導(dǎo)致出錯。這種情況一般會發(fā)生在當(dāng)用戶在internet上運行企業(yè)管理器來注冊另外一臺同樣在internet上的服務(wù)器,并且是慢速連接時,有可能會導(dǎo)致以上的超時錯誤。有些情況下,由于局域網(wǎng)的網(wǎng)絡(luò)問題,也會導(dǎo)致這樣的錯誤。 要解決這樣的錯誤,可以修改客戶端的連接超時設(shè)置。默認(rèn)情況下,通過企業(yè)管理器注冊另外一臺sql server的超時設(shè)置是 4 秒,而查詢分析器是 15 秒(這也是為什么在企業(yè)

13、管理器里發(fā)生錯誤的可能性比較大的原因)。具體步驟為: 1、在企業(yè)管理器中,選擇菜單上的工具,再選擇選項; 2、在彈出的sql server企業(yè)管理器屬性窗口中,點擊高級選項卡; 3、在連接設(shè)置下的登錄超時(秒)右邊的框中輸入一個比較大的數(shù)字,如 20。 查詢分析器中也可以在同樣位置進行設(shè)置。 二、應(yīng)用程序連接失敗 以上的三種錯誤信息都是發(fā)生在 sql server 自帶的客戶端工具中,在應(yīng)用程序中我們也會遇到類似的錯誤信息,例如: microsoft ole db provider for sql server (0x80004005)dbnetlibconnectionopen (conne

14、ct().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.microsoftodbc sql server driver超時已過期. 首先,讓我們來詳細(xì)看以下的示意圖來了解一下使用 odbc 和使用 ole db 連接 sql server 有什么不同之處。 從上圖中,我們可以看出在實際使用

15、中,應(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 身份驗證: oconn.open provider=sqloledb; & _ data source=myservername; & _initial catalo

16、g=mydatabasename; & _user id=myusername; & _password=mypassword 使用 windows 身份驗證(信任連接): oconn.open provider=sqloledb; & _data source=myservername; & _initial catalog=mydatabasename; & _integrated security=sspi 2、使用用于 odbc 的 ole db 提供者(不使用 odbc 數(shù)據(jù)源): 使用 sql server 身份驗證: oconn.open driver=sql server; &

17、 _ server=myservername; & _database=mydatabasename; & _uid=myusername; & _pwd=mypassword 使用 windows 身份驗證(信任連接): oconn.open driver=sql server; & _ server=myservername; & _database=mydatabasename; & _trusted_connection=yes 3、使用用于 odbc 的 ole db 提供者(使用 odbc 數(shù)據(jù)源): oconn.open dsn=mysystemdsn; & _ uid=myus

18、ername; & _ pwd=mypassword 如果遇到連接失敗的情況,我們只要按照一中所示的方法,結(jié)合程序中的連接字符串進行檢查,基本都能得到解決。另外,還有以下幾個要注意的地方: 1、配置 odbc 數(shù)據(jù)源時,點擊客戶端配置選項可以讓我們指定連接使用的網(wǎng)絡(luò)庫、端口號等屬性,如下圖所示: 2、如果遇到連接超時的錯誤,我們可以在程序中修改 connection 對象的超時設(shè)置,再打開該連接。例如: 3、如果遇到查詢超時的錯誤,我們可以在程序中修改 recordset 對象的超時設(shè)置,再打開結(jié)果集。例如: dim cn as new adodb.connectiondim rs as ad

19、odb.recordset. . . cmd1 = txtquery.textset rs = new adodb.recordsetrs.properties(command time out) = 300同樣以秒為單位,如果設(shè)置為 0 表示無限制rs.open cmd1, cnrs.movefirst. . . 三、小結(jié) 本文針對大部分用戶在使用 sql server 過程中常見的連接失敗的錯誤,重點討論了在使用 sql server 客戶端工具以及用戶開發(fā)的應(yīng)用程序兩種情況下,如何診斷并解決連接失敗的錯誤。看過本文以后,相信每一個讀者都會對 sql server 的連接工作原理、身份驗證

20、方式以及應(yīng)用程序開發(fā)等有一個較為全面而深入的連接。本文中所有的測試或者示例均在 windows 2000 advanced server + sql server 2000 企業(yè)版上通過。如何打開1433端口的解決方法這篇文章主要針對win2003系統(tǒng)安裝sql sever2000后1433端口未開放,如何打開1433端口的解決方法。用了幾年的windows2003和sql server2000了,不過這個問題倒是頭次遇到。最近調(diào)試一個jsp+sql2000web程序遇到個現(xiàn)象,在win2003簡體中文服務(wù)器版上安裝sql server2000,默認(rèn)安裝,一切正常,但是在安裝完成后tomcat

21、運行正常,jsp程序卻無法連接sql2000數(shù)據(jù)庫,查看端口,1433端口居然未開放,當(dāng)然更不用說遠(yuǎn)程連接了。一般分析的都是這樣:1、sql server服務(wù)沒有啟動;檢查服務(wù)啟動,重新啟動服務(wù)故障依然。2、修改了端口號;打開網(wǎng)絡(luò)實用工具,檢查啟用的協(xié)議中有tcp/ip協(xié)議,查看端口,是1433沒錯。3、客戶端實用工具作了改動;打開客戶端實用工具,檢查協(xié)議端口正常,重新創(chuàng)建一個別名,依然不行。4、安裝的問題;懷疑安裝步驟有問題。遂卸載重裝,一切默認(rèn),故障依然。5、安裝版本的問題;查看安裝光盤,是久經(jīng)考驗的安裝盤,應(yīng)該不會出問題。6、系統(tǒng)的問題;也看不出有什么其它的問題,難道是系統(tǒng)的問題?不過重

22、裝系統(tǒng)可太過麻煩,還是先想想其它的辦法,看能不能找到問題所在。檢查系統(tǒng)日志,這個應(yīng)該是一個比較好的習(xí)慣。仔細(xì)翻了一遍重新安裝后的日志,赫然發(fā)現(xiàn)如下內(nèi)容:您運行的 microsoft sql server 2000 版本或 microsoft sql server 2000 desktop engine (也稱為 msde) 和microsoft windows server 2003 家族使用時存在已知的安全弱點。為了減少計算機被某些病毒的攻擊,microsoft sql server 2000,msde 或 兩者的 tcp/ip 和 udp 網(wǎng)絡(luò)端口被禁用。要啟用這些端口,您必須從 www.

23、/sql/downloads/default.asp 或 /china/sql/downloads/default.asp安裝一個修補程序, 或 microsoft sql server 2000 或 msde 的最新服務(wù)包。/downloads/details.aspx?familyid=8e2dfc8d-c20e-4446-99a9-b7f0213f8bc5&displaylang=en有關(guān)更多信息,請參閱在 /fwlink/events.asp 的幫助

24、和支持終于找到問題了,原來是windows的一個小小的安全考慮。那么為什么以前就沒遇到過呢,原來搞慣安全的人,安裝好sql以后,在使用前一定會先修補漏洞,所以一直未注意過這個問題。看來什么樣的習(xí)慣都會有一些弊端!既然找到問題就簡單了,立刻到微軟網(wǎng)站:/downloads/details.aspx?displaylang=zh-cn&familyid=8e2dfc8d-c20e-4446-99a9-b7f0213f8bc5下載sp4的“數(shù)據(jù)庫組件(下載文件:sql2000-kb884525-sp4-x86.exe)”安裝sql server sp4后

25、,瀏覽器地址欄測試www.it一切正常。附:遠(yuǎn)程連接sql server 2000服務(wù)器的解決方案解決方案步驟:一 看ping 服務(wù)器ip能否ping通。這個實際上是看和遠(yuǎn)程sql server 2000服務(wù)器的物理連接是否存在。如果不行,請檢查網(wǎng)絡(luò),查看配置,當(dāng)然得確保遠(yuǎn)程sql server 2000服務(wù)器的ip拼寫正確。二 在dos或命令行下輸入telnet 服務(wù)器ip 端口,看能否連通。如telnet 00 1433通常端口值是1433,因為1433是sql server 2000的對于tcp/ip的默認(rèn)偵聽端口。如果有問題,通常這一步會出問題

26、。通常的提示是“無法打開連接,連接失敗”。如果這一步有問題,應(yīng)該檢查以下選項。1 檢查遠(yuǎn)程服務(wù)器是否啟動了sql server 2000服務(wù)。如果沒有,則啟動。2 檢查服務(wù)器端有沒啟用tcp/ip協(xié)議,因為遠(yuǎn)程連接(通過因特網(wǎng))需要靠這個協(xié)議。檢查方法是,在服務(wù)器上打開開始菜單-程序-microsoft sql server-服務(wù)器網(wǎng)絡(luò)實用工具,看啟用的協(xié)議里是否有tcp/ip協(xié)議,如果沒有,則啟用它。3 檢查服務(wù)器的tcp/ip端口是否配置為1433端口。仍然在服務(wù)器網(wǎng)絡(luò)實用工具里查看啟用協(xié)議里面的tcp/ip的屬性,確保默認(rèn)端口為1433,并且隱藏服務(wù)器復(fù)選框沒有勾上。事實上,如果默認(rèn)端口

27、被修改,也是可以的,但是在客戶端做telnet測試時,寫服務(wù)器端口號時必須與服務(wù)器配置的端口號保持一致。如果隱藏服務(wù)器復(fù)選框被勾選,則意味著客戶端無法通過枚舉服務(wù)器來看到這臺服務(wù)器,起到了保護的作用,但不影響連接,但是tcp/ip協(xié)議的默認(rèn)端口將被隱式修改為2433,在客戶端連接時必須作相應(yīng)的改變。4 如果服務(wù)器端操作系統(tǒng)打過sp2補丁,則要對windows防火墻作一定的配置,要對它開放1433端口,通常在測試時可以直接關(guān)掉windows防火墻(其他的防火墻也關(guān)掉最好)。5 檢查服務(wù)器是否在1433端口偵聽。如果服務(wù)器沒有在tcp連接的1433端口偵聽,則是連接不上的。檢查方法是在服務(wù)器的dos或命令行下面輸入 netstat -a -n 或者是netstat -an,在結(jié)果列表里看是否有類似 tcp 1433 listening 的項。如果沒有,則通常需要給sql server 2000打上至少sp3的補丁。其實在服務(wù)器端啟動查詢分析器,輸入 select version 執(zhí)行后可以看到版本號,版本號在8.0.2039以下的都需要打補丁。如果以上都沒問題,這時你再做telnet 服務(wù)器ip 1433 測試,將會看到屏幕一閃之后光標(biāo)在左上角不停閃動。恭喜你,你

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論