[08001] [Microsoft] [SQL Server Native Client 11.0] 命名管道提供程序:無法打開與SQL Server的連接
提出問題
你是否遇到過以下的問題呢?使用Navicat等第三數據庫管理工具連接SQL Server時出現如下圖的錯誤:
燃鵝,用MSSM連接卻可以連接,從后面我們知道,第三方數據庫管理軟件一般通過TCP/IP來連接管理的。而MSSM就是采用的Shared Memory來進行連接管理的,因此不走TCP/IP這條道,那么就可以連接並進行管理。
在配置中,從客戶端協議順序來看,可以得知。
說了那么多,那么怎么解決呢?
-
保證所有SQL Server相關服務處於運行狀態。 當然,如果你使用MSSM可以連接管理的話,我想你相關服務應該是沒問題的。
-
打開SQL Server配置管理器,展開 SQL Server 網絡配置 - xxxx 的協議(注:xxxx 為你SQL Server名稱),在右側協議列表中,雙擊打開 TCP/IP屬性, 首先保證狀態為 是。 在IP地址選項卡一欄,下拉到最后一項設置,名為 IPALL,此表示所有本地IP地址的統一設置。此時,在 TCP動態端口 填入 1433 (注:SQL Server 默認端口是 1433 ,當然你可以指定其它合法不被占用端口也行,不過連接時需要指定端口,因此不建議修改成其它端口號)
- 修改完成后,點擊確定,會提示重啟所有相關SQL Server服務生效,那么就重啟所有SQL Server服務吧。
-
怎么樣?此時用Navicat等第三方工具連接SQL Server是不是成功了呢。
如果還不行呢?
如果還不能進行連接管理的話。。。好吧,其實我這樣設置后,我也是登錄不進去,不管是用Windows身份驗證登錄還是使用SQL Server身份驗證都不行。那我怎么解決呢?請看:
- 在 服務器屬性 - 安全性選擇頁,右側 服務器身份驗證 下,雖然 我之前使用的就是 SQL Server 和 Windows身份驗證模式,不過也之前也用 MSSM 管理工具分別使用了兩個身份驗證模式是可以的,但是用第三方工具就是不可以。因此,在此處我將服務器身份驗證修改成Windows身份驗證模式,重啟相關SQL Server服務,然后再使用Navicat第三方管理工具連接並使用Windows身份驗證模式進行登錄,發現竟然可以連接成功了!
- 然后我又切換回SQL Server和Windows身份驗證模式,重啟相關SQL Server服務后,再使用Navicat第三方管理工具連接並使用SQL Server身份驗證模式進行登錄,也同樣成功連接了。
- 因此,就搞定了啦!
附錄
下面是一個關於JBDC訪問SQL Server數據庫的小摸索,比如當我使用SQL Server身份驗證模式訪問新建的數據庫stu時,出現了以下錯誤:
同樣的,我使用Windows身份驗證模式登錄訪問這個stu表時,卻是可以正常訪問的。
那么問題在哪呢?
好吧,我記起來了,我新建stu這張表是以Windows身份驗證模式登錄的,所以現在我以SQL Server身份驗證登錄並對其進行訪問是行不通的,也是合情合理的。
如果要解決這個問題呢,那就找到相關數據庫(即stu數據庫),右鍵 - 屬性,在數據庫屬性 - 權限 ** 選項卡下,對用戶或角色為 public 的這個角色進行相關權限的授予**。
完成后,確定修改。再次訪問時,就可以訪問啦。