SQL Server鏈接中常見錯誤解決方法

SQL Server鏈接中常見錯誤解決方法

出處:其它網站[ 2007-12-25 09:20:39 ] 做者:網頁教學網 責任編輯:chenzhenjia

導 讀  
  本文是關於SQL Server常見問題的解決方法,主要問題有SQL Server不存在或訪問被拒絕;沒法鏈接到服務器,用戶xxx登錄失敗;提示鏈接超時;以及Tcp/ip配置等鏈接問題。但願問題的解決方法能對您有所幫助!
  1、SQL Server不存在或訪問被拒絕
  分析:此問題最爲複雜,因爲錯誤發生的緣由比較多,因此須要檢查不少方面。
  通常狀況下,有幾種可能性:
  1.SQL Server名稱或IP地址拼寫有誤。
  2.服務器端網絡配置有誤。
  3.客戶端網絡配置有誤。
 
   要解決此問題,咱們通常要遵循如下的步驟來一步步找出致使錯誤的緣由
   首先,檢查網絡物理鏈接
  ping <服務器IP地址/服務器名稱>
  假如ping<服務器IP地址>不成功,說明物理鏈接有問題,這時候要檢查硬件設備,如網卡,HUB,路由器等.。
  另外還有一種多是因爲客戶端和服務器之間安裝有防火牆軟件形成的,好比ISA Server。
  防火牆軟件可能會屏蔽對ping,telnet等的響應,所以在檢查鏈接問題的時候,咱們要先把防火牆軟件暫時關閉,或者打開全部被封閉的端口。
  若是ping<服務器IP地址>成功而,ping<服務器名稱>失敗則說明名字解析有問題,這時候要檢查DNS服務是否正常。
  有時候客戶端和服務器不在同一個局域網裏面,這時候極可能沒法直接使用服務器名稱來標識該服務器,這時候咱們可使用HOSTS文件來進行名字解析, 具體的方法是:
  1.使用記事本打開HOSTS文件(通常狀況下位於C:\WINNT\system32\drivers\etc)。
  添加一條IP地址與服務器名稱的對應記錄,如:
  172.168.10.24 myserver
  2.或在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協議,選擇"屬性",能夠檢查客戶端默認鏈接端口的設置,該端口必須與服務器一致。
  單擊"別名"選項卡,還能夠爲服務器配置別名.服務器的別名是用來鏈接的名稱,鏈接參數中的服務器是真正的服務器名稱,二者能夠相同或不一樣.別名的設置與使用HOSTS文件有類似之處。
  經過以上幾個方面的檢查,基本上能夠排除第一種錯誤。
2、沒法鏈接到服務器,用戶xxx登錄失敗
  該錯誤產生的緣由是因爲SQL Server使用了"僅 Windows"的身份驗證方式,
  所以用戶沒法使用SQL Server的登陸賬戶(如sa)進行鏈接,解決方法以下所示:
  1.在服務器端使用企業管理器,而且選擇"使用Windows身份驗證"鏈接上SQL Server在企業管理器中
  —右鍵你的服務器實例(就是那個有綠×××標的)
  —編輯SQL Server註冊屬性
  —選擇"使用windows身份驗證"
  2.展開"SQL Server組",鼠標右鍵點擊SQL Server服務器的名稱,選擇"屬性",再選擇"安全性"選項卡。
  3.在"身份驗證"下,選擇"SQL Server和 Windows "。
  4.從新啓動SQL Server服務。
  在以上解決方法中,若是在第1步中使用"使用Windows 身份驗證"鏈接SQL Server失敗, 那就經過修改註冊表來解決此問題:
  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.
  查詢分析器中的設置:
  工具—選項—鏈接—將登陸超時設置爲一個較大的數字
 
   4、大部分機都用Tcp/ip才能成功,有時你會發現用Named Pipes才能夠?
  這是因爲在WINDOWS 2000之後的操做系統中,MS爲解決SQL SERVER的安全問題將TCP/IP配置爲SQL Server的默認鏈接協議,你能夠在CLIENT NETWORK UTILITY中看到TCP/IP和NAME PIPE 的順序。
  也能夠在:
  [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib]
  "ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
  此處能夠看到默認的協議。
   問:怎麼在程序中更改Named Pipes,Tcp/ip其sql語句怎麼寫?
  答:能夠在以上提到的註冊表的相對位置來修改,示例以下:
  ·CLIENT端:
  [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib]
  "ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
  ·SERVER端:
  [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib]
  "ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
相關文章
相關標籤/搜索