

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 最佳实践和故障排除
<a name="sql-server-best-practices"></a>

现代化过程中的最佳实践、常见问题及其解决方案。

## ECS 应用程序日志
<a name="sql-server-ecs-application-logs"></a>

### CloudWatch 日志
<a name="sql-server-cloudwatch-logs"></a>
+ 所有 ECS 容器日志都会自动发送到 CloudWatch 日志
+ 在 CloudWatch 控制台的 “日志组” 下访问日志
+ 日志组命名格式：/aws/ecs/{应用程序名称}
+ 每个容器实例都会在组内创建一个新的日志流

### 查看日志
<a name="sql-server-viewing-logs"></a>

**通过 AWS 控制台：**
+ 导航到 CloudWatch > 日志组
+ 选择您的应用程序的日志组
+ 选择相关的日志流以查看容器日志

**使用 AWS CLI：**

```
aws logs get-log-events --log-group-name /aws/ecs/your-app-name --log-stream-name your-stream-name
```

### 常见日志位置
<a name="sql-server-common-log-locations"></a>
+ 应用程序日志： CloudWatch 日志
+ ECS 服务事件：ECS 控制台 > 集群 > 服务 > 事件选项卡
+ 容器 health/status：ECS 控制台 > 集群 > 服务 > 任务选项卡

## 数据库连接管理
<a name="sql-server-database-connection-management"></a>

应用程序使用环境变量进行数据库连接设置

如果您遇到连接问题：
+ 验证环境变量中的当前连接设置
+ 更新环境变量以根据需要修改数据库连接字符串
+ 无需重新部署应用程序即可通过更新环境变量来更改连接字符串

## 数据库连接问题
<a name="database-connection-issues"></a>

**问题：**无法将 AWS 转换连接到 SQL Server

解决方案：
+ 验证 AWS 转换和 SQL Server 之间的网络连接
+ 检查安全组规则以获得正确的端口访问权限 (1433)
+ 在 Secrets Manager 中确认数据库凭证
+ 使用已创建的用户测试数据库权限
+ 确保将 SQL Server 配置为使用混合模式身份验证
+ 验证机密是否有必需的标签（项目：atx-db-moderation，所有者：数据库连接器）

## 防火墙和安全组问题
<a name="firewall-security-group-issues"></a>

**问题：**连接超时或 “无法访问数据库” 错误

**根本原因：**安全组或网络 ACL 阻塞流量

解决方案：

1. 验证安全组配置：
   + 确认您的 SQL Server 安全组有允许来自 DMS 架构转换安全组的 1433 端口的入站规则
   + 检查来源是否是安全组 ID（例如 sg-0123456789abcdef0），而不是 IP 地址
   + 验证实例配置文件中是否正确指定了 DMS 架构转换安全组
   + 确保没有相互冲突的拒绝规则

1. 检查网络 ACL：
   + 验证子网级别的网络 ACL 是否允许端口 1433 上的入站流量
   + 确保网络 ACL 允许将出站临时端口用于返回流量
   + 检查数据库子网和 DMS 子网网络 ACL

1. 验证 VPC 配置：
   + 确认 DMS 架构转换实例和 SQL Server 在同一 VPC 中或者具有正确的 VPC 对等关系
   + 检查路由表是否允许子网之间的流量
   + 确认没有防火墙设备阻塞流量

1. 测试连接：
   + 在与 DMS 架构转换相同的子网中启动测试 EC2 实例
   + 附加与 DMS 架构转换相同的安全组
   + 使用 telnet 或 SQL 服务器管理工作室测试与 SQL Server 的连接
   + 如果测试成功，则问题出在 AWS 转换配置上；如果测试失败，则问题出在于 network/firewall

**常见错误：**将端口 1433 打开到 0.0.0。 0/0 （所有来源）存在安全风险。始终使用基于安全组的访问控制，将访问权限限制为 DMS 架构转换安全组。

## 架构转换问题
<a name="schema-conversion-issues"></a>

**问题：**架构转换显示了许多操作项

解决方案：
+ 查看转化报告中的操作项目
+ 根据影响确定优先级
+ 使用 Amazon Q 开发人员进行复杂的 SQL 转换
+ 请咨询 S AWS upport 以获取指导
+ 考虑采用分阶段方法处理复杂的数据库

## 应用程序转换问题
<a name="application-transformation-issues"></a>

**问题：**应用程序转换无法构建

解决方案：
+ 查看转换报告中的构建错误
+ 如有必 NuGet 要，配置私密订阅源
+ 如有必要，更新软件包引用
+ 检查 Windows-specific 依赖关系
+ 查看转换日志以了解详细错误

## 数据迁移问题
<a name="data-migration-issues"></a>

**问题：**数据迁移验证失败

解决方案：
+ 查看验证报告以了解具体故障
+ 检查数据类型映射
+ 验证身份列配置（默认生成与始终生成）
+ 查看计算列表达式
+ 如有复杂的数据问题，请联系 Su AWS pport

## 资源清理问题
<a name="resource-cleanup-issues"></a>

**问题：**转换作业因资源错误而失败

解决方案：
+ 检查现有的 DMS 资源（迁移项目、数据提供者、实例配置文件）
+ 清理先前尝试中失败或不完整的资源
+ 验证未计划删除密钥
+ 查看 DMS 和 Aurora PostgreSQL 的服务配额
+ 如果清理不能解决问题，请联系 AWS Support

## 部署问题
<a name="deployment-issues"></a>

**问题：**转换后的应用程序无法连接到 Aurora PostgreSQL

解决方案：
+ 验证 PostgreSQL 的连接字符串格式
+ 查看安全组规则
+ 在 Secrets Manager 中验证数据库凭证
+ 确保配置 SSL/TLS 正确
+ 使用 psql 或 pgadmin 测试连接

## 获得更多帮助
<a name="getting-additional-help"></a>

联系 Su AWS pport 时，请提供：
+ 转换作业 ID
+ AWS 账号
+ Region
+ 错误消息和屏幕截图
+ 转换日志（可在 AWS 转换控制台中找到）