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萬的電子商務網站技術架構
 
1、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都是開發狀態。
 

暈,會不會是密碼錯誤?

問題1、忘記了登陸Microsoft SQL Server 2005 的sa的登陸密碼
解決方法:先用windows身份驗證的方式登陸進去,而後在‘安全性’-‘登陸’-右鍵單擊‘sa’-‘屬性’,修改密碼點擊肯定就能夠了。
 
問題2、已成功與服務器創建鏈接,可是在登陸過程當中發生錯取。(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就能夠了。
 
問題3、沒法打開用戶默認數據庫。登陸失敗。用戶‘sa’登陸失敗。(Microsoft SQL Server, 錯誤:4064)
解決方法:先用windows身份驗證的方式登陸進去,而後在‘安全性’-‘登陸’-右鍵單擊‘sa’-‘屬性’,將默認數據庫設置成master,點擊肯定就能夠了。
這時仍是不行,後來才知道一個最暈的問題,服務器名是「計算機/實例名」,FFC50E78A6DF423/server2005 此次全好了,呵呵。
 

2、升級到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能正確執行。

3、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 。歡迎朋友一塊兒交流,討論。扣扣:柒⑥柒陸叄⑤叄伍
相關文章
相關標籤/搜索