.NET Core Worker Service出现RDP用户登录SQL失败及版本疑问咨询
问题分析与解决
核心原因:连接字符串配置冲突
你的连接字符串同时包含了SQL Server身份验证参数和Windows集成身份验证参数,导致SQL Server优先启用Windows身份验证:
User Id=user;Password=pwd:指定使用SQL Server账号登录Trusted_Connection=True:指定使用当前程序运行的Windows用户身份登录(即你RDP登录的domain/xyz用户)
SQL Server的规则是:当Trusted_Connection=True(或等价的Integrated Security=True)存在时,会直接忽略SQL账号的用户名和密码,强制使用Windows身份验证,这就是报错提示RDP用户登录失败的直接原因。
解决步骤
修改连接字符串,移除Trusted_Connection=True参数,保留SQL Server身份验证配置,修正后的连接串如下:
"Server=xyz.a.b;Database=db1;User Id=user;Password=pwd;MultipleActiveResultSets=true;TrustServerCertificate=True;Encrypt=Optional;"
关于.NET Core运行时的疑问
你的Worker Service文件夹下存在runtime子文件夹,说明这是自包含部署的程序。自包含部署会将对应的.NET Core运行时打包进程序目录,不需要在Windows Server 2016上单独安装.NET Core 8.0运行时,程序会直接使用自带的runtime,因此运行时不是导致数据库连接失败的因素。
额外验证说明
你提到能在服务器上通过SSMS用相同SQL账号连接数据库,说明该SQL账号的权限和配置是正常的,只要修正连接字符串的冲突配置,Worker Service就能正常使用指定的SQL账号连接数据库。
内容的提问来源于stack exchange,提问作者user3497702
相关产品推荐
相关产品推荐

