JiShe.IOT.Admin/DockerComposeShells/SQLServer-README.md

218 lines
5.5 KiB
Markdown
Raw Normal View History

2025-09-01 23:44:57 +08:00
# 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)