

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

# 常见问题解答
<a name="faq"></a>

本节提供关于在 Amazon RDS 和 Amazon EC2 上审计 SQL Server 实例的常见问题解答。

## SQL Server 审计功能的主要组件有哪些？
<a name="q1"></a>

SQL Server 审计功能有三个主要组件：
+ **SQL Server Audit 对象**定义了存储审计信息的路径、审计同步模式、审计文件滚动机制以及在审计失败时要执行的操作。
+ **服务器审计规范**跟踪和记录在 SQL Server 实例级别执行的更改以及 SQL Server 扩展事件功能引发的事件。
+ **数据库审计规范**跟踪和记录在数据库级别执行的不同类型的操作以及 SQL Server 扩展事件功能引发的事件。

## 我应该考虑审计哪些关键事件？
<a name="q2"></a>

关键事件包括登录失败、登录更改、用户更改、架构更改和审计更改。

## 为什么审计失败的登录、登录更改和用户更改很重要？
<a name="q3"></a>

例如，过多的失败登录尝试或用户权限更改可能表明正在遭受攻击。

## 为什么审计架构更改很重要？
<a name="q4"></a>

我们建议您跟踪所有数据库架构更改，以检测任何未经授权的更改。

## 为什么对审计系统进行审计很重要？
<a name="q5"></a>

审计 SQL Server 审计解决方案中的变更可以帮助您捕获未经授权的用户，其可能尝试禁用审计过程以执行不合规或非法的活动。此审计还通过提供涵盖所有场景的证据，帮助您满足审计师对审计解决方案日志完整性的要求。此审计的另一个简单用途是提醒数据库管理员在出于维护目的禁用审计后重新启用审计。

## 如何使用触发器来审计数据库变更？
<a name="q6"></a>

您可以在包含关键数据的表中创建触发器，以记录修改或插入的数据，并比较修改前和修改后的数据。您可以使用 `INSTEAD OF` 触发器来防止对特定表进行更改并记录失败的操作。

## 使用 CDC 审计数据库变更有哪些优缺点？ 哪些版本支持 CDC？
<a name="q7"></a>

SQL Server 2016 及更高版本的所有版本均支持更改数据捕获（CDC）。在早期版本中，只有企业版支持 CDC。

以下是使用 CDC 审计数据库变更的一些优势：
+ 您可以使用 CDC 作为异步 SQL Server 审计解决方案，以跟踪对表的数据操作语言（DML）操作。
+ CDC 跟踪对数据库表的 `INSERT`、`UPDATE` 和 `DELETE` 操作，并在镜像表中记录有关这些变更的详细信息。
+ CDC 依赖于 SQL Server 事务日志作为数据变更来源。
+ 您可以使用 Transact-SQL 命令轻松配置 CDC。

劣势：
+ CDC 不会自动处理启用 CDC 的表中的数据定义语言（DDL）变更。需要额外工作才能在跟踪表中反映 DDL 变更。
+ CDC 不提供跟踪 `SELECT` 语句的选项。
+ SQL Server 仅在变更表中保留 CDC 跟踪数据可配置的天数。
+ 除非运行 SQL Server 代理服务，否则 CDC 作业将无法运行。