# 前言

本篇时间为 2023 年 9 月,主要记录 MSSQL 部署过程及遇到的问题,后续官方可能发布了新的版本以支持 Ubuntu22.04。微软的 MSSQL 截止目前仅支持到 ubuntu20.04,如果使用 ubuntu22.04 安装则会出现依赖报错的情况,因此在 ubuntu22.04 仅能使用 docker 上的 dev 版本的 MSSQL 作为平替。

# 部署 MSSQL

  1. 编写 docker-compose.yml

    version: '3'
    services:
      mssql-server:
        image: mcr.microsoft.com/mssql/server:2022-latest
        environment:
          SA_PASSWORD: {your password}
          ACCEPT_EULA: y
        ports:
          - "1433:1433"
        volumes:
          - ./data:/var/opt/mssql

    修改 {your password} 部分为 sa 账户的初始密码。

  2. 启动运行

    docker compose up -d
    # docker-compose up -d # 旧版本命令

# 遇到的问题

  1. 无法创建目录

    由于 docker 镜像里使用的用户 Id 是 10001(linux 系统的识别的是用户的 Id,用户名只是别名)这个用户,如果本地目录.data 所属的用户其 id 不是 10001 则 docker 内部的容器无权限操作。而解决的方法也很简单:

    sudo chown 10001 ./data
  2. 密码强度不够

    ERROR: Unable to set system administrator password: Password validation failed. The password does not meet SQL Server password policy requirements because it is not complex enough. The password must be at least 8 characters long and contain characters from three of the following four sets: Uppercase letters, Lowercase letters, Base 10 digits, and Symbols..

    该版本要求 sa 的密码必须包含大写字母、小写字母、数字或者符号中的三种,且必须大于 8 个字符,不符合条件时容器会自动停止运行。