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

如何修复连接Docker中SQL Server时的"无法打开连接"错误?

问题:Docker中SQL Server容器连接失败,数据库迁移报错

错误信息

SQL Server。找不到服务器或无法访问服务器。请验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(provider: TCP Provider, error: 40 - Could not open a connection to SQL Server: Could not open a connection to SQL Server)

连接字符串

"CatalogDbConnectionString": "Server=tcp:127.0.0.1,1433;Initial Catalog=CatalogDb;User Id=sa;Password=Passw@rd"

docker-compose.override.yml 配置

catalogdb:
    environment:
      - SA_PASSWORD=Passw@rd
      - ACCEPT_EULA=Y
    ports:
      - "1433:1433"
    volumes:
      - /var/opt/mssql

代码片段

using (var scope = app.Services.CreateScope())
{
    var context = scope.ServiceProvider.GetRequiredService<CatalogDBContext>();
    var env = scope.ServiceProvider.GetRequiredService<IWebHostEnvironment>();
    var settings = scope.ServiceProvider.GetRequiredService<IOptions<CatalogSettings>>();
    var logger = scope.ServiceProvider.GetRequiredService<ILogger<CatalogDBSeedData>>();

    context.Database.Migrate();

    new CatalogDBSeedData().SeedAsync(context, env, settings, logger).Wait();
}

排查与解决步骤
  • 检查容器运行状态:先确认catalogdb容器是否正常启动并运行,执行命令:

    docker ps
    

    若容器未启动,执行docker-compose up -d catalogdb启动;若容器异常,用docker logs catalogdb查看日志,确认SQL Server初始化是否完成。

  • 修正容器内服务的连接字符串:如果你的代码也运行在Docker容器中,不能使用127.0.0.1,需改用Docker服务名称catalogdb作为服务器地址,修改后的连接字符串:

    "CatalogDbConnectionString": "Server=catalogdb,1433;Initial Catalog=CatalogDb;User Id=sa;Password=Passw@rd"
    

    Docker内部容器之间通过服务名通信,127.0.0.1指向容器自身,而非SQL Server容器。

  • 验证宿主机端口占用情况:如果代码运行在宿主机,检查1433端口是否被其他程序占用:

    # Windows系统
    netstat -ano | findstr :1433
    # Linux/macOS系统
    lsof -i :1433
    

    若端口被占用,修改docker-compose的端口映射(比如改为1434:1433),同时更新连接字符串的端口为1434。

  • 等待SQL Server初始化完成:SQL Server容器启动后需要数分钟完成初始化,未完成时连接会失败,可等待容器日志出现SQL Server is now ready for client connections.后再执行迁移。

  • 确认SA密码合规性:检查SA密码是否符合SQL Server复杂度要求(至少8位,包含大小写、数字、特殊字符),若密码不合规会导致SQL Server无法正常启动,可通过容器日志确认。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:45:42