【问题标题】:.Net Web app SQL Server Connection String Linux Issue.Net Web 应用程序 SQL Server 连接字符串 Linux 问题
【发布时间】:2021-09-08 12:22:50
【问题描述】:

我遇到了与部署在 Linux 环境中的 .net 核心应用程序使用的 SQL Server 连接字符串有关的问题。 .net core 应用需要访问不同服务器上的 sql server。

我使用的连接字符串如下

"ConnectionStrings" : {
SQLDbContext": "Server=serverabc\\dev_xys;Database=mynewDatabase;Integrated Security = True"
}

当我在我的 Windows 电脑上本地运行时它工作正常

但是当它部署到 Linux 机器时,我收到以下错误

ExtendedSocketException:名称或服务未知

System.Net.Dns.GetHostEntryOrAddressesCore(string hostName, bool justAddresses) 在 Dns.cs,第 323 行

异常:无法连接到 SQL Server Browser。确保 SQL Server 浏览器已启动

我已检查运行 .Net Service Deployed 的服务帐户是否可以访问数据库。

连接字符串需要修改吗?

【问题讨论】:

  • 假设您在使用 AD 身份验证时在 Linux 主机上配置了 Kerberos?
  • 是的,没错

标签: .net sql-server linux connection-string


【解决方案1】:

这仅在以下情况下有效

  1. SQL Server 已启用 TCP/IP,并且浏览器服务正在运行
  2. Windows 防火墙允许在 SQL Server 实例侦听的任何端口上使用 UDP 端口 1434 和 TCP。
  3. 客户端可以解析主机名

或者您可以使用 SQL Server 配置管理器将 SQL Server 实例设置为侦听固定端口(默认为 1433),并在连接字符串中指定该端口而不是实例名称。

【讨论】:

  • 必须是1434端口吗?
  • 对于浏览器服务,是的。 SQL Server 服务可以侦听您想要的任何端口。
  • 我认为它的主机名我在连接字符串中添加了端口,现在我 GetExtendedSocketException: Name or service not known in DNS.cs...
猜你喜欢
  • 1970-01-01
  • 2021-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多