我似乎无法从站点连接到我的数据库。我收到此错误:
命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接
我尝试使用本地 IP 地址和公共 IP 地址进行连接。我试过了:
- 是的,站点可以与服务器通信
- 启用命名管道/TCP。
- 允许远程连接。
- Windows 防火墙已关闭
- 在 Windows 防火墙中为端口 1433 创建了一个例外。
- 启用 SQL Server 配置管理器中的所有内容。
我还能在这里做什么?
我似乎无法从站点连接到我的数据库。我收到此错误:
命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接
我尝试使用本地 IP 地址和公共 IP 地址进行连接。我试过了:
我还能在这里做什么?
解决这个问题很容易:
步骤截图:
最简单的解决方案 - 检查你的斜线是否回来了......
当一切都正确配置、命名管道、用户访问权限时,我花了大约一个小时试图弄清楚SERVER/INSTANCENAME出了什么问题……突然让我震惊了,这不是斜杠,而是反斜杠( \
)。
恐怖,耻辱……
在安装 SQL Server 之后,这实际上是一个三步过程:
重启服务器 SQL Config Manager --> SQL Server Services --> SQL Server (SQLEXPRESS) --> 右键 --> 重启
使用正确的服务器和实例名称(两者都是必需的!)通常这将是.\SQLEXPRESS,例如查看 QueryExpress 连接对话框中的屏幕截图。
你有它。
我刚刚安装了 SQL SERVER 2012 developer。当我创建我的第一个 SSIS 包时,当我尝试在连接管理器框中的 SQL Server 2012 Data Tools 中创建数据连接任务时收到此管道错误。我在上面的帖子的帮助下解决了。
如果选择一个命名实例并且你调用你的命名实例 SSQDatabase1 并且你的电脑的名字是 PCX1。您必须输入 PCX1\SSQDatabase1 而不仅仅是 SSQDatabase1,否则您将收到命名管道错误。
MSDN Social 上的一个线程,Re: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server有一个相当不错的与您的错误相关的可能问题列表。您可能想看看它们中的任何一个是否可能是您正在经历的。
我刚刚在 Sql Server 配置管理器中启用了 TCP/IP、VIA、命名管道,我的问题得到解决,请参阅此以获取更多信息解决命名管道错误 40
使用SERVER\\ INSTANCE NAME 。在我的项目中使用双反斜杠解决了我的问题。
感谢达米安...
TCP/IP 命名管道 ... 均已启用
网络配置......(对于本地主机)
<add name="FooData" connectionString="Data Source=localhost\InstanceName;Initial Catalog=DatabaseName;Integrated Security=True;" providerName="System.Data.SqlClient" />
确实有同样的问题。不得不迁移一些服务器时花了大约 6 个小时。尝试了有关此主题和其他主题的所有建议。
解决方案就像服务器重启一样简单!
非常简单的解决方案
使用(local)\InstanceName
就是这样。它对我有用。
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 端口默认端口 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。
我有同样的问题。我使用 MSSQL Server Management Studio 2017 并使用以下步骤解决了这个问题:
并修复它。
尝试以下步骤:
打开服务窗口(打开“运行框”并输入 services.msc)。
寻找 SQL 服务(带有 SQL 前缀)。
启动它们(如果无法启动。转到第 4 步)。
右键单击每个服务-> 属性-> 更改为“登录”选项卡-> 选择登录为“本地...”-> 0K。然后再次启动 SQL 服务。
尝试打开 SQL 并连接数据库。
如果您正在使用 Asp.net 核心并使用 appsettings.json 而不是将服务器写入本地主机,然后为启用的命名管道写入 sql 实例名称,如下所示
"ConnectionString": {
"dewDB": "server=localhost\\dewelopersql;database=dewdb;User ID=sa;password=XXXXX",
},
执行完这里提到的所有步骤后,如果仍然无法连接,请尝试在 etc 文件夹中的 hosts 文件中添加带有 IP 地址的 DNS。在连接字符串中添加 IP 地址而不是 DNS 名称应该是检查连接是否确实有效的临时解决方案。
我尝试使用本地 IP 地址和公共 IP 地址进行连接。我试过了:
是的,站点可以与服务器通信 命名管道/TCP 已启用。允许远程连接。Windows 防火墙已关闭 在 Windows 防火墙中为端口 1433 创建了一个例外。启用 SQL Server 配置管理器中的所有内容。
我确保并做了上述事情,我只想分享双反斜杠
oBuilder.DataSource = "SPECIFICPCNAME\SQLEXPRESS";
使用 SINGLE BACKSLASH 会导致构建错误,即:错误 1 无法识别的转义序列
我希望这能帮助下一个人——我牺牲了晚餐、宵夜和 NBA 集锦时间来解决这个问题(耻辱)
感谢[Tamizh venthan] ^_^
通过转到计算机管理 -> SQL 和服务启用 TCP/Ip 管道协议,确保服务已打开。在防火墙上启用端口。尝试通过命令提示符-> 以管理员身份登录;最后,用户名应该是(本地)\SQLEXPRESS。希望这可以帮助。
打开 SQL Server 配置管理器
我有同样的问题并通过禁用我的防火墙(ESET)解决了这个问题。
解决此问题的第一步应该是尝试从另一台计算机 ping 自己的计算机。如果您打开了防火墙,您可能无法 ping 自己。我尝试 ping 自己的电脑,然后 ping 失败(没有得到服务器的响应)
我试图在 VS2015 中添加一个新连接。这里的建议都没有奏效。怀疑向导中存在某种错误,特别是因为 SSMS 能够正常连接,所以我决定尝试欺骗它。有效!
不要添加连接,而是使用“创建新的 SQL Server 数据库”。输入您的服务器名称和新数据库的随机名称,例如“test”。
假设成功,在 VS 中打开 Server Explorer,在 Data Connections 中找到连接,右键单击它并选择 Modify Connection。
将“test”(从步骤 1 开始)更改为要连接的现有数据库的名称。单击“测试连接”。这次应该可以了!
删除您在步骤 1 中创建的临时数据库。
我想,我还有一个解决方案。我最近更改了我的计算机名称,所以在尝试了上述所有方法后仍然无法连接。我更改了服务器名称。服务器名称=>(浏览更多)=>在数据库引擎下,发现一个新服务器与计算机新名称相同。这奏效了,生活又美好了。
在我意识到我的错误之前,我在这个问题上挣扎了很长时间 - 我在连接字符串中使用了逗号而不是分号
我遇到了这个问题,但上面的建议都没有解决它。
当我将我的网站部署到 IIS 时,我看到了这个问题。修复是针对默认应用程序池进入高级设置,并将身份属性从默认更改为管理员。
对我来说,这是一个防火墙问题。
首先,您必须添加端口(例如 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
对我来说,它返回了错误原因
我几乎尝试了此页面上的所有内容,但我遇到了一些实际上需要解决的潜在问题。我无法执行某些操作,例如打开 SQL Server 配置管理器,最终导致 WMI 提供程序文件损坏/丢失。
根据我所读到的内容,有很多繁琐的方法可以解决这个问题,但是来自tweaking.com 的工具能够删除和替换/修复我的 WMI(Windows 管理规范)提供程序文件。
我曾经做过电脑维修,总体而言,tweaking.com 工具给我留下了深刻的印象,它是从我访问的 WMI 错误论坛页面之一中提出的。
解决此问题后,我能够在本地和远程连接到我的 SQL 数据库。
希望这可以帮助某人。
在您的服务器上打开端口号 1433 以进行 sql 远程连接
如果您尝试重新启动 MSSQLSERVER 服务,但它不起作用,这可能是一个解决方案:
如果您使用的是 SQLExpress,您的服务器名称应为以下 ComputerName\SQLExpress。但是,对于 SQLDeveloper,您不必在 ComputerName 之后更改 SQLDeveloper。
我建议了以下步骤来解决您的问题如何修复错误“命名管道提供程序,错误 40 - 无法打开与“SQL Server ”的连接