這篇文章主要針對Win2003系統安裝SQL Sever2000后1433端口未開放,如何打開1433端口的解決方法。
用了幾年的Windows2003和SQL Server2000了,不過這個問題倒是頭次遇到。最近調試一個JSP+SQL2000WEB程序遇到個現象,在Win2003簡體中文服
務器版上安裝SQL Server2000,默認安裝,一切正常,但是在安裝完成后Tomcat運行正常,JSP程序卻無法連接SQL2000數據庫,查看端口,1433端口居然未開放,當然
更不用說遠程連接了。
一般分析的都是這樣:
1、sql server服務沒有啟動;
檢查服務啟動,重新啟動服務故障依然。
2、修改了端口號;
打開網絡實用工具,檢查啟用的協議中有TCP/IP協議,查看端口,是1433沒錯。
3、客戶端實用工具作了改動;
打開客戶端實用工具,檢查協議端口正常,重新創建一個別名,依然不行。
4、安裝的問題;
懷疑安裝步驟有問題。遂卸載重裝,一切默認,故障依然。
5、安裝版本的問題;
查看安裝光盤,是久經考驗的安裝盤,應該不會出問題。
6、系統的問題;
也看不出有什么其它的問題,難道是系統的問題?不過重裝系統可太過麻煩,還是先想想其它的辦法,看能不能
找到問題所在。
檢查系統日志,這個應該是一個比較好的習慣。仔細翻了一遍重新安裝后的日志,赫然發現如下內容:
您運行的 Microsoft SQL Server 2000 版本或 Microsoft SQL Server 2000 Desktop Engine (也稱為 MSDE) 和
Microsoft Windows Server 2003 家族使用時存在已知的安全弱點。為了減少計算機被某些病毒的攻
擊,Microsoft SQL Server 2000,MSDE 或 兩者的 TCP/IP 和 UDP 網絡端口被禁用。要啟用這些端口,您必須
從 www.microsoft.com/sql/downloads/default.asp 或 www.microsoft.com/china/sql/downloads/default.asp
安裝一個修補程序, 或 Microsoft SQL Server 2000 或 MSDE 的最新服務包。
有關更多信息,請參閱在 go.microsoft.com/fwlink/events.asp 的幫助和支持
終於找到問題了,原來是Windows的一個小小的安全考慮。那么為什么以前就沒遇到過呢,原來搞慣安全的人,安
裝好sql以后,在使用前一定會先修補漏洞,所以一直未注意過這個問題。看來什么樣的習慣都會有一些弊端!
既然找到問題就簡單了,立刻到微軟網站:http://www.microsoft.com/downloads/details.aspx?
displaylang=zh-cn&FamilyID=8E2DFC8D-C20E-4446-99A9-B7F0213F8BC5
下載SP4的“數據庫組件(下載文件:SQL2000-KB884525-SP4-x86.EXE)”
安裝SQL Server SP4后,瀏覽器地址欄測試www.ITstudy.cn一切正常。
附:
遠程連接sql server 2000服務器的解決方案
解決方案步驟:
一 看ping 服務器IP能否ping通。
這個實際上是看和遠程sql server 2000服務器的物理連接是否存在。如果不行,請檢查網絡,查看配置,當然得
確保遠程sql server 2000服務器的IP拼寫正確。
二 在Dos或命令行下輸入telnet 服務器IP 端口,看能否連通。
如telnet 202.114.100.100 1433
通常端口值是1433,因為1433是sql server 2000的對於Tcp/IP的默認偵聽端口。如果有問題,通常這一步會出問
題。通常的提示是“……無法打開連接,連接失敗”。
如果這一步有問題,應該檢查以下選項。
1 檢查遠程服務器是否啟動了sql server 2000服務。如果沒有,則啟動。
2 檢查服務器端有沒啟用Tcp/IP協議,因為遠程連接(通過因特網)需要靠這個協議。檢查方法是,在服務器上
打開開始菜單->程序->Microsoft SQL Server->服務器網絡實用工具,看啟用的協議里是否有tcp/ip協議,如果
沒有,則啟用它。
3 檢查服務器的tcp/ip端口是否配置為1433端口。仍然在服務器網絡實用工具里查看啟用協議里面的tcp/ip的屬
性,確保默認端口為1433,並且隱藏服務器復選框沒有勾上。
事實上,如果默認端口被修改,也是可以的,但是在客戶端做telnet測試時,寫服務器端口號時必須與服務器配
置的端口號保持一致。如果隱藏服務器復選框被勾選,則意味着客戶端無法通過枚舉服務器來看到這台服務器,
起到了保護的作用,但不影響連接,但是Tcp/ip協議的默認端口將被隱式修改為2433,在客戶端連接時必須作相
應的改變。
4 如果服務器端操作系統打過sp2補丁,則要對windows防火牆作一定的配置,要對它開放1433端口,通常在測試
時可以直接關掉windows防火牆(其他的防火牆也關掉最好)。
5 檢查服務器是否在1433端口偵聽。如果服務器沒有在tcp連接的1433端口偵聽,則是連接不上的。檢查方法是在
服務器的dos或命令行下面輸入 netstat -a -n 或者是netstat -an,在結果列表里看是否有類似 tcp 127.0.0.1
1433 listening 的項。如果沒有,則通常需要給sql server 2000打上至少sp3的補丁。其實在服務器端啟動查詢
分析器,輸入 select @@version 執行后可以看到版本號,版本號在8.0.2039以下的都需要打補丁。 SELECT @@VERSION as VersionName, SERVERPROPERTY('ProductVersion') as VersionNumber, SERVERPROPERTY('Edition') as Edition, SERVERPROPERTY('ProductLevel') as ProductLevel
如果以上都沒問題,這時你再做telnet 服務器ip 1433 測試,將會看到屏幕一閃之后光標在左上角不停閃動。恭
喜你,你馬上可以開始在企業管理器或查詢分析器連接了。
三 檢查客戶端設置
程序->Microsoft SQL Server-> 客戶端網絡使用工具。像在服務器網絡實用工具里一樣,確保客戶端tcp/ip協議
啟用,並且默認端口為1433(或其他端口,與服務器端保持一致就行)。
四 在企業管理器里或查詢分析器連接測試
企業管理器->右鍵SQlserver組->新建sqlserver注冊->下一步->寫入遠程IP->下一步-> 選Sqlserver登陸->下一
步->寫入登陸名與密碼(sa,password)->下一步->下一步->完成
查詢分析器->文件->連接->寫入遠程IP->寫入登錄名和密碼(sa,password)->確定
通常建議在查詢分析器里做,因為默認情況下,通過企業管理器注冊另外一台SQL Server的超時設置是4秒,而查
詢分析器是15秒。
修改默認連接超時的方法:
企業管理器->工具->選項->在彈出的”SQL Server企業管理器屬性”窗口中,點擊”高級”選項卡->連接設置->在 登
錄超時(秒) 后面的框里輸入一個較大的數字
查詢分析器->工具->選項->連接->在 登錄超時(秒) 后面的框里輸入一個較大的數字
通常就可以連通了,如果提示錯誤,則進入下一步。
五 錯誤產生的原因通常是由於SQL Server使用了”僅 Windows”的身份驗證方式,因此用戶無法使用SQL Server的
登錄帳戶(如 sa )進行連接。解決方法如下所示:
1 在服務器端使用企業管理器,並且選擇”使用 Windows 身份驗證”連接上 SQL Server。
2 展開”SQL Server組”,鼠標右鍵點擊SQL Server服務器的名稱,選擇”屬性”,再選擇”安全性”選項卡。
3 在”身份驗證”下,選擇”SQL Server和 Windows “。
4 重新啟動SQL Server服務。(在dos或命令行下面net stop mssqlserver停止服務,net start
mssqlserver啟動服務,也是一種快捷的方法)。
注:在連接本地服務器時,通常使用的是命名管道協議(在服務器網絡實用工具里可以看到啟用的協議有這個)
,默認端口是445,因此在本地能連通是不能說明什么問題的,連接遠程服務器是完全不同的協議)。