我似乎无法从网站连接到我的数据库。我收到这个错误:
命名管道提供程序,错误:40 - 无法打开与SQL Server的连接
我尝试使用本地IP地址连接以及公共IP地址。我试过了:
我还能在这做什么?
答案 0 :(得分:103)
解决这个问题非常简单:
步骤截图:
答案 1 :(得分:74)
最简单的解决方案 - 检查你的斜线是否回来......
我花了大约一个小时试图弄清楚当所有内容配置正确时, SERVER / INSTANCENAME 有什么问题,命名管道,用户访问权限......突然间它让我感到震惊,它不是斜线,它是反斜杠(\
)。
恐怖,耻辱......
答案 2 :(得分:36)
安装SQL Server后,这是一个三步过程:
答案 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 ,有一个非常不错的列表,列出了与您的错误相关的可能问题。您可能想看看它们中的任何一个是否正如您所遇到的那样。
答案 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并使用以下步骤解决了这个问题:
并修复它。
答案 10 :(得分:3)
建立与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)
请尝试以下步骤:
打开“服务”窗口(打开“运行框”并键入services.msc)。
寻找SQL服务(带有SQL前缀)。
启动它们(如果无法启动。转到步骤4)。
右键单击每项服务 - &gt;属性 - &gt;更改为“登录”选项卡 - &gt;选择登录为“Local ...” - &gt; 0K。然后再次启动SQL服务。
尝试使用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 ”(实例名称)添加到“服务器名称”。
答案 14 :(得分:0)
在服务器上打开端口号1433进行sql远程连接
答案 15 :(得分:0)
答案 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;
答案 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实例正在使用的端口号(黄色):
在您的连接字符串中显式使用该端口号,或如下所示使用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
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能够很好地连接,我决定尝试欺骗它。它奏效了!
使用&#34;创建新的SQL Server数据库&#34;而不是添加连接。输入您的服务器名称和新数据库的随机名称,例如&#34;测试&#34;
假设此操作成功,请在VS中打开服务器资源管理器,在“数据连接”中找到该连接,右键单击它并选择“修改连接”。
改变&#34;测试&#34; (从步骤1开始)到要连接的现有数据库的名称。单击&#34;测试连接&#34;。这次它应该有效!
删除您在步骤1中创建的临时数据库。
答案 26 :(得分:0)
我遇到了同样的问题,并通过禁用我的防火墙(ESET)解决了这个问题。
解决此问题的第一步应该是尝试从另一台计算机ping您自己的计算机。如果您启用了防火墙,则可能无法自行ping通。我尝试ping我自己的电脑,然后ping失败(没有得到服务器的响应)
答案 27 :(得分:0)
打开SQL Server配置管理器
答案 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
而已。它对我有用。