Sql爲什麼連接不上服務器上的數據庫

如何來解決三個最常見的連接錯誤。  
      cmd netstat -at
    第一個錯誤"SQL   Server   不存在或訪問被拒絕"通常是最複雜的,錯誤發生的原因比較多,需要檢查的方面也比較多。一般說來,有以下幾種可能性:  
    1、SQL   Server名稱或IP地址拼寫有誤;  
    2、服務器端網絡配置有誤;  
    3、客戶端網絡配置有誤。  
    要解決這個問題,我們一般要遵循以下的步驟來一步步找出導致錯誤的原因。  
    首先,檢查網絡物理連接:  
     ping   <服務器IP地址>   或者 ping   <服務器名稱>  
    如果   ping   <服務器IP地址>   失敗,說明物理連接有問題,這時候要檢查硬件設備,如網卡、HUB、路由器等。還有一種可能是由於客戶端和服務器之間安裝有防火牆軟件造成的,比如   ISA   Server。防火牆軟件可能會屏蔽對   ping、telnet   等的響應,因此在檢查連接問題的時候,我們要先把防火牆軟件暫時關閉,或者打開所有被封閉的端口。  
    如果ping   <服務器IP地址>   成功而   ping   <服務器名稱>   失敗,則說明名字解析有問題,這時候要檢查   DNS   服務是否正常。有時候客戶端和服務器不在同一個局域網裏面,這時候很可能無法直接使用服務器名稱來標識該服務器,這時候我們可以使用HOSTS文件來進行名字解析,具體的方法是:  
    1、使用記事本打開HOSTS文件(一般情況下位於C:/WINNT/system32/drivers/etc).  
    2、添加一條IP地址與服務器名稱的對應記錄,如:  
      172.168.10.24   myserver  
    也可以在   SQL   Server   的客戶端網絡實用工具裏面進行配置,後面會有詳細說明。  
    其次,使用   telnet   命令檢查SQL   Server服務器工作狀態:  
     telnet   <服務器IP地址>   1433  
    如果命令執行成功,可以看到屏幕一閃之後光標在左上角不停閃動,這說明   SQL   Server   服務器工作正常,並且正在監聽1433端口的   TCP/IP   連接;如果命令返回"無法打開連接"的錯誤信息,則說明服務器端沒有啓動   SQL   Server   服務,也可能服務器端沒啓用   TCP/IP   協議,或者服務器端沒有在   SQL   Server   默認的端口1433上監聽。  
    接着,我們要到服務器上檢查服務器端的網絡配置,檢查是否啓用了命名管道,是否啓用了   TCP/IP   協議等等。我們可以利用   SQL   Server   自帶的服務器網絡使用工具來進行檢查。  
    點擊:程序   ->   Microsoft   SQL   Server   ->   服務器網絡使用工具,打開該工具後看到的畫面如下圖所示:  
    從這裏我們可以看到服務器啓用了哪些協議。一般而言,我們啓用命名管道以及   TCP/IP   協議。  
    點中   TCP/IP   協議,選擇"屬性",我們可以來檢查   SQK   Server   服務默認端口的設置,如下圖所示:  
    一般而言,我們使用   SQL   Server   默認的1433端口。如果選中"隱藏服務器",則意味着客戶端無法通過枚舉服務器來看到這臺服務器,起到了保護的作用,但不影響連接。  
    檢查完了服務器端的網絡配置,接下來我們要到客戶端檢查客戶端的網絡配置。我們同樣可以利用   SQL   Server   自帶的客戶端網絡使用工具來進行檢查,所不同的是這次是在客戶端來運行這個工具。  
    點擊:程序   ->   Microsoft   SQL   Server   ->   客戶端網絡使用工具,   打開該工具後看到的畫面如下圖所示:  
   從這裏我們可以看到客戶端啓用了哪些協議。一般而言,我們同樣需要啓用命名管道以及   TCP/IP   協議。  
    點擊   TCP/IP   協議,選擇"屬性",可以檢查客戶端默認連接端口的設置,如下圖所示。  
    該端口必須與服務器一致。  
    單擊"別名"選項卡,還可以爲服務器配置別名。服務器的別名是用來連接的名稱,連接參數中的服務器是真正的服務器名稱,兩者可以相同或不同。如下圖中,我們可以使用myserver來代替真正的服務器名稱sql2kcn-02,並且使用網絡庫   Named   Pipes。別名的設置與使用HOSTS文件有相似之處。  
   通過以上幾個方面的檢查,錯誤   1   發生的原因基本上可以被排除。  
       
  下面我們再詳細描述如何來解決錯誤   2。  
   
    當用戶嘗試在查詢分析器裏面使用sa來連接SQL   Server,或者在企業管理器裏面使用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服務。  
   
    在以上解決方法中,如果在第   1   步中使用"使用   Windows   身份驗證"連接   SQL   Server   失敗,那麼我們將遇到一個兩難的境地:首先,服務器只允許了   Windows   的身份驗證;其次,即使使用了   Windows   身份驗證仍然無法連接上服務器。這種情形被形象地稱之爲"自己把自己鎖在了門外",因爲無論用何種方式,用戶均無法使用進行連接。實際上,我們可以通過修改一個註冊表鍵值來將身份驗證方式改爲   SQL   Server   和   Windows   混合驗證,步驟如下所示:  
   
    1、點擊"開始"-"運行",輸入regedit,回車進入註冊表編輯器;  
   
    2、依次展開註冊表項,瀏覽到以下註冊表鍵:  
   
  [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/MSSQLServer]  
   
    3、在屏幕右方找到名稱"LoginMode",雙擊編輯雙字節值;  
   
    4、將原值從1改爲2,點擊"確定";  
   
    5、關閉註冊表編輯器;  
   
    6、重新啓動SQL   Server服務。  
   
    此時,用戶可以成功地使用sa在企業管理器中新建SQL   Server註冊,但是仍然無法使用Windows身份驗證模式來連接SQL   Server。這是因爲在   SQL   Server   中有兩個缺省的登錄帳戶:BUILTIN/Administrators   以及   <機器名>/Administrator   被刪除。要恢復這兩個帳戶,可以使用以下的方法:  
   
    1、打開企業管理器,展開服務器組,然後展開服務器;  
   
    2、展開"安全性",右擊"登錄",然後單擊"新建登錄";  
   
    3、在"名稱"框中,輸入   BUILTIN/Administrators;  
   
    4、在"服務器角色"選項卡中,選擇"System   Administrators"   ;  
   
    5、點擊"確定"退出;  
   
    6、使用同樣方法添加   <機器名>/Administrator   登錄。  
   
    以下註冊表鍵  
   
  HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/MSSQLServer/LoginMode  
   
    的值決定了SQL   Server將採取何種身份驗證模式。該值爲1,表示使用Windows   身份驗證模式;該值爲2,表示使用混合模式(Windows   身份驗證和   SQL   Server   身份驗證)。  
   
    看完如何解決前兩個錯誤的方法之後,讓我們來看一下如圖   3   所示的第三個錯誤。  
   
    如果遇到第三個錯誤,一般而言表示客戶端已經找到了這臺服務器,並且可以進行連接,不過是由於連接的時間大於允許的時間而導致出錯。這種情況一般會發生在當用戶在Internet上運行企業管理器來註冊另外一臺同樣在Internet上的服務器,並且是慢速連接時,有可能會導致以上的超時錯誤。有些情況下,由於局域網的網絡問題,也會導致這樣的錯誤。  
   
    要解決這樣的錯誤,可以修改客戶端的連接超時設置。默認情況下,通過企業管理器註冊另外一臺SQL   Server的超時設置是   4   秒,而查詢分析器是   15   秒(這也是爲什麼在企業管理器裏發生錯誤的可能性比較大的原因)。具體步驟爲:  
   
    1、在企業管理器中,選擇菜單上的"工具",再選擇"選項";  
   
    2、在彈出的"SQL   Server企業管理器屬性"窗口中,點擊"高級"選項卡;  
   
    3、在"連接設置"下的"登錄超時(秒)"右邊的框中輸入一個比較大的數字,如   20。  
   
    查詢分析器中也可以在同樣位置進行設置。  
   
    簡單一點就是:  
  /**********************************/  
  1、先保證ping通  
   
  2、在dos下寫入telnet   ip   1433不會報錯  
   
  3、用ip連如企業管理器:  
  企業管理器-->右鍵SQlserver組-->新建sqlserver註冊-->下一步-->寫入遠程實例名(IP,機器名)-->下一步-->選Sqlserver登陸-->下一步-->寫入登陸名與密碼(sa,pass)-->下一步-->下一步-->完成  
   
  4、如果還不行:  
  sqlserver服務器-->開始菜單-->SQLserver-->服務器網絡實用工具-->啓用   WinSock代理-->代理地址:(sqlserver服務器IP)-->代理端口-->1433-->OK了  
   
  5、如果還不行:  
  sqlserver客戶端-->開始菜單-->SQLserver-->客戶端網絡實用工具-->別名-->添加-->寫入別名如"大力"-->"網絡庫"選tcp/ip-->服務器名稱寫入遠程ip或實例名-->OK了

發佈了50 篇原創文章 · 獲贊 5 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章