Windows下.NET Core API连接Docker托管SQL时登录身份异常问题
问题原因
你的连接字符串同时配置了User Id/Password(SQL Server身份验证)和Trusted_Connection=True(Windows身份验证),SQL Server会优先采用Windows身份验证,因此忽略了你指定的sa账户,转而使用当前API进程的Windows身份(这里是容器内的Guest账户)尝试登录,最终因找不到匹配的登录名失败。
解决步骤
- 修正连接字符串:移除
Trusted_Connection=True,或设置为False,同时去掉User Id和Password的单引号(单引号会被解析为账户/密码的一部分,导致验证失败):
"ConnectionStrings": { "DefaultConnection": "Data Source=localhost,1433;Database=Cancer;User Id=sa;Password=dockersql;TrustServerCertificate=True;Encrypt=true;" }
- 确认Docker容器配置:确保启动SQL Server容器时已启用SQL Server身份验证,启动命令需包含
ACCEPT_EULA和SA_PASSWORD环境变量:
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=dockersql" -p 1433:1433 --name sqlserver -d mcr.microsoft.com/mssql/server:2022-latest
- 验证账户可用性:用SQL Server Management Studio或
sqlcmd工具,通过sa账户连接localhost,1433,确认能正常访问Cancer数据库。
内容的提问来源于stack exchange,提问作者CapedCrusader01
相关产品推荐
相关产品推荐

