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

2022-06-11 12:12:08 字數 2168 閱讀 2630

2012-05-16 11:35 王有翦 字型大小:t

| t某企業正常使用的一套c/s模式進銷存系統,新增加的一台客戶機在連線資料庫伺服器(安裝sql server 2000)時出現故障提示—「[dbnetlib][connectionopen(connect()).]sql server 不存在或拒絕訪問」,系統無法登入,其它的客戶機工作正常。

補充:可以先執行下面將'show advanced options','xp_cmdshell'都改為1.

select * from sys.configurations

order by name ;

gosp_configure 'show advanced options', 1;

goreconfigure;

gosp_configure 'xp_cmdshell', 1;

goreconfigure;

go1 問題的提出

某企業正常使用的一套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命令,結果如下:

從上述的內容可以看出,伺服器上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位址設定有問題時。

存在還是不存在

又是一片安靜中醒來,又是乙個陰天,地面很濕潤,忽然有點秋天的感覺。昨天一天都進不來我的部落格,晚上剛進來寫了一篇小文緊接著就又是 找不到伺服器 到了深夜,終於可以上了,覺得自己長舒了一口氣。部落格依賴症。不過寫了半年多而已。依賴,一種要警惕的情緒,很容易使人沉迷,找不到自己。慌慌張張的日子終於過去了...

存在與不存在

在乙個幽靜的小山莊,有個人叫王四,孤僻,二十多歲,長相不美不醜,是那種扔在人群裡再也找不出來的那種人。父母不詳,從小靠村裡人養大。王四長大了。王四一遍又一遍的問村裡人,他的父母去 了?沒有人知道。當頻繁的問詢過於頻繁的時候只能讓人生厭,以至於後來他再去詢問的時候,大家都說他沒有父母。那我是 來的呢?...

Sql server如果存在就更新,不存在就插入

sql不同於mysql那樣,有單獨的乙個命令來執行上述操作,比如在mysql中就可以這樣寫 replace into demo in a,b,c values 123,2,4 在mysql中這是乙個原子操作,如果這條資料存在,就先刪除在插入,不存在就直接插入.要注意的是需要有乙個唯一的主鍵支援,如果...