簡體   English   中英

如何修復錯誤“命名管道提供程序,錯誤 40 - 無法打開與“SQL 服務器”的連接?

[英]How do I fix the error 'Named Pipes Provider, error 40 - Could not open a connection to' SQL Server'?

我似乎無法從站點連接到我的數據庫。 我收到此錯誤:

命名管道提供程序,錯誤:40 - 無法打開與 SQL 服務器的連接

我嘗試使用本地 IP 地址以及公共地址進行連接。 我試過了:

  1. 是的,站點可以與服務器通信
  2. 命名管道/TCP 已啟用。
  3. 允許遠程連接。
  4. Windows 防火牆關閉
  5. 在 Windows 防火牆中為端口 1433 創建了一個例外。
  6. 在 SQL 服務器配置管理器中啟用所有內容。

我還能在這里做什么?

解決這個問題非常簡單:

  1. 進入控制面板。
  2. 搜索服務。
  3. 從搜索結果中打開本地服務窗口
  4. 重新啟動您的 MSSQLSERVER 服務。

步驟截圖:

步驟截圖

最簡單的解決方案 - 檢查你的斜線是否回來了......

我花了大約一個小時試圖找出當一切配置正確時SERVER/INSTANCENAME有什么問題,命名管道,用戶訪問權限......突然它讓我震驚,它不是斜線,它是反斜線\\ )。

恐怖,恥辱……

在安裝 SQL Server 之后,這是一個真正的三步過程:

  1. 啟用命名管道 SQL 配置管理器 --> SQL Server 網絡配置 --> 協議 --> 命名管道 --> 右鍵單擊​​ --> 重新啟動

已啟用命名管道

  1. 重啟服務器SQL Config Manager --> SQL Server Services --> SQL Server (SQLEXPRESS) --> 右鍵--> Restart

  2. 使用正確的服務器和實例名稱(兩者都需要!)通常是.\\SQLEXPRESS ,例如查看 QueryExpress 連接對話框的屏幕截圖。

在此處輸入圖片說明

你有它。

我剛剛安裝了 SQL SERVER 2012 開發人員。 當我創建我的第一個 SSIS 包時,當我嘗試在連接管理器框中的 SQL Server 2012 Data Tools 中創建數據連接任務時收到此管道錯誤。 我在上面帖子的幫助下解決了。

如果選擇一個命名實例並且您將命名實例命名為 SSQDatabase1,並且您的電腦名稱為 PCX1。 您必須輸入 PCX1\\SSQDatabase1 而不僅僅是 SSQDatabase1 否則您將收到命名管道錯誤。

MSDN Social 上的一個線程, Re:Named Pipes Provider,錯誤:40 - 無法打開到 SQL Server 的連接,有一個與您的錯誤相關的可能問題的相當不錯的列表。 您可能想看看其中是否有任何可能是您正在經歷的。

  • 連接字符串不正確,例如使用SqlExpress
  • 未在 SQL 實例上啟用命名管道 (NP)
  • 未啟用遠程連接
  • 服務器未啟動,或在您的連接字符串中指向非真實服務器
  • 其他原因,例如不正確的安全上下文
  • 嘗試您正在處理的兩台機器之間的基本連接測試

我剛剛在 Sql Server 配置管理器中啟用了 TCP/IP、VIA、命名管道,我的問題得到了解決,請參閱此了解更多信息解決命名管道錯誤 40

使用SERVER\\\\ INSTANCE NAME 。在我的項目中使用雙反斜杠解決了我的問題。

感謝達米安...

TCP/IP 命名管道 ... 均已啟用

Web 配置....(對於本地主機)

<add name="FooData" connectionString="Data Source=localhost\InstanceName;Initial Catalog=DatabaseName;Integrated Security=True;" providerName="System.Data.SqlClient" />

有同樣的問題。 在不得不遷移一些服務器時花了大約 6 個小時。 嘗試了有關此主題和其他主題的所有可用建議。

解決方案就像服務器重啟一樣簡單!

TL; 博士; 您的 SQL Server 實例正在使用無法正常工作的動態端口。 強制 SQL Server 使用靜態端口 # 1433。

完整詳細信息:首先,如果您混合使用默認和命名實例或僅命名實例(這是我的情況),則更有可能出現此問題。

關鍵概念:安裝在計算機上的每個 Microsoft SQL Server 實例都使用不同的端口來偵聽傳入的連接請求。 SQL Server 的默認實例使用端口 # 1433。當您安裝命名實例時,它們將開始使用動態端口,這是在啟動與命名 SQL Server 實例相對應的 Windows 服務時決定的。

我的代碼無法(錯誤代碼 40)連接到我的 VM 上唯一命名的 SQL Server 實例。 您可以嘗試以下可能的解決方案:

解決方案 # 1 :嘗試連接到 SQL Server 實例的客戶端代碼需要 SQL Server 瀏覽器服務的幫助,以確定命名實例正在偵聽傳入連接的端口號。 確保 SQL 瀏覽器服務正在您的計算機上運行。

解決方案 #2 :從 SQL Server 配置管理器檢查您的命名 SQL Server 實例正在使用的端口 #(黃色),如下面的快照所示:

在此處輸入圖片說明

在您的連接字符串或下面顯示的sqlcmd中明確使用該端口號:

sqlcmd -s mymachinename,11380 -i deleteDB.sql -o SQLDelete.txt

解決方案#3 :強制您的命名實例使用默認實例使用的端口#1433。 請記住,這僅在您的計算機上沒有任何默認 SQL Server 實例時才有效,因為默認 SQL Server 實例將使用端口 # 1433。 兩個不同的 Windows 服務不能使用相同的端口號。

TCP Dynamic ports字段標記為空白,將TCP Port字段標記為 1433。

在此處輸入圖片說明

更改連接字符串中的端口號,如下所示:

sqlcmd -s mymachinename\instanceName -i deleteDB.sql -o SQLDelete.txt

或者

sqlcmd -s mymachinename,1433 -i deleteDB.sql -o SQLDelete.txt

注意:TCP/IP 設置的每次更改都需要重新啟動相應的 Windows 服務。

有趣的是,當我回到動態端口設置以重現相同的錯誤時解決了錯誤后,它並沒有發生。 不知道為什么。

請閱讀以下有趣的主題以了解有關 SQL Server 動態端口的更多信息:

如何在多個實例上配置 SQL Server 端口?

什么時候動態端口是“動態的”?

何時使用 TCP 動態端口,何時使用 TCP 端口?

我從這個博客中得到了解決我的問題的線索。

就我而言,我有一個獨立的服務器,我將配置管理器中的 sql server 端口默認端口 1433 更改為某個數字並重新啟動 sql server 服務以生效,如果我登錄,我可以通過管理工作室連接到 sql server到服務器。 但我無法通過 sql server 從我的本地機器連接,我收到錯誤:

與 SQL Server 建立連接時發生與網絡相關或特定於實例的錯誤。 服務器未找到或無法訪問。 驗證實例名稱是否正確並且

SQL Server 配置為允許遠程連接。 (提供程序:命名管道提供程序,錯誤:40 - 無法打開與 SQL Server 的連接)(Microsoft SQL Server,錯誤:5)

我檢查並驗證了以下所有內容

- 命名管道/TCP 已啟用。 - 允許遠程連接。 -Windows 防火牆已關閉 - 為 Windows 防火牆的端口創建了一個例外(在我的情況下這不是必需的,因為服務器位於同一子網中)。 - 啟用 SQL Server 配置管理器中的所有內容。

然后我將端口號改回默認值 1433 並重新啟動 sql server 服務,問題得到解決,我可以從本地管理工作室連接 sql server。

我有同樣的問題。 我使用 MSSQL Server Management Studio 2017 並使用以下步驟解決了這個問題:

  1. 檢查工作正常的 SQL Server 服務服務與否。
  2. 還要檢查 SQL Server (MSSQLSERVER) 是否運行良好。
  3. 還要檢查工作正常的 SQL Server 瀏覽器。
  4. 重新啟動 SQL Server (MSSQLSERVER)

並修復它。

您很可能會發現您的數據庫名稱不正確,您會在 VS 中看到服務器名稱,例如“DESKTOP-0I14BKI”,但是如果您打開 SSMS,您將看到DESKTOP-0I14BKI\\SQLBLAHBLAH ,只需添加“ \\SQLBLAHBLAH ”(實例名稱) ) 到 VS 連接屬性中的“服務器名稱”。

你會看到 在此處輸入圖片說明

修理: 在此處輸入圖片說明

非常簡單的解決方案

使用(local)\\InstanceName就是這樣。 它對我有用。

嘗試以下步驟:

  1. 打開服務窗口(打開“運行框”並輸入 services.msc)。

  2. 尋找 SQL 服務(帶有 SQL 前綴)。

  3. 啟動它們(如果無法啟動。轉到第 4 步)。

  4. 右鍵單擊每個服務-> 屬性-> 更改為選項卡“登錄”-> 選擇登錄為“本地...”-> 0K。 然后再次啟動 SQL 服務。

嘗試打開 SQL 並連接數據庫。

就我而言,我打開了 SQL Server Management Studio 並在我的數據庫引擎中搜索了 SQLEXPRESS。 它有兩個實例,我選擇了正確的一個。

在此處輸入圖片說明

如果您正在使用 Asp.net 核心並使用 appsettings.json 而不是將服務器寫入本地主機,然后為啟用的命名管道寫入 sql 實例名稱,如下所示

  "ConnectionString": {
    "dewDB": "server=localhost\\dewelopersql;database=dewdb;User ID=sa;password=XXXXX",
  },

如果您嘗試重新啟動 MSSQLSERVER 服務,但它不起作用,這可能是一個解決方案:

如果您使用 SQLExpress,您的服務器名稱應為以下 ComputerName\\SQLExpress。 但是,對於 SQLDeveloper,您不必在您的 ComputerName 之后正確使用 SQLDeveloper。

按照這里提到的所有步驟操作后,如果仍然無法連接,請嘗試在 etc 文件夾中的主機文件中添加具有 IP 地址的 DNS。 在連接字符串中添加 IP 地址而不是 DNS 名稱應該是檢查連接是否實際工作的臨時解決方案。

我嘗試使用本地 IP 地址和公共 IP 地址進行連接。 我試過了:

是的,該站點可以與服務器通信 命名管道/TCP 已啟用。 允許遠程連接。 Windows 防火牆已關閉 在 Windows 防火牆中為端口 1433 創建了一個例外。 啟用 SQL Server 配置管理器中的所有內容。

我確保並執行了上述操作,我只想分享雙反斜杠

oBuilder.DataSource = "SPECIFICPCNAME\\SQLEXPRESS";

使用單個反斜杠導致構建錯誤,即:錯誤 1 ​​無法識別的轉義序列

我希望這能幫助下一個人——我已經犧牲了晚餐、宵夜和 NBA 集錦時間來解決這個問題(恥辱)

感謝 [Tamizh venthan] ^_^

通過轉到“計算機管理”->“SQL 和服務”啟用 TCP/Ip、管道協議,確保服務已打開。 啟用防火牆上的端口。 嘗試通過命令提示符登錄 -> 以管理員身份登錄; 最后用戶名應該是(本地)\\SQLEXPRESS。 希望這可以幫助。

打開 SQL Server 配置管理器

  1. 從右側選擇 SQL Server 服務。
  2. 從右側找到您的服務器並轉到其屬性(右鍵單擊)
  3. 將登錄方法更改為本地系統。

在此處輸入圖片說明

在此處輸入圖片說明

我遇到了同樣的問題並通過禁用我的防火牆(ESET)解決了這個問題。

解決此問題的第一步應該是嘗試從另一台計算機 ping 您自己的計算機。 如果您打開了防火牆,您可能無法 ping 自己。 我嘗試 ping 我自己的電腦,然后 ping 失敗(沒有得到服務器的響應)

我建議了以下步驟來解決您的問題如何修復錯誤“命名管道提供程序,錯誤 40 - 無法打開與“SQL Server的連接

  1. 檢查工作正常的SQL Server 服務服務與否。
  2. 還要檢查SQL Server (MSSQLSERVER)是否正常工作。
  3. 還要檢查SQL Server Browser是否工作正常。
  4. 刪除所有以前的別名,現在根據您的要求創建新別名。
  5. 現在檢查 SQL Server 默認端口 1433 的工作情況
  6. 接下來單擊 Client Protocols 實例,然后單擊TCP/IP ,現在單擊鼠標右鍵單擊,打開屬性,在這里您可以確保您的默認端口SQL 1433正常工作。
  7. 打開您的SQL Server Management Studio ,然后右鍵單擊,單擊“屬性”選項,然后單擊“連接”選項卡,最后勾選“允許遠程連接到此服務器”
  8. 檢查正常工作或您的Ping IP 主機

我試圖在 VS2015 中添加一個新連接。 這里的建議都沒有奏效。 懷疑向導中存在某種錯誤,特別是因為 SSMS 能夠正常連接,我決定嘗試欺騙它。 有效!

  1. 不要添加連接,而是使用“創建新的 SQL Server 數據庫”。 輸入您的服務器名稱和新數據庫的隨機名稱,例如“test”。

  2. 假設成功,在VS中打開Server Explorer,在Data Connections中找到連接,右擊選擇Modify Connection。

  3. 將“test”(從第 1 步開始)更改為要連接的現有數據庫的名稱。 單擊“測試連接”。 這次應該可以了!

  4. 刪除您在步驟 1 中創建的臨時數據庫。

我想我還有一個解決方案。 我最近更改了我的計算機名稱,因此在嘗試上述所有方法后仍然無法連接之后。 我更改了服務器名稱.. 服務器名稱 => (瀏覽更多) => 在數據庫引擎下,發現一個新服務器與計算機新名稱相同。 這奏效了,生活又好了。

在我意識到我的錯誤之前,我在這個問題上掙扎了很長時間 - 我在連接字符串中使用了逗號而不是分號

我有這個問題,但上面的建議都沒有解決它。

當我將我的網站部署到 IIS 時,我看到了這個問題。 修復方法是針對默認應用程序池進入高級設置,並將身份屬性從默認值更改為管理員。

對我來說,這是一個防火牆問題。

首先,您必須添加端口(例如 1444 和 1434)而且

C:\Program Files (x86)\Microsoft SQL Server\90\Shared\sqlbrowser.exe

%ProgramFiles%\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\Binn\SQLAGENT.EXE

我第二次遇到這個問題是當我回到防火牆時,路徑不正確,我需要將表格 12 更新到 13! 只需單擊“程序和服務”選項卡中的瀏覽即可幫助實現這一點。

最后,嘗試運行命令

EXEC xp_readerrorlog 0,1,"無法注冊服務主體名稱",Null

對我來說,它返回了錯誤原因

我幾乎嘗試了此頁面上的所有內容,但我有一些潛在的問題,實際上需要解決這些問題。 我無法執行某些操作,例如打開 SQL Server 配置管理器,最終導致 WMI 提供程序文件損壞/丟失。

根據我所讀到的內容,有很多乏味的方法可以解決此問題,但是來自 Tweaking.com 的工具能夠刪除和替換/修復我的 WMI(Windows 管理規范)提供程序文件。

我曾經做過電腦維修,總的來說,tweaking.com 工具給我留下了深刻的印象,它是從我訪問的 WMI 錯誤論壇頁面之一中推薦的。

解決此問題后,我能夠在本地和遠程連接到我的 SQL 數據庫。

希望這可以幫助某人。

在您的服務器上打開端口號 1433 以進行 sql 遠程連接

我在已脫機的鏈接服務器上收到此錯誤 它位於 sql 查詢中,該查詢位於 dll 中,該查詢位於另一個項目中,並且使用另一種語言 (VB)。 將您的查詢復制到 sql 工作室管理器並直接從那里運行以查看這是否也是您的問題。

在嘗試將 Power BI 桌面連接到 SQL Server 2019 的本地開發人員實例時,我遇到了這個問題的不同版本。我使用的是:

localhost:<port>

將其更改為:

hostname\servername

為我解決了。 由於我在不同端口的機器上安裝了 2 個 SQL 服務器,這可能會使情況變得復雜。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM