

# Amazon RDS for Microsoft SQL Server 数据库日志文件
<a name="USER_LogAccess.Concepts.SQLServer"></a>

您可以使用 Amazon RDS 控制台、AWS CLI 或 RDS API 访问 Microsoft SQL Server 错误日志、代理日志、跟踪文件和转储文件。有关查看、下载和监视基于文件的数据库日志的更多信息，请参阅 [监控 Amazon RDS 日志文件](USER_LogAccess.md)。

## 保留计划
<a name="USER_LogAccess.Concepts.SQLServer.Retention"></a>

日志文件每天都会轮换，并且会在重新启动数据库实例时轮换。以下是 Amazon RDS 上的 Microsoft SQL Server 日志的保留计划。


****  

| 日志类型 | 保留计划 | 
| --- | --- | 
|  错误日志  |  最多可保留 30 个错误日志。Amazon RDS 可能会删除超过 7 天的错误日志。  | 
|  Agent 日志  |  最多可保留 10 个代理日志。Amazon RDS 可能会删除超过 7 天的代理日志。  | 
|  跟踪文件  |  根据数据库实例的跟踪文件保留期保留跟踪文件。默认的跟踪文件保留期为 7 天。要修改数据库实例的跟踪文件保留期，请参阅[设置跟踪文件和转储文件的保留期](Appendix.SQLServer.CommonDBATasks.TraceFiles.md#Appendix.SQLServer.CommonDBATasks.TraceFiles.PurgeTraceFiles)。  | 
|  转储文件  |  根据数据库实例的转储文件保留期保留转储文件。默认的转储文件保留期为 7 天。要修改数据库实例的转储文件保留期，请参阅[设置跟踪文件和转储文件的保留期](Appendix.SQLServer.CommonDBATasks.TraceFiles.md#Appendix.SQLServer.CommonDBATasks.TraceFiles.PurgeTraceFiles)。  | 

## 使用 rds\$1read\$1error\$1log 过程查看 SQL Server 错误日志
<a name="USER_LogAccess.Concepts.SQLServer.Proc"></a>

您可以使用 Amazon RDS 存储过程 `rds_read_error_log` 查看错误日志和代理日志。有关更多信息，请参阅“[查看错误和代理日志](Appendix.SQLServer.CommonDBATasks.Logs.md#Appendix.SQLServer.CommonDBATasks.Logs.SP)”。

## 将 SQL Server 日志发布到 Amazon CloudWatch Logs
<a name="USER_LogAccess.SQLServer.PublishtoCloudWatchLogs"></a>

使用 Amazon RDS for SQL Server，您可以将错误和代理日志事件直接发布到 Amazon CloudWatch Logs。使用 CloudWatch Logs 分析日志数据，然后使用 CloudWatch 创建警报和查看指标。

利用 CloudWatch Logs，您可以：
+ 将日志存储在具有您定义的保留期间的高持久性存储空间中。
+ 搜索并筛选日志数据。
+ 在账户间共享日志数据。
+ 将日志导出到 Amazon S3。
+ 将数据流式传输到 Amazon Opensearch 服务。
+ 使用 Amazon Kinesis Data Streams 实时处理日志数据。有关更多信息，请参阅《面向 SQL 的适用于 Apache Flink 的亚马逊托管服务的应用程序开发人员指南》**中的[使用 Amazon CloudWatch Logs](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/cloudwatch-logs.html)。

 Amazon RDS 将每个 SQL Server 数据库日志作为日志组中的单独数据库流进行发布。例如，如果您发布代理日志和错误日志，则错误数据将存储在 `/aws/rds/instance/my_instance.node1/error` 日志组中的错误日志流中，而代理日志数据将存储在 `/aws/rds/instance/my_instance.node1/agent` 日志组中。

对于多可用区数据库实例，Amazon RDS 将数据库日志作为日志组中的两个独立流发布。例如，如果您发布错误日志，则错误数据将分别存储在错误日志流 `/aws/rds/instance/my_instance.node1/error` 和 `/aws/rds/instance/my_instance.node2/error` 中。日志流在失效转移期间不会发生变化，每个节点的错误日志流可能包含来自主实例或辅助实例的错误日志。使用多可用区，系统会自动为 `/aws/rds/instance/my_instance/rds-events` 创建日志流，以存储诸如数据库实例失效转移等事件数据。

**注意**  
默认情况下，没有启用将 SQL Server 日志发布到 CloudWatch Logs 的功能。不支持发布跟踪和转储文件。所有区域都支持将 SQL Server 日志发布到 CloudWatch Logs。

### 控制台
<a name="USER_LogAccess.SQLServer.PublishtoCloudWatchLogs.console"></a>

**从AWS 管理控制台将 SQL Server 数据库日志发布到 CloudWatch Logs**

1. 通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Databases (数据库)**，然后选择要修改的数据库实例。

1. 选择**修改**。

1. 在 **Log exports (日志导出)** 部分中，选择要开始发布到 CloudWatch Logs 的日志。

   您可以选择**代理日志**、**错误日志**或两者。

1. 选择**继续**，然后选择摘要页面上的**修改数据库实例**。

### AWS CLI
<a name="USER_LogAccess.SQLServer.PublishtoCloudWatchLogs.CLI"></a>

要发布 SQL Server 日志，您可以使用具有以下参数的 [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 命令：
+ `--db-instance-identifier`
+ `--cloudwatch-logs-export-configuration`

**注意**  
对 `--cloudwatch-logs-export-configuration` 选项进行的更改始终立即应用于数据库实例。因此，`--apply-immediately` 和 `--no-apply-immediately` 选项没有影响。

您还可以使用以下命令来发布 SQL Server 日志：
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html)

**Example**  
以下示例将创建一个启用了 CloudWatch Logs 发布的 SQL Server 数据库实例。`--enable-cloudwatch-logs-exports` 值是一个可以包括 `error` 和/或 `agent` 的 JSON 字符串数组。  
对于 Linux、macOS 或 Unix：  

```
aws rds create-db-instance \
    --db-instance-identifier mydbinstance \
    --enable-cloudwatch-logs-exports '["error","agent"]' \
    --db-instance-class db.m4.large \
    --engine sqlserver-se
```
对于：Windows  

```
aws rds create-db-instance ^
    --db-instance-identifier mydbinstance ^
    --enable-cloudwatch-logs-exports "[\"error\",\"agent\"]" ^
    --db-instance-class db.m4.large ^
    --engine sqlserver-se
```
使用 Windows 命令提示符时，必须在 JSON 代码中转义双引号 (")，方法是使用反斜杠 (\$1) 作为其前缀。

**Example**  
以下示例修改现有的 SQL Server 数据库实例以将日志文件发布到 CloudWatch Logs。`--cloudwatch-logs-export-configuration` 值是 JSON 对象。此对象的键是 `EnableLogTypes`，其值是可以包括 `error` 和/或 `agent` 的字符串数组。  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '{"EnableLogTypes":["error","agent"]}'
```
对于：Windows  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration "{\"EnableLogTypes\":[\"error\",\"agent\"]}"
```
使用 Windows 命令提示符时，必须在 JSON 代码中转义双引号 (")，方法是使用反斜杠 (\$1) 作为其前缀。

**Example**  
以下示例修改现有的 SQL Server 数据库实例以禁用将代理日志文件发布到 CloudWatch Logs 的功能。`--cloudwatch-logs-export-configuration` 值是 JSON 对象。此对象的键是 `DisableLogTypes`，其值是可以包括 `error` 和/或 `agent` 的字符串数组。  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '{"DisableLogTypes":["agent"]}'
```
对于：Windows  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration "{\"DisableLogTypes\":[\"agent\"]}"
```
使用 Windows 命令提示符时，必须在 JSON 代码中转义双引号 (")，方法是使用反斜杠 (\$1) 作为其前缀。