【发布时间】:2020-08-11 13:46:14
【问题描述】:
关于这个的帖子有很多,我都读过了。
SQL Server 位于远程计算机上。我通过服务器资源管理器和 SSMS 连接到 SQL Server。我知道服务器已启动、响应迅速并允许远程连接。 Image of VS Server Explorer connected to SQLServer
我有一个 .NET Framework 4.8 应用程序,它能够按预期连接到服务器实例:
using (System.Data.SqlClient.SqlConnection con =
new System.Data.SqlClient.SqlConnection(@"Server=192.168.10.11\vtdwprod;UID=xxxxxxx;Password=xxxxxxx;"))
{
con.Open();
Console.WriteLine("Connected successfully.");
}
.NET Core 3.1 应用中的相同代码无法连接并报告网络错误。
using (Microsoft.Data.SqlClient.SqlConnection con =new SqlConnection(@"Server=192.168.10.11\vtdwprod;UID=xxxxx;Password=xxxxx;"))
{
con.Open();
Console.WriteLine("Connected successfully.");
}
我在 .NET Core 应用上尝试过 System.Data 和 Microsoft.Data 库,但无法成功连接。
【问题讨论】:
-
你能把你的代码贴在这里吗?
-
从 SQL 日志中验证命名实例当前使用的端口,并尝试直接连接到该端口,而不使用实例名称。例如,.NET FX 和 .NET Core 上的
Server=tcp:192.168.10.11,38721。还要确保 SQL Browser 服务正在运行并且 UDP 端口 1434 未被阻塞。 -
好的,与 tcp:
, 连接成功。为什么 .NET Core 应用无法根据 DNS 主机名、IP 地址或实例名称正确路由我的连接? -
实例名称到端口的解析需要 SQL Browser 服务。因此,可能两者都无法访问浏览器,但 .NET Framework 以某种方式转向命名管道,或者配置了客户端别名。或者浏览器可能只能访问 IPv4 或只能访问 IPv6。
-
无论如何要继续使用该端口,请在 SQL Server 配置管理器中设置实例使用固定端口。
标签: c# sql-server c#-4.0 .net-core