




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、SQL Server數據庫連接失敗錯誤及解決方法在使用 SQL Server 的過程中,用戶遇到的最多的問題莫過于連接失敗了。一般而言,有以下兩種連接 SQL Server 的方式,一是利用 SQL Server 自帶的客戶端工具,如企業管理器、查詢分析器、事務探查器等;二是利用用戶自己開發的客戶端程序,如ASP 腳本、VB程序等,客戶端程序中又是利用 ODBC 或者 OLE DB 等連接 SQL Server。下面,我們將就這兩種連接方式,具體談談如何來解決連接失敗的問題。一、客戶端工具連接失敗 在使用 SQL Server 自帶的客戶端工具(以企業管理器為例)連接 SQL Server時,
2、最常見的錯誤有如下一些: 1、SQL Server 不存在或訪問被拒絕 ConnectionOpen (Connect() 2、用戶sa登錄失敗。原因:未與信任 SQL Server 連接相關聯。 3、超時已過期。 下面我們依次介紹如何來解決這三個最常見的連接錯誤。 第一個錯誤SQL Server 不存在或訪問被拒絕通常是最復雜的,錯誤發生的原因比較多,需要檢查的方面也比較多。一般說來,有以下幾種可能性: 1、SQL Server名稱或IP地址拼寫有誤; 2、服務器端網絡配置有誤; 3、客戶端網絡配置有誤。 要解決這個問題,我們一般要遵循以下的步驟來一步步找出導致錯誤的原因。 首先,檢查網絡物
3、理連接: ping 或者 ping 如果 ping 失敗,說明物理連接有問題,這時候要檢查硬件設備,如網卡、HUB、路由器等。還有一種可能是由于客戶端和服務器之間安裝有防火墻軟件造成的,比如 ISA Server。防火墻軟件可能會屏蔽對 ping、telnet 等的響應,因此在檢查連接問題的時候,我們要先把防火墻軟件暫時關閉,或者打開所有被封閉的端口。 如果ping 成功而 ping 失敗,則說明名字解析有問題,這時候要檢查 DNS 服務是否正常。有時候客戶端和服務器不在同一個局域網里面,這時候很可能無法直接使用服務器名稱來標識該服務器,這時候我們可以使用HOSTS文件來進行名字解析,具體的方
4、法是: 1、使用記事本打開HOSTS文件(一般情況下位于C:WINNTsystem32driversetc). 2、添加一條IP地址與服務器名稱的對應記錄,如: 4 myserver 也可以在 SQL Server 的客戶端網絡實用工具里面進行配置,后面會有詳細說明。 其次,使用 telnet 命令檢查SQL Server服務器工作狀態: telnet 1433 如果命令執行成功,可以看到屏幕一閃之后光標在左上角不停閃動,這說明 SQL Server 服務器工作正常,并且正在監聽1433端口的 TCP/IP 連接;如果命令返回無法打開連接的錯誤信息,則說明服務器端沒有啟
5、動 SQL Server 服務,也可能服務器端沒啟用 TCP/IP 協議,或者服務器端沒有在 SQL Server 默認的端口1433上監聽。接著,我們要到服務器上檢查服務器端的網絡配置,檢查是否啟用了命名管道,是否啟用了 TCP/IP 協議等等。我們可以利用 SQL Server 自帶的服務器網絡使用工具來進行檢查。點擊:程序 - Microsoft SQL Server - 服務器網絡使用工具,打開該工具后看到的畫面如下圖所示: 從這里我們可以看到服務器啟用了哪些協議。一般而言,我們啟用命名管道以及 TCP/IP 協議。 點中 TCP/IP 協議,選擇屬性,我們可以來檢查 SQK Serv
6、er 服務默認端口的設置,如下圖所示: 一般而言,我們使用 SQL Server 默認的1433端口。如果選中隱藏服務器,則意味著客戶端無法通過枚舉服務器來看到這臺服務器,起到了保護的作用,但不影響連接。 檢查完了服務器端的網絡配置,接下來我們要到客戶端檢查客戶端的網絡配置。我們同樣可以利用 SQL Server 自帶的客戶端網絡使用工具來進行檢查,所不同的是這次是在客戶端來運行這個工具。 點擊:程序 - Microsoft SQL Server - 客戶端網絡使用工具, 打開該工具后看到的畫面如下圖所示: 從這里我們可以看到客戶端啟用了哪些協議。一般而言,我們同樣需要啟用命名管道以及 TCP
7、/IP 協議。 點擊 TCP/IP 協議,選擇屬性,可以檢查客戶端默認連接端口的設置,如下圖所示。 該端口必須與服務器一致。 單擊別名選項卡,還可以為服務器配置別名。服務器的別名是用來連接的名稱,連接參數中的服務器是真正的服務器名稱,兩者可以相同或不同。如下圖中,我們可以使用myserver來代替真正的服務器名稱sql2kcn-02,并且使用網絡庫 Named Pipes。別名的設置與使用HOSTS文件有相似之處。 通過以上幾個方面的檢查,錯誤 1 發生的原因基本上可以被排除。下面我們再詳細描述如何來解決錯誤 2。 當用戶嘗試在查詢分析器里面使用sa來連接SQL Server,或者在企業管理器
8、里面使用sa來新建一個SQL Server注冊時,經常會遇到如圖 2 所示的錯誤信息。該錯誤產生的原因是由于SQL Server使用了僅 Windows的身份驗證方式,因此用戶無法使用SQL Server的登錄帳戶(如 sa )進行連接。解決方法如下所示: 1、 在服務器端使用企業管理器,并且選擇使用 Windows 身份驗證連接上 SQL Server; 2、 展開SQL Server組,鼠標右鍵點擊SQL Server服務器的名稱,選擇屬性,再選擇安全性選項卡; 3、 在身份驗證下,選擇SQL Server和 Windows 。 4、 重新啟動SQL Server服務。 在以上解決方法中,
9、如果在第 1 步中使用使用 Windows 身份驗證連接 SQL Server 失敗,那么我們將遇到一個兩難的境地:首先,服務器只允許了 Windows 的身份驗證;其次,即使使用了 Windows 身份驗證仍然無法連接上服務器。這種情形被形象地稱之為自己把自己鎖在了門外,因為無論用何種方式,用戶均無法使用進行連接。實際上,我們可以通過修改一個注冊表鍵值來將身份驗證方式改為 SQL Server 和 Windows 混合驗證,步驟如下所示: 1、點擊開始-運行,輸入regedit,回車進入注冊表編輯器; 2、依次展開注冊表項,瀏覽到以下注冊表鍵: HKEY_LOCAL_MACHINESOFTW
10、AREMicrosoftMSSQLServerMSSQLServer 3、在屏幕右方找到名稱LoginMode,雙擊編輯雙字節值; 4、將原值從1改為2,點擊確定; 5、關閉注冊表編輯器; 6、重新啟動SQL Server服務。 此時,用戶可以成功地使用sa在企業管理器中新建SQL Server注冊,但是仍然無法使用Windows身份驗證模式來連接SQL Server。這是因為在 SQL Server 中有兩個缺省的登錄帳戶:BUILTINAdministrators 以及 Administrator 被刪除。要恢復這兩個帳戶,可以使用以下的方法: 1、打開企業管理器,展開服務器組,然后展開服
11、務器; 2、展開安全性,右擊登錄,然后單擊新建登錄; 3、在名稱框中,輸入 BUILTINAdministrators; 4、在服務器角色選項卡中,選擇System Administrators ; 5、點擊確定退出; 6、使用同樣方法添加 Administrator 登錄。以下注冊表鍵HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerMSSQLServerLoginMode 的值決定了SQL Server將采取何種身份驗證模式。該值為1,表示使用Windows 身份驗證模式;該值為2,表示使用混合模式(Windows 身份驗證和 SQL Server
12、 身份驗證)。 看完如何解決前兩個錯誤的方法之后,讓我們來看一下如圖 3 所示的第三個錯誤。 如果遇到第三個錯誤,一般而言表示客戶端已經找到了這臺服務器,并且可以進行連接,不過是由于連接的時間大于允許的時間而導致出錯。這種情況一般會發生在當用戶在Internet上運行企業管理器來注冊另外一臺同樣在Internet上的服務器,并且是慢速連接時,有可能會導致以上的超時錯誤。有些情況下,由于局域網的網絡問題,也會導致這樣的錯誤。 要解決這樣的錯誤,可以修改客戶端的連接超時設置。默認情況下,通過企業管理器注冊另外一臺SQL Server的超時設置是 4 秒,而查詢分析器是 15 秒(這也是為什么在企業
13、管理器里發生錯誤的可能性比較大的原因)。具體步驟為: 1、在企業管理器中,選擇菜單上的工具,再選擇選項; 2、在彈出的SQL Server企業管理器屬性窗口中,點擊高級選項卡; 3、在連接設置下的登錄超時(秒)右邊的框中輸入一個比較大的數字,如 20。 查詢分析器中也可以在同樣位置進行設置。 二、應用程序連接失敗 以上的三種錯誤信息都是發生在 SQL Server 自帶的客戶端工具中,在應用程序中我們也會遇到類似的錯誤信息,例如: 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 連接相關聯。 Microsoft OLE DB Provider for ODBC Drivers 錯誤 80004005.MicrosoftODBC SQL Server Driver超時已過期. 首先,讓我們來詳細看以下的示意圖來了解一下使用 ODBC 和使用 OLE DB 連接 SQL Server 有什么不同之處。 從上圖中,我們可以看出在實際使用
15、中,應用程序創建和使用各種 ADO 對象,ADO 對象框架調用享用的 OLE DB 提供者。為了訪問 SQL Server 數據庫,OLE DB 提供了兩種不同的方法:用于 SQL Server 的 OLE DB 提供者以及用于 ODBC 的 OLE DB 提供者。這兩種不同的方法對應于兩種不同的連接字符串,標準的連接字符串寫法如下所示: 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 數據源): 使用 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 數據源): oConn.Open DSN=mySystemDSN; & _ Uid=myUs
18、ername; & _ Pwd=myPassword 如果遇到連接失敗的情況,我們只要按照一中所示的方法,結合程序中的連接字符串進行檢查,基本都能得到解決。另外,還有以下幾個要注意的地方: 1、配置 ODBC 數據源時,點擊客戶端配置選項可以讓我們指定連接使用的網絡庫、端口號等屬性,如下圖所示: 2、如果遇到連接超時的錯誤,我們可以在程序中修改 Connection 對象的超時設置,再打開該連接。例如: 3、如果遇到查詢超時的錯誤,我們可以在程序中修改 Recordset 對象的超時設置,再打開結果集。例如: Dim cn As New ADODB.ConnectionDim rs As AD
19、ODB.Recordset. . . cmd1 = txtQuery.TextSet rs = New ADODB.Recordsetrs.Properties(Command Time Out) = 300同樣以秒為單位,如果設置為 0 表示無限制rs.Open cmd1, cnrs.MoveFirst. . . 三、小結 本文針對大部分用戶在使用 SQL Server 過程中常見的連接失敗的錯誤,重點討論了在使用 SQL Server 客戶端工具以及用戶開發的應用程序兩種情況下,如何診斷并解決連接失敗的錯誤。看過本文以后,相信每一個讀者都會對 SQL Server 的連接工作原理、身份驗證
20、方式以及應用程序開發等有一個較為全面而深入的連接。本文中所有的測試或者示例均在 Windows 2000 Advanced Server + SQL Server 2000 企業版上通過。如何打開1433端口的解決方法這篇文章主要針對Win2003系統安裝SQL Sever2000后1433端口未開放,如何打開1433端口的解決方法。用了幾年的Windows2003和SQL Server2000了,不過這個問題倒是頭次遇到。最近調試一個JSP+SQL2000WEB程序遇到個現象,在Win2003簡體中文服務器版上安裝SQL Server2000,默認安裝,一切正常,但是在安裝完成后Tomcat
21、運行正常,JSP程序卻無法連接SQL2000數據庫,查看端口,1433端口居然未開放,當然更不用說遠程連接了。一般分析的都是這樣:1、sql server服務沒有啟動;檢查服務啟動,重新啟動服務故障依然。2、修改了端口號;打開網絡實用工具,檢查啟用的協議中有TCP/IP協議,查看端口,是1433沒錯。3、客戶端實用工具作了改動;打開客戶端實用工具,檢查協議端口正常,重新創建一個別名,依然不行。4、安裝的問題;懷疑安裝步驟有問題。遂卸載重裝,一切默認,故障依然。5、安裝版本的問題;查看安裝光盤,是久經考驗的安裝盤,應該不會出問題。6、系統的問題;也看不出有什么其它的問題,難道是系統的問題?不過重
22、裝系統可太過麻煩,還是先想想其它的辦法,看能不能找到問題所在。檢查系統日志,這個應該是一個比較好的習慣。仔細翻了一遍重新安裝后的日志,赫然發現如下內容:您運行的 Microsoft SQL Server 2000 版本或 Microsoft SQL Server 2000 Desktop Engine (也稱為 MSDE) 和Microsoft Windows Server 2003 家族使用時存在已知的安全弱點。為了減少計算機被某些病毒的攻擊,Microsoft SQL Server 2000,MSDE 或 兩者的 TCP/IP 和 UDP 網絡端口被禁用。要啟用這些端口,您必須從 或 安裝
23、一個修補程序, 或 Microsoft SQL Server 2000 或 MSDE 的最新服務包。有關更多信息,請參閱在 的幫助和支持終于找到問題了,原來是Windows的一個小小的安全考慮。那么為什么以前就沒遇到過呢,原來搞慣安全的人,安裝好sql以后,在使用前一定會先修補漏洞,所以一直未注意過這個問題。看來什么樣的習慣都會有一些弊端!既然找到問題就簡單了,立刻到微軟網站:displaylang=zh-cn&FamilyID=8E2DFC8D-C20E-4446-99A9-B7F0213F8BC5下載SP4的“數據庫組件(下載文件:SQL2000-KB884525-SP4-x86.EXE)
24、”安裝SQL Server SP4后,瀏覽器地址欄測試www.IT一切正常。附:遠程連接sql server 2000服務器的解決方案解決方案步驟:一 看ping 服務器IP能否ping通。這個實際上是看和遠程sql server 2000服務器的物理連接是否存在。如果不行,請檢查網絡,查看配置,當然得確保遠程sql server 2000服務器的IP拼寫正確。二 在Dos或命令行下輸入telnet 服務器IP 端口,看能否連通。如telnet 00 1433通常端口值是1433,因為1433是sql server 2000的對于Tcp/IP的默認偵聽端口。如果有問題
25、,通常這一步會出問題。通常的提示是“無法打開連接,連接失敗”。如果這一步有問題,應該檢查以下選項。1 檢查遠程服務器是否啟動了sql server 2000服務。如果沒有,則啟動。2 檢查服務器端有沒啟用Tcp/IP協議,因為遠程連接(通過因特網)需要靠這個協議。檢查方法是,在服務器上打開開始菜單-程序-Microsoft SQL Server-服務器網絡實用工具,看啟用的協議里是否有tcp/ip協議,如果沒有,則啟用它。3 檢查服務器的tcp/ip端口是否配置為1433端口。仍然在服務器網絡實用工具里查看啟用協議里面的tcp/ip的屬性,確保默認端口為1433,并且隱藏服務器復選框沒有勾上。
26、事實上,如果默認端口被修改,也是可以的,但是在客戶端做telnet測試時,寫服務器端口號時必須與服務器配置的端口號保持一致。如果隱藏服務器復選框被勾選,則意味著客戶端無法通過枚舉服務器來看到這臺服務器,起到了保護的作用,但不影響連接,但是Tcp/ip協議的默認端口將被隱式修改為2433,在客戶端連接時必須作相應的改變。4 如果服務器端操作系統打過sp2補丁,則要對windows防火墻作一定的配置,要對它開放1433端口,通常在測試時可以直接關掉windows防火墻(其他的防火墻也關掉最好)。5 檢查服務器是否在1433端口偵聽。如果服務器沒有在tcp連接的1433端口偵聽,則是連接不上的。檢查方法是在服務器的dos或命令行下面輸入 netstat -a -n 或者是netstat -an,在結果列表里看是否有類似 tcp 1433 listening 的項。如果沒有,則通常需要給sql server 2000打上至少sp3的補丁。其實在服務器端啟動查詢分析器,輸入 select version 執行后可以看到版本號,版本號在8.0.2039以下的都需要打補丁。如果以上都沒問題,這時你再做telnet 服務器ip 1433 測試,將會看到屏幕一閃之后光標在左上角不停閃動。恭喜你,你馬上可以開始在企業管理器或查詢分析器連接了。三 檢查客戶端
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年快速掌握的證券考試試題及答案
- 2025年公司財務報表試題及答案
- 行政管理師考試時間管理策略及答案
- 適應考試變化的行政管理師試題及答案
- 項目管理考試案例題目及答案
- 2024年提升項目管理能力的技巧試題及答案
- 2024年項目報告撰寫的考點分析試題及答案
- 項目管理師考試經典考題試題及答案
- 項目執行過程中的常見問題試題及答案
- 2025年注會考試模擬情況分析試題及答案
- 建筑工程安全知識課件
- 鋼材三方采購合同范本
- 貿易安全培訓管理制度
- 全民營養周知識講座課件
- 2025年鄭州電力職業技術學院單招綜合素質考試題庫及答案1套
- 門牌安裝施工方案
- 人教精通版小學英語四年級上冊單元測試卷
- GB/T 24477-2025適用于殘障人員的電梯附加要求
- 螺栓緊固標準規范
- 風力發電項目合作框架協議
- 社區時政考試試題及答案
評論
0/150
提交評論