SQL Server 2005 連接本地端口1433開啓遠程連接/登陸18456錯誤的解決方法

SQL Server 2005 連接本地端口1433開啓遠程連接/登陸18456錯誤的解決方法
出處:http://jimmyli.blog.51cto.com/ 我站在巨人肩膀上Jimmy Li
作者:Jimmy Li
關鍵詞:遠程連接,無法連接,1433,SQL SERVER 2005,18456錯誤
------[連載之電子商務系統架構]訪問量超過100萬的電子商務網站技術架構
連接:http://jimmyli.blog.51cto.com/3190309/676378 訪問量超過100萬的電子商務網站技術架構
 
一、SQL SERVER 2005 登陸18456錯誤的解決方法
 
   很多朋友使用MSsql的時候本機能夠正常登陸SQL2005的SQL Server Management Studio。
但是遠程無法登陸1433,SQL Server 2005無法遠程連接到1433。SQL(Microsoft SQL Server 2005 )登錄不上去了,原來是出現了幾個小問題,現在記錄一下我的解決這幾個情況的辦法。(解決方法有很多種,這些只是我的解決方法,僅供參考)
 
錯誤提示:
標題: 連接到服務器
------------------------------
無法連接到 192.1.1.19。
------------------------------
其他信息:
用戶 'shop' 登錄失敗。 (Microsoft SQL Server,錯誤: 18456)
------------------------------
按鈕:
確定
------------------------------
 
查找問題的過程:(注:用windows賬號還是可以登錄的)
第一步: 啓動所有與SQL有關的服務,問題依舊;(後證實與服務無關,只是爲排除錯誤)
第二步: 查看windows防火牆,被默認啓動了,不啓動選擇項被Disabled
兩個提示“由於安全考慮,某些設置由組策略控制”“Windows防火牆正在使用您的域設置”,先用gpedit.msc打組策略編輯器,機算機配置-- 管理模板--網絡--網絡連接--Windows防火牆--標準配置文件,查看右邊各選項屬性,都是未配置狀態,問題不在這裏。
另外一個提示中提到域設置,域設置不可能禁用SQL Server,並且我查看本地開放端口(net start ),25,1433,1434都是開發狀態。
 

暈,會不會是密碼錯誤?

問題一、忘記了登錄Microsoft SQL Server 2005 的sa的登錄密碼
解決方法:先用windows身份驗證的方式登錄進去,然後在‘安全性’-‘登錄’-右鍵單擊‘sa’-‘屬性’,修改密碼點擊確定就可以了。
 
問題二、已成功與服務器建立連接,但是在登錄過程中發生錯取。(provider:共享內存提供程序,error:0-管道的另一端上無任何進程。)(Microsoft SQL Server,錯誤:233)
解決方法:打開‘程序’-‘所有程序’-‘Microsoft SQL Server 2005 ’-‘配置工具’-‘SQL Server 配置管理器’,在彈出的窗體中,找到‘SQL Server 2005 網絡配置’,把‘MSSQLSERVER的協議’下的“Named Pipes”和“TCP/IP”啓動,然後重新啓動Microsoft SQL Server 2005就可以了。
 
問題三、無法打開用戶默認數據庫。登錄失敗。用戶‘sa’登錄失敗。(Microsoft SQL Server, 錯誤:4064)
解決方法:先用windows身份驗證的方式登錄進去,然後在‘安全性’-‘登錄’-右鍵單擊‘sa’-‘屬性’,將默認數據庫設置成master,點擊確定就可以了。
這時還是不行,後來才知道一個最暈的問題,服務器名是“計算機/實例名”,FFC50E78A6DF423/server2005 這次全好了,呵呵。
 

二、升級到2005時出現18456問題的解決方法
 
在幫一個用戶進行系統從Sql2000升級到Sql2005的過程中,遇到了幾個問題,因前段時間同時忙於幾個項目,沒能及時把問題解決方法整理下來。這段時間有些輕鬆了,更新一下我的blog希望能幫助朋友們解決實踐中的問題。

問題描述:
      在升級Sql2000的DTS包的時候,試着手工執行了幾次,突然系統報18456錯誤,提示信息是“無法連接到×××服務器”,其他信息爲“用戶‘sa’登錄失敗。(Microsoft SQL Server,錯誤:18456)”。

問題原因:
      升級Sql2000的DTS包是這次數據庫系統整體升級的一部分。除此之外,系統硬件進行了升級,新升級的系統服務器加入到了用戶機構的域中,並更改了數據庫sa的用戶口令。
      原DTS的數據包是保存了原Sql2000數據庫庫系統的用戶憑據,口令自然是原先的數據庫口令。在試運行DTS包之前服務器管理員剛剛把新升級成功的數據庫服務器加入域。
      用戶機構的域是設置了“密碼策略”。Sql Server 2005的sa用戶默認是啓用了“強制實施密碼策略”。而一般默認的Windows帳戶密碼策略或者AD(域帳戶)密碼策略都是3-6次錯誤口令登陸失敗後,系統暫時凍結該用戶。凍結的時間要看系統設定的長短。
   該問題就出在DTS用錯誤的sa口令(舊的sa口令)多次試圖訪問系統,而sa的“強制實施密碼策略”起了作用。

圖解:
   sa帳戶被鎖定,原因是sa的帳戶啓用了“強制實施祕密策略”,或者“強制過期”。在登錄用戶sa的登錄屬性對話框中,能看到改選項是否選定狀態。如下圖所示:
     選中“強制實施祕密策略”後,sql server2005 會調用windows或者域的帳戶管理策略。如果是windows的帳號管理策略,可以通過“控制面板”的“本地安全設置”中看到“帳戶策略”情況,其中的“密碼策略”可以設置用戶祕密的失效時間、長短等,另外在“帳戶鎖定策略”可以設置“帳戶鎖定閾值”,即帳戶用錯誤的口令嘗試登錄幾次,系統即自動鎖定該帳戶。可以參考上圖。
      如果sql server的帳號已經被鎖定,在該帳戶的登錄屬性裏面能看到所示的sql server帳戶被鎖定。
    隔一定時間後,遇到的問題是因爲,舊有的DTS包中設置的鏈接還是舊數據庫的sa口令,當多次測試執行該DTS時,已經超過了嘗試sa錯誤口令的次數,造成了所示的sql server帳戶被鎖定。
    這是即使用集成windows的帳戶登錄sql server,取消“登錄已鎖定”的勾選。再重新用sa的正確口令登錄sql server時,也會出現18456的錯誤。如圖所示。這是因爲sa的口令需要重新設置。再次用集成windows的帳戶登錄sql server的帳戶登錄sql server進行sa的密碼重新設置,即可解決問題。
       總結:
       第一,如果數據庫安全性沒有特殊的要求,去掉圖所示的“強制實施祕密策略”勾選,能避免該類問題的發生。
       第二,從舊系統數據庫升級上來的DTS,儘快修改舊鏈接的sa登錄口令,保證系統帳戶登錄認證不會出問題,同時保證DTS能正確執行。

三、SQL Server 2005 連接本地端口1433開啓遠程連接
剛裝的SQL server2005數據庫,默認是關閉遠程連接。安裝完成後一般無法直接連接端口1433,此時連接一般會失敗。 現在把在裝完程序後,連接端口1433前,要做的幾件事情和注意事項總結一下。
開啓步驟:
1.關閉數據庫引擎,關閉數據庫引擎有三種方法:
開始->程序->Microsoft SQL Server 2005->配置工具->SQL Server Configuration Manager,選中SQL Server 2005服務中SQL Server(MSSQLSERVER) ,並選中右擊,點擊停止, 即可關閉數據庫引擎。
補充注意點:
有時候在啓動數據庫引擎的時候可能會出現錯誤,不能啓動,這時就要查看"SQL Server 2005配置管理器"中的SQL Server 2005網絡配置->MSSQLSERVER協議中的VIA是否已啓用,如果已啓用,則把它禁止.然後再執行上述一種方式操作就可以了.
2.配置服務器端和客戶端的TCP/IP協議:
配置工具->SQL Server Configuration Manager->MSSQLSERVER的協議
看看TCP/IP協議是否啓動,如果啓動,右鍵菜單點"屬性" ,在分頁菜單中選"IP地址",把"IP1"和"IP2"中"TCP端口"爲1433,"已啓用"改爲"是"
修改SQL Server的TCP/IP下端口設置,雙擊“SQL2005的協議”下“TCP/IP”,把“IP地址”下“IPALL”的端口都改爲“1433”。
配置工具->SQL Server Configuration Manager->SQL Native Client 配置->客戶端協議->TCP/IP
選擇TCP/IP右鍵菜單中"屬性",確認"默認端口"是1433,"已啓用"爲"是"
3.開啓數據庫引擎
4.連接端口1433
開始–>輸入cmd –>回車–>telnet localhost 1433->回車
出現黑屏,表示本機連接端口1433成功 。
正確的順序是:(1)關數據庫引擎,
(2)配置服務器端和客戶端的TCP/IP協議,
(3)啓動數據庫引擎,
(4)連接端口1433。
近日碰到一問題,程序無法查找到sqlserver的1433端口,sqlserver的網絡實用工具裏配置的沒錯,但是的確找不到,在命令提示符裏輸入:netstat -na ,一樣看不到這個端口,重啓sqlserver服務也不行,不知道咋回事,後來再一次重啓,突然間可以……

程序使用JDBC方式訪問SQL Server 2005

SqlServer端口:1433,1434
要訪問SqlServer,可以使用JDBC方式訪問。
driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=;DatabaseName=maxwell"
這段時間要使用sqlserver,偶望文生義,以爲在防火牆打開1433端口即可,誰知只打開這個端口怎麼都不行,後來Google一下,才知道,還需要一個端口,留作筆記。
TCP-1433
UDP-1434
 
SQLSERVER端口是如何被ADO找到的?
 
問題:
把SQLSERVER的端口設置成1499,然後在程序中定義ADO的連接字符串:DRIVER={SQL Server};SERVER=127.0.0.1,1499,能夠聯接上去,如果是DRIVER={SQL Server};SERVER=127.0.0.1,1433,就聯接不上去,問題是如果我定義成:DRIVER={SQL Server};SERVER=127.0.0.1 不加端口,也可以聯接上去,ADO是怎麼得到SQLSERVER的端口的呢?
回答:
客戶端連接到服務器時,應用程序請求連接遠端計算機,dbnetlib.dll 將打開到連接中所指定的計算機網絡名上的 UDP 端口 1434 的連接。所有運行 SQL Server 2000 的計算機都監聽此端口。當一個客戶端 dbnetlib.dll 連接到該端口時,服務器將返回一個監聽服務器上運行的所有實例的數據包。對於每個實例,該數據包報告該實例正在監聽的服務器 Net-Library 和網絡地址。應用程序計算機上的 dbnetlib.dll 收到該數據包後,選擇在應用程序計算機和 SQL Server 實例上都啓用的 Net-Library,然後連接爲此數據包中的 Net-Library 列出的地址。
通過1434端口傳輸特定的UDP數據包,然後服務器開始迴應,所有這些都是明文傳輸的,我們可以很容易探測一個IP地址的1434端口,獲得該IP地址上運行的SQL Server的相關信息。這些信息包括:主機名稱、實例名稱、版本、管道名稱以及使用的端口等。這個端口是微軟自己使用,而且不象默認的1433端口那樣可以改變,1434是不能改變的
另外:以後遇到此問題,可以使用冰刃工具查看操作系統各個端口的使用,還可以查看sqlserver的系統日誌。

 
最後,建議每次遠程連接SQL2005完成後,都從數據庫的菜單項,右擊選擇“斷開連接”,如圖
 
出處:http://jimmyli.blog.51cto.com/ Jimmy Li Blog 。歡迎朋友一起交流,討論。扣扣:柒⑥柒陸叄⑤叄伍
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章