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

如何连接Docker本地SQL Server数据库测试异步查询方法

Docker中SQL Server的连接字符串配置及测试代码修正

一、连接字符串格式说明

Docker运行SQL Server时,连接字符串需要匹配容器配置,核心参数如下:

  • 主机与端口:本地运行Docker的话,用localhost加映射的端口(默认SQL Server容器内部端口是1433,如果你启动时用-p 14330:1433映射到主机14330端口,就写localhost,14330)。
  • 认证信息:SQL Server默认用SQL认证,账号是sa,密码是你启动容器时通过SA_PASSWORD环境变量设置的(必须符合复杂度要求,比如包含大小写、数字、特殊字符)。
  • 数据库名:替换成你实际创建的测试数据库名称,比如GamesDb。
  • 证书信任:本地测试加上TrustServerCertificate=True,跳过证书验证(生产环境禁用)。

标准连接字符串示例:

Server=localhost,1433;Database=GamesDb;User Id=sa;Password=YourStrong!Passw0rd;TrustServerCertificate=True;

如果是用Docker Compose部署,服务名设为sqlserver的话,连接字符串可直接用服务名当主机:

Server=sqlserver,1433;Database=GamesDb;User Id=sa;Password=YourStrong!Passw0rd;TrustServerCertificate=True;

二、测试项目配置步骤

  1. 在测试项目的appsettings.json中添加连接字符串:
{
  "ConnectionStrings": {
    "GamesDbContext": "Server=localhost,1433;Database=GamesDb;User Id=sa;Password=YourStrong!Passw0rd;TrustServerCertificate=True;"
  }
}
  1. 修正测试代码中的语法问题:
    原代码存在几处小错误,修正后如下:
public async Task Get_GamesByName()
{
    var options = new DbContextOptionsBuilder<GamesDbContext>()
        .UseSqlServer(Configuration.GetConnectionString("GamesDbContext"))
        .Options;

    using (var context = new GamesDbContext(options))
    {
        GamesRepository gamesRepository = new GamesRepository(context);

        var result = await gamesRepository.GetGamesByNameAsync("Witcher");

        Assert.Equal(2, result.Count);
    }
}

错误说明:

  • DbContextOptionsBuilder的Options属性首字母需大写,原代码调用顺序错误。
  • 变量名option需统一为options。
  • result.count要改为result.Count,C#属性遵循帕斯卡命名法。

三、连接问题排查要点

  • 确认Docker容器处于运行状态,用docker ps查看端口映射是否正确。
  • 检查测试数据库是否已创建并填充测试数据。
  • 若连接失败,排查主机防火墙是否允许访问映射端口,或Docker容器网络配置是否正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:15:30