.NET 8部署Linux环境时SQL Server连接实例名报错咨询
问题分析与解决
这个问题和微软近期变更无关,核心原因是Linux环境下的SQL Server客户端不支持用反斜杠\指定实例名的格式:Windows系统中SQL Server依赖WINS/SMB广播实现实例定位,但Linux版的Microsoft.Data.SqlClient不支持该机制,当你在连接字符串中写<DB_ALIAS>\i01,99999时,客户端会把整个字符串当作服务器名解析,最终导致无法定位目标实例。
可行解决方案
直接调整连接字符串格式,适配Linux环境的客户端规则:
推荐格式:直接使用别名/IP+端口
既然已经指定了固定端口99999,实例名i01已无必要(实例端口固定后可直接通过端口访问),修改为:Data Source=<DB_ALIAS>,99999;Initial Catalog=DbName;User ID=<username>;Password=<password>替代格式:使用
Server关键字
语法逻辑和上述一致,只是关键字不同:Server=<DB_ALIAS>,99999;Initial Catalog=DbName;User ID=<username>;Password=<password>
补充说明
你的.NET 8代码配置(AddDbContext结合UseSqlServer)本身没有问题,故障完全源于连接字符串的跨平台兼容性差异——Windows客户端支持\实例名的实例发现方式,但Linux客户端必须直接指定端口。
内容的提问来源于stack exchange,提问作者Odrai
相关产品推荐
相关产品推荐

