如何修复错误“命名管道提供程序,错误40-无法打开到“ SQLServer”的连接?

我似乎无法从一个站点连接到我的数据库。我得到这个错误:

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

我试过使用本地 IP 地址和公共 IP 地址进行连接。我试过:

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

我还能做什么?

805260 次浏览

在 MSDNSocial,Re: 命名管道提供程序,错误: 40-无法打开到 SQL Server 的连接 上的一个线程,有一个相当不错的与您的错误相关的可能问题列表。你可能想看看他们中的任何一个是不是你正在经历的。

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

最简单的解决方案,检查斜线是否回来了。

我花了大约一个小时试图找出 服务器/即时名称出了什么问题,当所有的配置都正确的时候,命名管道,用户访问权限... ... 突然我想到,这不是一个斜杠,而是一个 反斜杠(\)。

恐惧,羞耻。

使用 服务器实例名称。在我的项目中使用双反斜杠解决了我的问题。

很简单的解决办法

使用 (local)\InstanceName 就是这样,我成功了。

多亏了达米安。

TCP/IP 名叫派普斯 都启动了

Web Config... . (用于 localhost)

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

也有同样的问题,花了6个小时迁移一些服务器。 尝试了所有关于这个主题和其他主题的建议。

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

在执行了所有提到的 给你步骤之后,如果仍然无法连接,请尝试在 etc 文件夹的主机文件中添加具有 IP 地址的 DNS。在连接字符串中添加 IP 地址而不是 DNS 名称应该是检查连接是否实际工作的临时解决方案。

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

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

尝试以下步骤:

  1. 打开“服务”窗口(打开“运行框”并键入 Services.msc)。

  2. 查找 SQL 服务(带 SQL 前缀)。

  3. 启动它们(如果不能启动,请执行步骤4)。

  4. 右键单击每个服务-> 属性-> 更改为选项卡“登录”-> 选择登录为“本地...”-> 0K。然后再次启动 SQL 服务。

尝试打开 SQL 并连接数据库。

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

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

我确保,并做了以上,我只是想分享的双反斜杠

DataSource = “ SPECIFICPCNAME SQLEXPRESS”;

使用 SINGLEBACKSLASH 导致生成错误,即: Error1未识别的转义序列

我希望这对下一个家伙有所帮助——我牺牲了晚餐、午夜小吃和 NBA 的精彩时刻来解决这个问题(耻辱)

感谢[ Tamizh venthan ] ^ _ ^

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

建立到 SQLServer 的连接时发生了与网络相关或实例特定的错误。找不到或无法访问服务器。验证实例名称是否正确,并且

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

我检查并核实了以下所有内容

- 启用命名管道/TCP。 - 允许远程连接。 Windows 防火墙关了 - 为 portin Windows 防火墙创建一个异常(在我的例子中不需要这样做,因为服务器位于相同的子网络中)。 - 启用 SQLServer 配置管理器中的所有内容。

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

通过进入计算机管理-> SQL 和服务,启用 TCP/IP,管道协议,确保服务开启。启用防火墙上的端口。尝试通过 Command Prompt-> 作为 Admin 登录; 最后显示用户名 应该是(本地) SQLEXPRESS。希望这有所帮助。

打开 SQLServer 配置管理器

  1. 从右侧选择 SQLServer 服务。
  2. 从右边找到服务器并转到它的属性(右击)
  3. 将登录方法更改为本地系统。

enter image description here

enter image description here

我刚刚在 Sql 服务器配置管理器中启用了 TCP/IP,VIA,命名管道,我的问题得到了解决

在安装 SQLServer 之后,实际上需要三个步骤:

  1. 启用命名管道 SQL 配置管理器—— > SQL 服务器网络考虑—— > 协议—— > 命名管道—— > 右击—— > 重新启动

named pipes enabled

  1. 重启服务器 SQL Config Manager —— > SQL Server Services —— > SQL Server (SQLEXPRESS)—— > 右击—— > Restart

  2. 使用正确的服务器和实例名称(两者都是必需的!) 这通常是 。 SQLEXPRESS,例如查看 QueryExpress 连接对话框的屏幕截图

enter image description here

就是这样。

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

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

解决这个问题非常容易:

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

步骤截图:

Screenshot of the steps

我已经建议下面的步骤来解决你的问题 如何修复错误“命名管道提供程序,错误40-无法打开到’SQLServer 的连接

  1. 检查 SQLServer 服务服务是否正常工作。
  2. 同时检查 SQLServer (MSSQLSERVER)工作状态是否良好。
  3. 也检查工作良好的 SQLServer 浏览器
  4. 删除所有以前的 化名,现在根据您的要求创建新的别名。
  5. 现在检查 SQLServer 默认 左舷1433的工作情况
  6. 接下来在实例中点击客户端协议,然后点击 TCP/IP,现在点击鼠标右键点击,打开属性,在这里您可以确保您的工作罚款您的默认端口 SQL 1433
  7. 打开您的 SQLServerManagementStudio,然后右键单击,单击“ 财产”选项,然后单击 关系选项卡,最后勾选 允许远程连接到此服务器
  8. 检查正确的工作或你的 IP 主机

我试图在 VS2015中添加一个新的连接。这里所有的建议都不管用。由于怀疑向导中存在某种 bug,特别是因为 SSMS 能够很好地连接,我决定尝试欺骗它。成功了!

  1. 使用“创建新的 SQLServer 数据库”代替添加连接。输入您的服务器名称和新数据库的随机名称,例如“ test”。

  2. 假设成功,在 VS 中打开服务器资源管理器,在数据连接中找到连接,右键单击它并选择修改连接。

  3. 将“ test”(从步骤1开始)更改为要连接到的现有数据库的名称。点击“测试连接”。这次应该可以了!

  4. 删除在步骤1中创建的临时数据库。

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

在意识到自己的错误之前,我在这个问题上纠结了很长时间——我在连接字符串中使用了逗号而不是分号

我有这个问题,但上面的建议都没有解决。

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

对我来说, 我打开 SQLServerManagementStudio 并在数据库引擎中搜索 SQLEXPRESS。 它有两个实例,我选择了正确的一个。

enter image description here

对我来说是防火墙的问题。

首先,您必须添加端口(比如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

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

我也遇到了同样的问题,我使用 MSSQLServerManagementStudio2017,通过以下步骤解决了这个问题:

  1. 检查 SQLServerServices 服务是否正常工作。
  2. 还要检查 SQLServer 是否正常工作(MSSQLSERVER)。
  3. 还要检查 SQLServer 浏览器是否正常工作。
  4. 重新启动 SQLServer (MSSQLSERVER)

修好了。

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

你会看到 : enter image description here

解决方法: enter image description here

我几乎尝试了这个页面上的所有东西,但是我有一些潜在的问题,这些问题实际上是需要解决的。我无法执行某些操作,比如打开 SQLServer 配置管理器,结果导致 WMI 提供程序文件损坏或丢失。

根据我读到的内容,有很多单调乏味的方法来解决这个问题,但 tweaking.com 的工具能够删除和替换/修复我的 WMI (Windows 管理规范)提供者文件。

我过去常常修理电脑,tweaking.com 工具给我留下了深刻的印象,这是从我去过的一个 WMI 错误论坛页面中得到的建议。

在我修复了这个问题之后,我就可以连接到我的 SQL 数据库了,无论是本地的还是远程的。

希望这对谁有帮助。

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

如果您正在使用 Asp.net 核心并使用 appsetings.json,那么将服务器写为 本地主机,然后将 sql 实例名写入已启用的命名管道,如下所示

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

您的 SQLServer 实例正在使用动态端口,该端口无法工作。强制 SQLServer 使用静态端口 # 1433。

完整详细信息 : 首先,如果只有缺省实例和命名实例或命名实例(这是我的情况) ,那么这个问题更有可能出现。

关键概念 : 安装在计算机上的每个 Microsoft SQL Server 实例都使用不同的端口来监听传入的连接请求。SQLServer 的默认实例使用端口 # 1433。当您安装命名实例时,它们将开始使用与命名 SQLServer 实例对应的 Windows 服务启动时决定的动态端口。

我的代码在连接到 VM 上唯一的命名 SQLServer 实例时失败(错误代码为40)。您可以尝试以下可能的解决方案:

解决方案 # 1 : 尝试连接到 SQLServer 实例的客户端代码从 SQLServer 浏览器服务获得帮助,以确定命名实例监听传入连接的端口号。确保您的计算机上正在运行 SQL 浏览器服务。

解决方案 # 2 : 检查命名的 SQLServer 实例正在从 SQLServer 配置管理器使用的端口 # (黄色) ,如下面的快照所示:

enter image description here

在连接字符串中显式使用该端口号,或者使用如下所示的 sqlcmd:

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

解决方案 # 3 : 强制命名实例使用默认实例使用的端口 # 1433。请记住,只有当您的计算机上没有任何默认的 SQLServer 实例时,此方法才会有效,因为默认的 SQLServer 实例已经在使用端口 # 1433。两个不同的 Windows 服务不能使用相同的端口号。

标记 TCP Dynamic ports字段为空白,TCP Port字段为1433。

enter image description here

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

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

OR

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

注意 : TCP/IP 设置中的每个更改都需要重新启动相应的 Windows 服务。

有趣的是,在解决了这个错误之后,当我回到动态端口设置来重现同样的错误时,它并没有发生。不知道为什么。

请阅读下面有趣的线程,了解更多关于 SQLServer 动态端口的信息:

如何在多个实例上配置 SQLServer 端口?

什么时候动态端口是“动态的”?

何时使用 TCP 动态端口,何时使用 TCP 端口?

我从 这个的博客上找到了解决我问题的方法。

如果您尝试重新启动 MSSQLSERVER 服务,但它不工作,这可能是一个解决方案:

如果使用 SQLExpress,则服务器名称应为以下 ComputerNameSQLExpress。但是,对于 SQLDeveloper,不必在 ComputerName 之后纠正 SQLDeveloper。

我收到一个 链接服务器上的错误掉线了。它位于 sql 查询中,dll 位于另一个项目和另一种语言(VB)中。将查询复制到 sql 工作室管理器中,然后直接从那里运行查看这是否也是您的问题。