无法连接到服务器 - 一个与网络或实例相关的错误

515

当我尝试连接到SQL Server时,出现以下错误:

在建立与SQL Server的连接时发生了与网络相关或特定实例的错误。无法找到服务器或服务器不可访问。请验证实例名称是否正确,并确认 SQL Server 已配置为允许远程连接。(提供程序:命名管道提供程序,错误: 40 - 无法打开到 SQL Server 的连接)

当我尝试在Visual Studio 2010中将我的数据库配置为网格视图时,就会出现此错误。我不知道如何调试这个错误。

您该如何调试这个错误?除了错误消息中提到的步骤外,我还应该采取哪些步骤来确定真正发生了什么?


14
用ping测试SQL Server连接不可靠,在Windows Server中默认禁用ICMP回显请求。无效的用户名或密码并不是错误提示的意思,那是完全不同的错误。 - Sean Airey
2
请尝试阅读这篇文章,它详细介绍了诊断连接问题所需的所有步骤:http://social.technet.microsoft.com/wiki/contents/articles/2102.how-to-troubleshoot-connecting-to-the-sql-server-database-engine.aspx - Sean Airey
4
如果您在首次设置SQL Server {version} Express时出现此错误,请参见我的回答及其截图。我再次回到StackOverflow并重新使用了我的回答,因为它是唯一有效的解决方法。https://dev59.com/IHM_5IYBdhLWcg3waSX9 - Entree
这个问题在Meta上进行了讨论。 - Joe
2
我也遇到过同样的错误。在我的情况下,我没有正确拼写服务器名称。有时候问题就出在这些简单的地方。 - Tarzan
显示剩余10条评论
57个回答

3
如果您在 Visual Studio 调试时遇到此问题,请确保项目构建路径指向本地驱动器,或按照 这些步骤 授予网络文件夹权限。

3

在更改计算机名称后,我遇到了这个问题。 所以我只需在SQL Server Management Studio中更新服务器名称:

"服务器名称" -> "浏览更多..." -> "数据库引擎" -> 选择"[您的计算机名称]" -> "确定"


2

用于远程服务器数据库连接。 如果没有一个答案能够满足您,最有可能是您还没有将SQL端口1433添加到Windows防火墙例外中。请按照以下步骤操作。

  1. 转到开始菜单,打开运行,键入WF.msc
  2. 带高级安全性的Windows防火墙中。
  3. 添加入站规则。
  4. 添加端口1433。
  5. 命名您的规则。
  6. 重新启动SQL服务。

有关连接远程服务器遇到问题的完整指南。故障排除连接到SQL Server数据库引擎。


2

我通过将使用Entity Framework的项目设置为启动项目,然后运行"update-database"命令来解决了这个问题。


2

当您的SQL Server实例被停止时,会出现此错误。

转到所有程序>SQL Server >配置工具>SQL SERVER CONFIGURATION MANAGER

然后单击SQL SERVER SERVICES,将显示实例列表,请选择相关实例并单击顶部工具栏上的播放图标,希望这能帮助您。

虽然回答晚了一些,但还不晚;)


1

看起来您的本地数据库实例没有运行。 要在计算机启动时启动它,请将以下行添加到“开始菜单\启动”文件夹中的BAT文件中。

sqllocaldb start name_of_instance

其中name_of_instance是您想要启动的localdb实例的名称。您可以使用命令行列出可用实例,命令为sqllocaldb i

例如,如果您正在使用SQL Server Management Studio并连接到服务器名称(localdb)\v11.0,则您的BAT文件将如下所示:

sqllocaldb start v11.0

1
我的问题是你需要在仓库层和Web层中都有一个连接字符串条目。一旦我将其添加到我的web.config以及我的app.config中,Entity Framework就能够创建迁移。我的问题是为什么web.config需要它,因为那里绝对没有数据库访问。

1

即使我使用正确的凭据,我也遇到了这种问题。请确保执行以下操作。

确保您的 SQL Server 凭据正确。在 SQL Server 字段中,您必须使用计算机名称。 enter image description here

要查找计算机名称,请在计算机上搜索计算机名称,然后您可以找到计算机名称。然后粘贴它并尝试连接。

如果还不起作用,请尝试从服务中启动计算机上的 SQL Server。下面的屏幕截图将有所帮助。

enter image description here


我的IT部门对我的机器进行了更新,改变了我的电脑名称。没有人告诉我这会发生。我花了太长时间试图找到一个更复杂的原因,以解释为什么我无法访问我自己的SQL Server Express服务器,结果发现我的本地PC的服务器名称被更改了,而我却毫不知情。 - undefined

0

在将Windows升级为Windows Pro 10 21H2后,我遇到了同样的问题。我有两个SQL实例 - 2014和2019,但我无法连接到2019版本。 我重启了计算机并重启了所有与SQL相关的服务。其中两个服务显示错误(SQL Server和SQL Server代理),我无法启动它们。 我也无法从C:\ Windows \ SysWOW64 \ SQLServerManager15.msc启动这两个服务。 在日志文件中(C:\ Program Files \ Microsoft SQL Server \ MSSQL15.MSSQLSERVER01 \ MSSQL \ Log)我看到了以下内容:

Initializing the FallBack certificate failed with error code: 15, state: 29, error number: 0.
Error: 17190, Severity: 16, State: 1.
Unable to initialize SSL encryption because a valid certificate could not be found, and it is not possible to create a self-signed certificate.
Error: 17182, Severity: 16, State: 1.
TDSSNIClient initialization failed with error 0x80092004, status code 0x80. Reason: Unable to initialize SSL support. Cannot find object or property. 
Error: 17182, Severity: 16, State: 1.
TDSSNIClient initialization failed with error 0x80092004, status code 0x1. Reason: Initialization failed with an infrastructure error. Check for previous errors. Cannot find object or property. 
Error: 17826, Severity: 18, State: 3.
Could not start the network library because of an internal error in the network library. To determine the cause, review the errors immediately preceding this one in the error log.
Error: 17120, Severity: 16, State: 1.
SQL Server could not spawn FRunCommunicationsManager thread. Check the SQL Server error log and the operating system error log for information about possible related problems.

原来在升级后,服务的“登录”属性(服务属性的第二个选项卡)被设置为NT AUTHORITY\NETWORK SERVICES。当我将其更改为“本地系统帐户”时,我能够启动该服务并连接到MS SQL 2019实例。 这篇msdn论坛帖子帮助我找到了这个解决方法。

0
在尝试了所有答案之后,我将端口号(1433)与服务器名称用逗号分隔放入连接字符串中,这对我起作用了。具体如下所示:
"Server=**.***.***.*\\MYSERVER,1433;Database=****;User Id=****;Password=*****;MultipleActiveResultSets=true;TrustServerCertificate=True"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接