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

无AD环境下Docker SQL Server容器启用Windows身份认证的方法

解决无AD环境下Docker容器SQL Server的Windows身份认证问题

你用的是SQL Server Linux容器,本身没法直接对接Windows本地用户的身份认证——容器里是Linux系统,和你本地Windows的用户体系完全不互通,这就是你添加本地用户报错的原因。结合你的无AD Windows Pro环境,给你两种可行解决思路:

方案一:改用Windows版SQL Server容器(推荐)

Windows容器能和本地Windows机器处于同一工作组,可直接识别本地Windows用户,完美适配Windows身份认证,步骤如下:

  1. 切换Docker到Windows容器模式
    右键任务栏的Docker图标,选择「Switch to Windows containers」,等待切换完成。

  2. 修改Docker Compose配置
    替换为Windows版镜像,调整卷路径为Windows格式:

    version: "3.9"
    services:
        sqldata:
            image: mcr.microsoft.com/mssql/server:2022-latest-windows
            environment:
              - MSSQL_SA_PASSWORD=Pass@word
              - ACCEPT_EULA=Y
              - MSSQL_PID=Developer # 本地开发推荐开发者版
            ports:
              - "5433:1433"
            volumes:
              - "./data:C:/var/opt/mssql/data"
              - "./log:C:/var/opt/mssql/log"
              - "./secrets:C:/var/opt/mssql/secrets"
            restart: always
    
  3. 配置Windows用户登录权限

    • 启动容器:docker-compose up -d
    • 用SSMS以SA账号连接容器实例(地址填localhost,5433)
    • 创建对应本地Windows用户的SQL登录名:
      -- 替换成你的本地机器名和用户名,比如DESKTOP-XYZ123\张三
      CREATE LOGIN [你的机器名\你的用户名] FROM WINDOWS;
      
    • 给该登录名分配数据库权限(示例添加到db_owner角色):
      USE 你的目标数据库名;
      CREATE USER [你的机器名\你的用户名] FOR LOGIN [你的机器名\你的用户名];
      ALTER ROLE db_owner ADD MEMBER [你的机器名\你的用户名];
      
  4. 测试连接
    直接用项目原有的Windows认证连接串(比如Server=localhost,5433;Database=你的数据库名;Integrated Security=True;)即可正常连接。

方案二:Linux容器下的模拟方案(不推荐)

如果不想切换Windows容器,只能通过创建同名Linux用户+SQL模拟的方式间接适配,但这种方式本质是SQL认证的变种,无法完全匹配原生Windows身份认证的逻辑,适配成本高且稳定性差,不建议采用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:40:25