

# 查看审核日志
<a name="Appendix.SQLServer.Options.Audit.AuditRecords"></a>

审核日志存储在 `D:\rdsdbdata\SQLAudit` 中。

SQL Server 完成写入到审核日志文件之后（当文件达到其大小限制时），Amazon RDS 会将文件上传到您的 S3 存储桶。如果启用了保留，Amazon RDS 会将文件移入到保留文件夹：`D:\rdsdbdata\SQLAudit\transmitted`。

有关配置保留的信息，请参阅[将 SQL Server Audit 添加到数据库实例选项](Appendix.SQLServer.Options.Audit.Adding.md)。

在上传审核日志文件之前，审核记录会一直保留在数据库实例上。您可以通过运行以下命令来查看审核记录。

```
SELECT   * 
	FROM     msdb.dbo.rds_fn_get_audit_file
	             ('D:\rdsdbdata\SQLAudit\*.sqlaudit'
	             , default
	             , default )
```

您可以使用相同的命令来查看保留文件夹中的审核记录，只需将筛选条件更改为 `D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit`。

```
SELECT   * 
	FROM     msdb.dbo.rds_fn_get_audit_file
	             ('D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit'
	             , default
	             , default )
```

## 在 CloudWatch 中查看审计日志记录
<a name="Appendix.SQLServer.Options.Audit.AuditRecords.CloudWatch"></a>

如果您选择将审计日志上传到 CloudWatch，则可以按照以下步骤访问日志记录（JSON 格式）。

**在 CloudWatch 中查看审计日志**

1. 通过 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 打开 CloudWatch 控制台。

1. 在左侧导航窗格中，依次选择**日志**、**日志管理**。

1. 在**日志组**搜索框中输入您的数据库实例名称。

1. 选择相应的日志组。

1. 在**日志流**选项卡下，选择日志流。

或者，您可以使用 AWS CLI 来查询日志流。以下示例提取审计日志事件并将其导出到 CSV 文件。

```
# Parameters
# -----------
LOG_GROUP="/aws/rds/instance/<your-db-instance-id>/sqlaudit"
START_DATE="2026-06-18"
END_DATE="2026-06-19"
OUTPUT_FILE="sql_audit_extract.csv"

# Convert dates to epoch milliseconds
# -----------------------------------
START_TIME=$(date -d "${START_DATE}" +%s)000
END_TIME=$(date -d "${END_DATE}" +%s)000

# Fetch log events
# ----------------
# Note: --no-paginate returns all results in a single call.
# For large result sets, consider using --page-size or manual pagination.
RESPONSE=$(aws logs filter-log-events \
  --log-group-name "${LOG_GROUP}" \
  --start-time "${START_TIME}" \
  --end-time "${END_TIME}" \
  --output json \
  --no-paginate)

# Parse and export to CSV
# Extract the 'message' field from each event (JSON formatted messages),
# then convert to CSV using jq.
# Get CSV headers from the first record
# -------------------------------------
HEADERS=$(echo "${RESPONSE}" | jq -r '
  [.events[0].message | fromjson | keys[]] | @csv
')

# Write headers to output file
# ----------------------------
echo "${HEADERS}" > "${OUTPUT_FILE}"

# Write all records to output file
# --------------------------------
echo "${RESPONSE}" | jq -r '
  .events[].message | fromjson | [.[]] | @csv
' >> "${OUTPUT_FILE}"

# Script execution summary
# -------------------------
RECORD_COUNT=$(echo "${RESPONSE}" | jq '.events | length')
echo "Exported ${RECORD_COUNT} records to ${OUTPUT_FILE}"
```