如何修复错误'命名管道提供程序,错误40 - 无法打开与'SQL Server'的连接?

问题描述 投票:126回答:30

我似乎无法从站点连接到我的数据库。我收到此错误:

命名管道提供程序,错误:40 - 无法打开与SQL Server的连接

我尝试使用本地IP地址连接以及公共IP地址。我试过了:

  1. 是的,该站点可以与服务器通信
  2. 命名管道/ TCP已启用。
  3. 允许远程连接。
  4. Windows Firewall关闭
  5. 在Windows防火墙中为端口1433创建了一个例外。
  6. 在SQL Server配置管理器中启用了所有内容。

我还能在这做什么?

sql-server sql-server-2005 database-connectivity
30个回答
105
投票

解决这个问题非常简单:

  1. 转到控制面板。
  2. 寻找服务。
  3. 从搜索结果中打开“本地服务”窗口
  4. 重新启动MSSQLSERVER服务。

步骤截图:


3
投票

在我的情况下,我有一个独立的服务器,我将配置管理器中的sql server端口默认端口1433更改为某个数字并重新启动sql serve服务生效,如果我登录,我能够通过管理工作室连接到sql server到服务器。但我无法通过sql server从本地机器连接,我收到错误:

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确

SQL Server配置为允许远程连接。 (提供程序:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)(Microsoft SQL Server,错误:5)

我检查并验证了以下所有内容

已启用-Named管道/ TCP。 - 允许远程连接。 -Windows防火墙已关闭 - 对于portin Windows防火墙来说是例外(在我的情况下这不是必需的,因为服务器位于同一子网中)。 -Enabled SQL Server配置管理器中的所有内容。

然后我将端口号更改为默认值1433并重新启动sql server服务,问题得到解决,我可以从本地管理工作室连接sql server。


3
投票

我有同样的问题。我使用MSSQL Server Management Studio 2017并使用以下步骤解决了这个问题:

  1. 检查是否正常运行SQL Server服务。
  2. 还要检查SQL Server(MSSQLSERVER)是否工作正常。
  3. 还要检查工作正常的SQL Server Browser。
  4. 重新启动SQL Server(MSSQLSERVER)

并修复它。


1
投票

请尝试以下步骤:

  1. 打开“服务”窗口(打开“运行框”并键入services.msc)。
  2. 寻找SQL服务(带有SQL前缀)。
  3. 启动它们(如果无法启动。转到步骤4)。
  4. 右键单击每个服务 - >属性 - >更改为选项卡“登录” - >选择登录为“本地...” - > 0K。然后再次启动SQL服务。

尝试Open SQL并连接数据库。


1
投票

您会发现很可能您的数据库名称不正确,您将在VS中看到服务器名称,如“DESKTOP-0I14BKI”,但如果您打开SSMS,您将看到DESKTOP-0I14BKI \ SQLBLAHBLAH,只需添加“\ SQLBLAHBLAH”(实例名称) )到VS连接属性中的“服务器名称”。

你会看到:enter image description here

修复:enter image description here


1
投票

如果您正在使用Asp.net核心并使用appsettings.json而不是将服务器写为localhost,并且在为此命令管道写入sql实例名称之后

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

0
投票

按照here提到的所有步骤后,如果仍然没有连接,请尝试在etc文件夹的hosts文件中添加带有IP地址的DNS。在连接字符串中添加IP地址而不是DNS名称应该是检查连接是否实际工作的临时解决方案。


0
投票

我尝试使用本地IP地址连接以及公共IP地址。我试过了:

是的,站点可以与服务器通信命名管道/ TCP已启用。允许远程连接。 Windows防火墙已关闭在Windows防火墙中为端口1433创建了一个例外。在SQL Server配置管理器中启用了所有内容。

我确保并完成了上述操作,我只是想分享那个DOUBLE BACKSLASH

oBuilder.DataSource =“SPECIFICPCNAME \ SQLEXPRESS”;

使用SINGLE BACKSLASH导致构建错误,即:错误1无法识别的转义序列

我希望这有助于下一个人 - 我牺牲了晚餐,午夜小吃和NBA亮点时间解决这个问题(羞耻)

感谢[Tamizh venthan] ^ _ ^


0
投票

通过转到计算机管理 - > SQL和服务启用TCP / Ip,管道协议,确保服务已打开。安装防火墙上的端口。尝试通过命令提示符登录 - >作为管理员;最后用户名应该是(本地)\ SQLEXPRESS。希望这可以帮助。


0
投票

打开SQL Server配置管理器

  1. 从右侧选择SQL Server服务。
  2. 从右侧找到您的服务器并转到其属性(右键单击)
  3. 将登录方法更改为本地系统。


0
投票

我有同样的问题,通过禁用我的防火墙(ESET)解决了这个问题。

解决此问题的第一步应该是尝试从另一台计算机ping您自己的计算机。如果您启用了防火墙,则可能无法自行ping通。我尝试ping我自己的电脑,然后ping失败(没有得到服务器的响应)


75
投票

最简单的解决方案 - 检查你的斜线是否回来了......

我花了大约一个小时试图弄清楚什么是SERVER / INSTANCENAME什么是错误的,当一切配置正确,命名管道,用户访问权限......然后它突然袭击我,它不是斜线,它是一个反斜杠(\)。

恐怖,耻辱......


0
投票

我已建议以下步骤来解决您的问题如何修复错误'命名管道提供程序,错误40 - 无法打开与'SQL Server'的连接

  1. 检查是否正常运行SQL Server服务。
  2. 还要检查SQL Server(MSSQLSERVER)是否工作正常。
  3. 还要检查工作正常的SQL Server Browser。
  4. 删除所有早期别名,现在根据您的要求创建新别名。
  5. 现在检查SQL Server默认端口1433的工作情况
  6. 接下来单击客户端协议实例,然后单击TCP / IP,现在单击鼠标右键单击,打开属性,这里可以确保您的工作正常,您的默认端口SQL 1433。
  7. 打开SQL Server Management Studio,然后右键单击,单击“属性”选项,然后单击“连接”选项卡,最后选中“允许远程连接到此服务器”。
  8. 检查正确的工作或您的Ping IP主机。

0
投票

我试图在VS2015中添加新连接。这里的建议都没有奏效。怀疑向导中存在某种错误,特别是因为SSMS能够很好地连接,我决定尝试欺骗它。有效!

  1. 而不是添加连接,使用“创建新的SQL Server数据库”。输入您的服务器名称和新数据库的随机名称,例如“测试”。
  2. 假设此操作成功,请在VS中打开Server Explorer,在Data Connections中找到该连接,右键单击它并选择Modify Connection。
  3. 将“test”(从步骤1)更改为要连接到的现有数据库的名称。单击“测试连接”。这次它应该工作!
  4. 删除在步骤1中创建的临时数据库。

0
投票

我想,我还有一个解决方案。我最近改变了我的计算机名称,因此在尝试了以上所有方法之后仍无法连接。我更改了服务器名称..服务器名称=>(浏览更多)=>在数据库引擎下,找到了与计算机新名称相同的新服务器。这很有效,生活又好了。


0
投票

在我意识到错误之前,我在这个问题上挣扎了好几年 - 我在连接字符串中使用了逗号而不是分号


0
投票

我有这个问题,但上面的建议没有修复它。

当我将我的网站部署到IIS时,我看到了这个问题。修复是针对默认应用程序池进入高级设置,并将标识属性从默认值更改为管理员。


0
投票

就我而言,我打开了SQL Server Management Studio并在我的数据库引擎中搜索了SQLEXPRESS。它有两个实例,我选择了正确的实例。

enter image description here


0
投票

对我来说这是一个防火墙问题。

首先你必须添加端口(例如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

对我来说,它返回了错误原因


0
投票

我在这个页面上尝试了很多东西,但是我遇到了一些潜在的问题,实际上需要解决的问题。我无法做某些事情,比如打开SQL Server配置管理器,最终导致WMI提供程序文件损坏/丢失。

根据我读过的内容,有很多繁琐的方法来解决这个问题,但tweaking.com的工具能够删除和替换/修复我的WMI(Windows Management Instrumentation)提供程序文件。

我曾经做过电脑维修,总体而言tweaking.com工具给我留下了深刻的印象,并且是我在其中一个WMI错误论坛页面上建议的。

解决了这个问题后,我能够在本地和远程连接到我的SQL数据库。

希望这有助于某人。


0
投票

在服务器上打开端口号1433以进行sql远程连接


0
投票

很简单的解决方案

使用(local)\InstanceName就是这样。它对我有用。


38
投票

安装SQL Server后,这是一个三步过程:

  1. 启用命名管道SQL配置管理器 - > SQL Server网络构造 - >协议 - >命名管道 - >右键单击 - >重新启动

named pipes enabled

  1. 重新启动服务器SQL Config Manager - > SQL Server服务 - > SQL Server(SQLEXPRESS) - >右键单击 - >重新启动
  2. 使用正确的服务器和实例名称(两者都需要!)通常这将是。\ SQLEXPRESS,例如,请参阅QueryExpress连接对话框中的屏幕截图。

enter image description here

你有它。


0
投票

TL; DR;您的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配置管理器,如下面的快照所示:

enter image description here

在您的连接字符串中明确使用该端口号,或使用下面显示的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。

enter image description here

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

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动态端口的更多信息:

How to configure SQL Server Port on multiple instances?

When is a Dynamic Port “dynamic”?

When to use a TCP dynamic port and when TCP Port?

我从this博客获得了解决我的问题的线索。


18
投票

我刚刚安装了SQL SERVER 2012开发人员。当我创建我的第一个SSIS包时,当我尝试在“连接管理器”框中的SQL Server 2012数据工具中创建数据连接任务时,我收到此管道错误。我在上面的帖子的帮助下解决了。

如果选择一个命名实例,并调用命名实例SSQDatabase1,则您的pc名称为PCX1。您必须输入PCX1 \ SSQDatabase1而不仅仅是SSQDatabase1,否则您将收到命名管道错误。


15
投票

MSDN Social上的一个帖子Re: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server有一个非常不错的列表,列出了与你的错误相关的可能问题。您可能想看看它们中的任何一个是否正如您所遇到的那样。

  • 连接字符串不正确,例如使用SqlExpress
  • SQL实例上未启用命名管道(NP)
  • 未启用远程连接
  • 服务器未启动,或指向连接字符串中的实际服务器
  • 其他原因,如不正确的安全上下文
  • 尝试在您正在处理的两台机器之间进行基本连接测试

9
投票

我刚刚在Sql Server配置管理器中启用了TCP / IP,VIA,命名管道,我的问题得到了解决,请参阅此内容以获取更多信息Resolving Named Pipes Error 40


7
投票

使用SERVER \\ INSTANCE NAME。在我的项目中使用双反斜杠解决了我的问题。


5
投票

感谢Damian ......

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

Web Config ....(对于localhost)

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

5
投票

有同样的问题。不得不迁移一些服务器时花了6个小时。尝试了有关此主题和其他人的所有建议。

解决方案就像服务器重启一样简单!

© www.soinside.com 2019 - 2024. All rights reserved.