SQL Server不存在或拒絕訪問故障的排除

iSQlServer發表於2009-02-17
1 問題的提出

  某企業正常使用的一套C/S模式進銷存系統,新增加的一臺客戶機在連線資料庫伺服器(安裝SQL Server 2000)時出現故障提示—“[DBNETLIB][ConnectionOpen(connect()).]SQL Server 不存在或拒絕訪問”,系統無法登入,其它的客戶機工作正常。

  2 解決過程及思路

  對於這種故障提示,一般資料上對此故障介紹的解決辦法是檢查客戶機上防火牆和1433埠的設定。出現故障的客戶機上安裝的是卡巴斯基6.0網際網路安全套裝,在卡巴斯基的“網路設定”中新增1433埠後,出現的故障提示變為“一般性網路錯誤 (recv())”,造成後面這種故障提示資訊的原因很多,不易確定。為此,比較正常工作的客戶機和出現故障的客戶機的SQL SERVER客戶端設定,發現工作正常的客戶機使用“Named pipes”為優先使用的協議,使用伺服器的名稱來連線資料庫伺服器,出現故障的客戶機使用“tcp/ip”為優先啟用的協議,使用伺服器的IP地址來連線資料庫伺服器,預設埠為1433,在出現故障的客戶機上把 “Named pipes”設定為優先啟用的協議,使用伺服器的名稱來連線資料庫伺服器則連線正常,可以正常執行。由此確定故障與TCP/IP協議有關,在伺服器(Windows 2000 SERVER SP4+SQL Server 2000,IP地址為10.140.90.249)上執行netstat –an命令,結果如下:


  Active Connections
  Proto Local Address Foreign Address State
  ……
  TCP 10.140.90.249:80 10.140.90.52:2519 TIME_WAIT
  TCP 10.140.90.249:80 10.140.90.52:2523 TIME_WAIT
  TCP 10.140.90.249:80 10.140.90.52:2525 TIME_WAIT
  TCP 10.140.90.249:80 10.140.90.52:2527 TIME_WAIT
  TCP 10.140.90.249:80 10.140.90.52:2529 ESTABLISHED
  TCP 10.140.90.249:80 10.140.90.52:2531 ESTABLISHED
  TCP 10.140.90.249:139 0.0.0.0:0 LISTENING
  TCP 10.140.90.249:1051 10.140.90.249:2161 ESTABLISHED
  TCP 10.140.90.249:2161 10.140.90.249:1051 ESTABLISHED
  ……


  從上述的內容可以看出,伺服器上TCP/IP協議中沒有開啟監聽1433埠,在網上搜尋關於SQL Server和1433埠有關資訊,發現SQL Server 7.0是預設開啟1433埠,而SQL Server 2000在SP4以前是預設關閉1433埠的,詢問管理員,伺服器上曾安裝過SQL Server 2000的SP4補丁,由於SQL Server 2000的版本號不顯示在“關於”中,於是進入“查詢分析器”檢查SQL Server 2000的版本號,在“查詢分析器”中執行:

  SELECT @@VERSION

  返回值為“8.00.194 RTM”,該值為SQL Server 2000的原始版本,進一步詢問管理員,得知在安裝SP4時沒有停止伺服器上的SQL Server服務,而SQL Server 2000 SP4明確要求安裝時要停止伺服器上的SQL Server服務和所有客戶端程式後才能安裝,由此判斷伺服器上的SQL Server 2000 SP4沒有安裝成功。SQL Server 2000版本和版本號關係可以在網上查到。

  重新在伺服器上安裝SQL Server 2000 SP4,出現提示“以前進行的程式安裝建立了掛起的檔案操作。執行程式之前,必須重新啟動計算機。”表明以前的SP4沒有安裝成功,重新啟動伺服器,這個提示繼續出現,啟動登錄檔編輯器,來到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager分支,刪除PendingFileRenameOperations專案,然後重新安裝SQL Server 2000 SP4成功。再在伺服器上執行netstat –an命令,1433埠赫然在列,處於“LISTENING”狀態,把出現故障的客戶機設定為TCP/IP連線方式,啟動程式,連線順利完成,錯誤資訊不再出現。

  3 結束語

  現在的軟體系統越來越複雜,牽扯的系統也越來越多,排除故障時不能被故障的表面現象所迷惑,要順藤摸瓜,逐步分析排除,到有關軟體系統的論壇和官方網站了解相關產品的資訊,尤其是補丁資訊,在排除故障時才能事半功倍,少走彎路。

  這種故障在單機狀態時也會出現,一般是SQL SERVER的客戶端TCP/IP設定為優先啟用的協議,使用IP地址連線SQL SERVER,網線物理連線有問題或者IP地址設定有問題時。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-553573/,如需轉載,請註明出處,否則將追究法律責任。

相關文章