171

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

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

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

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

我还能在这里做什么?

4

31 回答 31

128

解决这个问题很容易:

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

步骤截图:

步骤截图

于 2016-01-03T05:45:51.540 回答
99

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

当一切都正确配置、命名管道、用户访问权限时,我花了大约一个小时试图弄清楚SERVER/INSTANCENAME出了什么问题……突然让我震惊了,这不是斜杠,而是反斜杠( \)。

恐怖,耻辱……

于 2012-11-13T18:21:46.313 回答
64

在安装 SQL Server 之后,这实际上是一个三步过程:

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

启用命名管道

  1. 重启服务器 SQL Config Manager --> SQL Server Services --> SQL Server (SQLEXPRESS) --> 右键 --> 重启

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

在此处输入图像描述

你有它。

于 2015-10-24T07:34:21.577 回答
20

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

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

于 2014-03-12T23:44:12.370 回答
18

MSDN Social 上的一个线程,Re: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server有一个相当不错的与您的错误相关的可能问题列表。您可能想看看它们中的任何一个是否可能是您正在经历的。

  • 不正确的连接字符串,例如使用SqlExpress
  • 未在 SQL 实例上启用命名管道 (NP)
  • 未启用远程连接
  • 服务器未启动,或在连接字符串中指向的不是真实服务器
  • 其他原因,例如不正确的安全上下文
  • 尝试您正在使用的两台机器之间的基本连接测试
于 2012-03-30T16:43:21.903 回答
12

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

于 2015-09-02T09:03:18.843 回答
9

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

于 2013-09-11T11:06:29.457 回答
9

感谢达米安...

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

网络配置......(对于本地主机)

<add name="FooData" connectionString="Data Source=localhost\InstanceName;Initial Catalog=DatabaseName;Integrated Security=True;" providerName="System.Data.SqlClient" />
于 2013-12-30T21:48:26.800 回答
6

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

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

于 2014-01-16T07:05:02.597 回答
4

非常简单的解决方案

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

于 2013-11-11T16:20:00.600 回答
4

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 端口?

我从这个博客中得到了解决我的问题的线索。

于 2019-04-13T09:30:31.313 回答
3

就我而言,我有一个独立服务器,我将配置管理器中的 sql server 端口默认端口 1433 更改为某个数字并重新启动 sql serve 服务以生效,如果我登录,我可以通过 management studio 连接到 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。

于 2014-12-19T18:43:52.573 回答
3

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

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

并修复它。

于 2018-01-14T19:59:19.033 回答
3

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

你会看到在此处输入图像描述

修理: 在此处输入图像描述

于 2018-03-06T05:34:35.053 回答
2

尝试以下步骤:

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

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

  3. 启动它们(如果无法启动。转到第 4 步)。

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

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

于 2014-10-21T02:41:54.187 回答
1

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

在此处输入图像描述

于 2017-06-15T05:30:36.937 回答
1

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

  "ConnectionString": {
    "dewDB": "server=localhost\\dewelopersql;database=dewdb;User ID=sa;password=XXXXX",
  },
于 2019-03-20T11:14:40.920 回答
0

执行完这里提到的所有步骤后,如果仍然无法连接,请尝试在 etc 文件夹中的 hosts 文件中添加带有 IP 地址的 DNS。在连接字符串中添加 IP 地址而不是 DNS 名称应该是检查连接是否确实有效的临时解决方案。

于 2014-02-13T20:55:25.657 回答
0

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

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

我确保并做了上述事情,我只想分享双反斜杠

oBuilder.DataSource = "SPECIFICPCNAME\SQLEXPRESS";

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

我希望这能帮助下一个人——我牺牲了晚餐、宵夜和 NBA 集锦时间来解决这个问题(耻辱)

感谢[Tamizh venthan] ^_^

于 2014-12-02T02:31:21.950 回答
0

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

于 2014-12-20T19:24:58.317 回答
0

打开 SQL Server 配置管理器

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

在此处输入图像描述

在此处输入图像描述

于 2015-03-03T19:31:28.397 回答
0

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

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

于 2015-12-10T07:33:30.480 回答
0

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

  1. 不要添加连接,而是使用“创建新的 SQL Server 数据库”。输入您的服务器名称和新数据库的随机名称,例如“test”。

  2. 假设成功,在 VS 中打开 Server Explorer,在 Data Connections 中找到连接,右键单击它并选择 Modify Connection。

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

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

于 2016-06-30T17:01:24.127 回答
0

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

于 2016-08-23T15:45:10.480 回答
0

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

于 2016-10-11T15:10:18.840 回答
0

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

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

于 2016-12-31T23:56:00.347 回答
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

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

于 2017-10-13T15:23:13.230 回答
0

我几乎尝试了此页面上的所有内容,但我遇到了一些实际上需要解决的潜在问题。我无法执行某些操作,例如打开 SQL Server 配置管理器,最终导致 WMI 提供程序文件损坏/丢失。

根据我所读到的内容,有很多繁琐的方法可以解决这个问题,但是来自tweaking.com 的工具能够删除和替换/修复我的 WMI(Windows 管理规范)提供程序文件。

我曾经做过电脑维修,总体而言,tweaking.com 工具给我留下了深刻的印象,它是从我访问的 WMI 错误论坛页面之一中提出的。

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

希望这可以帮助某人。

于 2018-07-22T21:17:12.950 回答
0

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

于 2019-03-13T20:17:20.313 回答
0

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

如果您使用的是 SQLExpress,您的服务器名称应为以下 ComputerName\SQLExpress。但是,对于 SQLDeveloper,您不必在 ComputerName 之后更改 SQLDeveloper。

于 2019-07-20T19:18:17.997 回答
-1

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

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