2025-09-01 23:44:57 +08:00

5.5 KiB
Raw Permalink Blame History

SQL Server 2022 Linux Docker Compose 部署指南

概述

这是一个完整的SQL Server 2022 Linux Docker Compose部署方案包含数据库初始化、用户管理、性能优化等配置。

文件结构

├── docker-compose-sqlserver.yml    # Docker Compose 配置文件
├── sqlserver.env                   # 环境变量配置文件
├── sqlserver/                      # SQL Server 相关目录
│   ├── init/                       # 初始化脚本目录
│   │   ├── 01-create-database.sql  # 创建数据库和表
│   │   ├── 02-create-user.sql      # 创建用户和权限
│   │   └── 03-performance-config.sql # 性能优化配置
│   ├── data/                       # 数据文件目录
│   ├── logs/                       # 日志文件目录
│   ├── backup/                     # 备份文件目录
│   └── web-config/                 # Web管理界面配置
└── SQLServer-README.md             # 本说明文档

快速开始

1. 配置环境变量

复制并修改环境变量文件:

cp sqlserver.env .env

编辑 .env 文件,修改以下关键配置:

# 修改SA密码必须
SQLSERVER_SA_PASSWORD=YourStrong@Password123!

# 修改端口(可选,避免冲突)
SQLSERVER_PORT=1433

# 选择SQL Server版本
SQLSERVER_EDITION=Developer  # 免费开发版本

2. 启动服务

# 启动SQL Server
docker-compose -f docker-compose-sqlserver.yml --env-file .env up -d

# 查看服务状态
docker-compose -f docker-compose-sqlserver.yml ps

# 查看日志
docker-compose -f docker-compose-sqlserver.yml logs -f sqlserver

3. 连接数据库

使用 sqlcmd 连接

# 进入容器
docker exec -it sqlserver-2022 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'YourStrong@Password123!'

# 或者直接执行SQL
docker exec -it sqlserver-2022 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'YourStrong@Password123!' -Q "SELECT name FROM sys.databases"

使用外部工具连接

  • 服务器: localhost 或你的服务器IP
  • 端口: 1433(或你在.env中配置的端口
  • 用户名: sa
  • 密码: 你在.env中配置的密码
  • 数据库: SampleDB(初始化脚本创建的示例数据库)

配置说明

SQL Server 版本选择

sqlserver.env 中配置 SQLSERVER_EDITION

  • Developer: 免费开发版本(推荐用于开发环境)
  • Express: 免费轻量版本
  • Standard: 标准版
  • Enterprise: 企业版

资源限制

默认配置:

  • CPU限制: 4核心
  • 内存限制: 8GB
  • 数据目录: ./sqlserver/data
  • 日志目录: ./sqlserver/logs

网络配置

  • 默认端口: 1433
  • 网络子网: 172.24.0.0/16
  • 容器间通信: 通过 sqlserver-net 网络

初始化脚本说明

01-create-database.sql

  • 创建 SampleDB 示例数据库
  • 创建 Users 示例表
  • 插入示例数据
  • 创建 GetActiveUsers 存储过程

02-create-user.sql

  • 创建 appuser 应用程序用户
  • 配置用户权限
  • 授予必要的数据库权限

03-performance-config.sql

  • 配置最大内存使用量
  • 设置最大并行度
  • 启用查询存储
  • 创建性能监控视图

常用操作

备份数据库

# 创建备份
docker exec -it sqlserver-2022 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'YourStrong@Password123!' -Q "BACKUP DATABASE SampleDB TO DISK = '/var/opt/mssql/backup/SampleDB.bak'"

恢复数据库

# 恢复备份
docker exec -it sqlserver-2022 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'YourStrong@Password123!' -Q "RESTORE DATABASE SampleDB FROM DISK = '/var/opt/mssql/backup/SampleDB.bak'"

查看性能统计

# 查看性能统计
docker exec -it sqlserver-2022 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'YourStrong@Password123!' -d SampleDB -Q "SELECT * FROM PerformanceStats"

停止和清理

# 停止服务
docker-compose -f docker-compose-sqlserver.yml down

# 停止并删除数据卷(谨慎使用)
docker-compose -f docker-compose-sqlserver.yml down -v

故障排除

常见问题

  1. 容器启动失败

    • 检查密码是否符合复杂度要求
    • 确保端口没有被占用
    • 查看容器日志: docker-compose logs sqlserver
  2. 连接失败

    • 确认防火墙设置
    • 检查网络配置
    • 验证用户名和密码
  3. 性能问题

    • 调整内存限制
    • 检查磁盘空间
    • 查看性能监控视图

日志查看

# 查看SQL Server日志
docker-compose -f docker-compose-sqlserver.yml logs sqlserver

# 查看系统日志
docker exec -it sqlserver-2022 cat /var/opt/mssql/log/errorlog

安全建议

  1. 修改默认密码: 使用强密码
  2. 限制网络访问: 配置防火墙规则
  3. 定期备份: 设置自动备份策略
  4. 监控访问: 启用审计日志
  5. 更新补丁: 定期更新SQL Server镜像

扩展功能

添加更多数据库

sqlserver/init/ 目录下创建新的 .sql 文件,它们将按文件名顺序执行。

集成其他服务

可以将此SQL Server配置集成到现有的Docker Compose网络中

networks:
  - your-existing-network

许可证

SQL Server 2022 Developer Edition 可免费用于开发和测试环境。生产环境请确保使用适当的许可证。

支持

如有问题,请查看: