天天看點

我為什麼很煩在DB伺服器上安裝防毒軟體

常見的資料庫連接配接問題無外乎是在資料庫伺服器本地可以連接配接SQL Server,但通過其他伺服器就不可以連接配接。但這次我卻碰到了相反的情況,在伺服器本地無法通過IP/執行個體名連接配接,但從其他伺服器卻可以。而且每次重新開機後問題短暫消失,不多久後,又重制。我還是第一次碰到這樣的問題。通過深究後找到了根本原因:竟然是某防毒軟體惹的禍。。。。。

                                                                報錯截圖

我為什麼很煩在DB伺服器上安裝防毒軟體

  下面分享下我的排錯過程:

      一.本地使用IP/執行個體名無法通路伺服器,但通過機器名可以;

       我們知道,使用IP/執行個體名通路SQL Server時所采用的協定與使用機器名或者"."是不一樣的,前者是通過SQL Server的TCP/IP方式通路,後兩者是通過命名管道的方式通路,既然指令管道的方式可以通路,說明資料庫使用者沒有被禁用或者沒有被拒絕遠端連接配接,而且問題應該在tcp/ip上,也就是說這應該是一個網絡問題,而不是SQL Server的配置問題。

   二.外部機器可以連接配接進來,也可以telnet DB伺服器IP的1433端口;

       這說明DB伺服器的防火牆應該沒有問題,再說,防火牆是防外不防内,内部不能通路肯定跟防火牆沒有關系。

       另外,我在其他伺服器和DB伺服器上的cmd中執行netstat -ano|findstr 1433,可以看到實際上兩台伺服器建立了tcp連接配接;

我為什麼很煩在DB伺服器上安裝防毒軟體
我為什麼很煩在DB伺服器上安裝防毒軟體

    三.在資料庫伺服器本地telnet 1433端口,telnet不成功;

我為什麼很煩在DB伺服器上安裝防毒軟體

分析到這裡的時候,我突然想起來了之前處理的一個問題,就是伺服器本地的使用的tcp端口太多了,達到了上限(65536),導緻應用程式新的TCP請求沒法配置設定到TCP端口,是以無法網絡通訊。這個現象跟這個情況很類似,資料庫伺服器本地發起資料庫連接配接時,SSMS要配置設定一個本地的随機TCP端口,如果端口不夠用了,肯定就不能連接配接SQL Server了,至于外部機器為什麼能夠連接配接進來,是因為他們使用的是自己的TCP端口來連接配接SQL Server的1433端口,并不需要資料庫伺服器單獨再開TCP端口。

根據這個思路,我通過tcpview檢視資料庫伺服器的端口使用情況,結果令我失望了,竟然很正常,難道是我判斷出錯了,可是按照現象應該就是這樣的呀,無意中看到伺服器右下角某數字公司的安全衛士,豁然開朗,安全軟體經常幹影響網絡通訊的事情,将其解除安裝後一切正常。。。。。

我為什麼很煩在DB伺服器上安裝防毒軟體

PS:本文并不是黑某防毒軟體,隻是想說市面常見的這些防護軟體這都是為個人電腦設計的,伺服器的使用情況跟個人電腦有很大不同,請不要輕易在伺服器上安裝防毒軟體,以免帶來一些意想不到的壞影響。