【发布时间】:2023-02-03 22:45:49
【问题描述】:
我在我的代码空间上运行一个 ASP.NET Web 应用程序,我试图连接到 SQL Server 的本地实例,我收到此处显示的错误。
我已启用文件墙以远程连接到运行 SQL Server 的端口。
这是错误:
Microsoft.Data.SqlClient.SqlException (0x80131904):建立与 SQL Server 的连接时发生了与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:TCP 提供者,错误:35 - 捕获到内部异常)
System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (00000005, 0xFFFDFFFF): 名称或服务未知
【问题讨论】:
-
错误名称或服务未知建议连接到 SQL Server Browser 服务时出现问题。您的连接字符串中是否有实例名称?你的防火墙有没有开通udp/1434访问权限?实例名称解析不太可能通过基于 NAT 的防火墙工作,因为您的公共 Internet 地址与 SQL Server 浏览器服务的 SSRP 响应中返回的地址不匹配。
-
是的,我有一个实例名称,我也允许通过指定的 sql server 端口连接
-
删除实例名称并使用正确的端口。例如:如果您的连接字符串包含
Server=tcp:1.2.3.4\MY_INSTANCE;,则客户端首先通过 1.2.3.4 在 udp/1434 上查询 SQL 浏览器服务,询问它“MY_INSTANCE正在侦听的地址和端口”,然后连接到该地址和执行 SQL 查询的端口。问题是 SQL 浏览器不知道您基于 NAT 的防火墙的公共 IP 地址 1.2.3.4,因此它的 SSRP 响应说,“连接到端口 5678 上的 192.168.0.10”,您的客户端无法连接到。请改用Server=tcp:1.2.3.4,5678;(使用您的端口)。
标签: asp.net sql-server codespaces