# 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. 配置环境变量 复制并修改环境变量文件: ```bash cp sqlserver.env .env ``` 编辑 `.env` 文件,修改以下关键配置: ```bash # 修改SA密码(必须) SQLSERVER_SA_PASSWORD=YourStrong@Password123! # 修改端口(可选,避免冲突) SQLSERVER_PORT=1433 # 选择SQL Server版本 SQLSERVER_EDITION=Developer # 免费开发版本 ``` ### 2. 启动服务 ```bash # 启动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 连接 ```bash # 进入容器 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 - 配置最大内存使用量 - 设置最大并行度 - 启用查询存储 - 创建性能监控视图 ## 常用操作 ### 备份数据库 ```bash # 创建备份 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'" ``` ### 恢复数据库 ```bash # 恢复备份 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'" ``` ### 查看性能统计 ```bash # 查看性能统计 docker exec -it sqlserver-2022 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'YourStrong@Password123!' -d SampleDB -Q "SELECT * FROM PerformanceStats" ``` ### 停止和清理 ```bash # 停止服务 docker-compose -f docker-compose-sqlserver.yml down # 停止并删除数据卷(谨慎使用) docker-compose -f docker-compose-sqlserver.yml down -v ``` ## 故障排除 ### 常见问题 1. **容器启动失败** - 检查密码是否符合复杂度要求 - 确保端口没有被占用 - 查看容器日志: `docker-compose logs sqlserver` 2. **连接失败** - 确认防火墙设置 - 检查网络配置 - 验证用户名和密码 3. **性能问题** - 调整内存限制 - 检查磁盘空间 - 查看性能监控视图 ### 日志查看 ```bash # 查看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网络中: ```yaml networks: - your-existing-network ``` ## 许可证 SQL Server 2022 Developer Edition 可免费用于开发和测试环境。生产环境请确保使用适当的许可证。 ## 支持 如有问题,请查看: - [SQL Server 2022 官方文档](https://docs.microsoft.com/en-us/sql/sql-server/) - [Docker Hub SQL Server 页面](https://hub.docker.com/_/microsoft-mssql-server)