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

时间:2012-03-30 14:56:12

标签: sql-server sql-server-2005 database-connectivity

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

  

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

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

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

32 个答案:

答案 0 :(得分:103)

解决这个问题非常简单:

  1. 转到控制面板。
  2. 搜索服务。
  3. 从搜索结果中打开本地服务窗口
  4. 重新启动MSSQLSERVER服务。
  5. 步骤截图:

    Screenshot of the steps

答案 1 :(得分:74)

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

我花了大约一个小时试图弄清楚当所有内容配置正确时, SERVER / INSTANCENAME 有什么问题,命名管道,用户访问权限......突然间它让我感到震惊,它不是斜线,它是反斜杠\)。

恐怖,耻辱......

答案 2 :(得分:36)

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

  1. 启用命名管道 SQL Config Manager - > SQL Server网络构成 - >协议 - >命名管道 - >右键单击 - >重新启动
  2. named pipes enabled

    1. 重启服务器 SQL Config Manager - > SQL Server服务 - > SQL Server(SQLEXPRESS) - >右键单击 - >重新启动

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

    3. enter image description here

      你有它。

答案 3 :(得分:17)

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

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

答案 4 :(得分:15)

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

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

答案 5 :(得分:9)

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

答案 6 :(得分:7)

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

答案 7 :(得分:5)

感谢达米安......

TCP / IP 命名管道 ......都启用了

Web Config ....(对于localhost)

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

答案 8 :(得分:5)

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

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

答案 9 :(得分:3)

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

  1. 检查是否正常运行SQL Server服务。
  2. 同时检查SQL Server(MSSQLSERVER)的工作情况是否良好。
  3. 还要检查SQL Server Browser的工作正常。
  4. 重新启动SQL Server(MSSQLSERVER)
  5. 并修复它。

答案 10 :(得分: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。

答案 11 :(得分:1)

请尝试以下步骤:

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

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

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

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

  5. 尝试使用Open SQL并连接数据库。

答案 12 :(得分:1)

如果您正在使用Asp.net core并使用appsettings.json,则将服务器写为 localhost ,然后在写了这样的启用命名管道的sql实例名称之后

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

答案 13 :(得分:1)

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

您会看到enter image description here

要修复: enter image description here

答案 14 :(得分:0)

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

答案 15 :(得分:0)

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

enter image description here

答案 16 :(得分: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,&#34;无法注册服务主体名称&#34;,Null

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

答案 17 :(得分:0)

我在此页面上尝试了几乎所有内容,但实际上存在一些需要解决的潜在问题。我无法做某些事情,例如打开SQL Server Configuration Manager,最终导致WMI提供程序文件损坏/丢失。

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

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

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

希望这对某人有帮助。

答案 18 :(得分:0)

我建议采取以下步骤来解决您的问题如何修复错误&#39;命名管道提供商,错误40 - 无法打开与&#39;的连接SQL Server &#39;

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

答案 19 :(得分:0)

TL; DR; 您的SQL Server实例使用的动态端口不起作用。强制SQL Server使用静态端口#1433。

完整详细信息:首先,如果您混合使用默认实例和命名实例或仅使用命名实例(这就是我的情况),则更可能出现此问题。

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

我的代码无法(错误代码为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

OR

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博客中找到了解决问题的方法。

答案 20 :(得分:0)

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

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

答案 21 :(得分:0)

我看到许多不同的解决方案……其中一些确实很有帮助。 最终我得到了它的工作...

将我的Network Profile"Public"更改为"Private"

要更改(或检查)。

  

点击“开始”->“设置”->“网络和互联网”

     

单击状态
单击“更改连接属性”
在“网络”下   个人资料选择“私人”

答案 22 :(得分:0)

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

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

答案 23 :(得分:0)

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

答案 24 :(得分:0)

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

答案 25 :(得分:0)

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

  1. 使用&#34;创建新的SQL Server数据库&#34;而不是添加连接。输入您的服务器名称和新数据库的随机名称,例如&#34;测试&#34;

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

  3. 改变&#34;测试&#34; (从步骤1开始)到要连接的现有数据库的名称。单击&#34;测试连接&#34;。这次它应该有效!

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

答案 26 :(得分:0)

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

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

答案 27 :(得分:0)

打开SQL Server配置管理器

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

    enter image description here

答案 28 :(得分:0)

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

答案 29 :(得分:0)

  

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

     

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

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

oBuilder.DataSource =&#34; SPECIFICPCNAME \ SQLEXPRESS&#34;;

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

我希望这对下一个人有所帮助 - 我已经牺牲了晚餐,午夜零食和NBA亮点时间解决这个问题(羞耻)

感谢[Tamizh venthan] ^ _ ^

答案 30 :(得分:0)

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

答案 31 :(得分:0)

非常简单的解决方案

使用(local)\InstanceName 而已。它对我有用。