You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core MVC容器无法连接SQL Server Docker容器问题求助

解决方案

核心问题根因

从报错日志可以看出两个核心问题:一是身份验证参数未被正确识别导致登录用户为空,二是错误启用了Windows集成身份验证,和容器SQL Server的验证模式不匹配。

1. 修正连接字符串语法错误

你所有尝试的连接字符串中,Database=PracticeMVC 之后错误使用了逗号作为分隔符,正确分隔符应为分号。这个错误会导致后续的用户名、密码参数被识别为数据库名称的一部分,完全没有加载到身份验证配置,因此日志提示登录用户为空。
修正后的可用连接字符串参考:

Server=localhost,1433;Database=PracticeMVC;User Id=SA;Password=Pa$$w0rd2021;Encrypt=False;TrustServerCertificate=True;

2. 移除集成身份验证配置

第二组尝试的连接字符串中添加了Trusted_Connection=True参数,该参数会强制使用Windows集成身份验证,直接忽略你配置的SA账号密码,和容器SQL Server默认开启的SQL身份验证模式不匹配。需删除该参数,或显式设置为Trusted_Connection=False。

3. 确认SA密码的实际值

如果你在Windows PowerShell中执行初始的docker run命令,单引号包裹的环境变量中$$会被转义为单个$,实际容器内设置的SA密码为Pa$w0rd2021。可以执行以下命令进入容器验证登录:

# 替换<容器ID>为你的MSSQL容器ID
docker exec -it <容器ID> /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Pa$$w0rd2021"

如果登录失败,将密码替换为Pa$w0rd2021重试,登录成功后将连接字符串中的密码改为对应值即可。如果要避免后续出现转义问题,创建容器时建议改用双引号包裹环境变量:

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=Pa$$w0rd2021" -e "MSSQL_PID=Express" -p 1433:1433 -d mcr.microsoft.com/mssql/server:2017-latest

4. 验证前置条件

完成上述配置后,可先在本地使用SSMS、Azure Data Studio等数据库管理工具,用相同的连接参数尝试连接容器中的SQL Server,确认服务正常、账号密码正确后,再在ASP.NET Core应用中使用对应配置即可。

内容的提问来源于stack exchange,提问作者Shweytank Mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:18:03