

# 多可用区部署的 TempDB 配置
<a name="SQLServer.TempDB.MAZ"></a>

如果您的 RDS for SQL Server 数据库实例位于使用数据库镜像（DBM）或 Always On 可用性组（AG）的多可用区部署内，请注意以下有关使用 `tempdb` 数据库的注意事项。

您无法将 `tempdb` 数据从主数据库实例复制到辅助数据库实例。当您失效转移到辅助数据库实例时，辅助数据库实例上的 `tempdb` 将为空。

您可以将 `tempdb` 数据库选项的配置（包括其文件大小和自动增长设置）从主数据库实例同步到辅助数据库实例。所有 RDS for SQL Server 版本都支持同步 `tempDB` 配置。您可以使用以下存储过程开启 `tempdb` 配置的自动同步：

```
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'TempDbFile';
```

**重要**  
在使用 `rds_set_system_database_sync_objects` 存储过程之前，请确保已在主数据库实例（而不是辅助数据库实例）上设置了首选 `tempdb` 配置。如果您在辅助数据库实例上更改了配置，则在您开启自动同步时，您的首选 `tempdb` 配置可能会被删除。

您可以使用以下函数来确认是否开启了 `tempdb` 配置的自动同步：

```
SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();
```

开启 `tempdb` 配置自动同步后，将显示 `object_class` 字段的返回值。当它关闭时，不会返回任何值。

您可以使用以下函数来查找上次同步对象的时间，以 UTC 时间表示：

```
SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();
```

例如，如果您在 01:00 修改 `tempdb` 配置，然后运行 `rds_fn_server_object_last_sync_time` 函数，则为 `last_sync_time` 返回的值应在 01:00 之后，表示发生了自动同步。

如果您也在使用 SQL Server Agent 任务复制，则可以通过在 `@object_type` 参数中提供 SQL 代理任务和 `tempdb` 配置来为它们启用复制：

```
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'SQLAgentJob,TempDbFile';
```

有关 SQL Server Agent 任务复制的更多信息，请参阅[启用 SQL Server Agent 作业复制](Appendix.SQLServer.CommonDBATasks.Agent.md#SQLServerAgent.Replicate)。

除了使用 `rds_set_system_database_sync_objects` 存储过程来确保自动同步 `tempdb` 配置更改之外，还可以使用以下手动方法之一：

**注意**  
我们建议使用 `rds_set_system_database_sync_objects` 存储过程开启 `tempdb` 配置的自动同步。使用自动同步可以防止每次更改 `tempdb` 配置时都需要执行这些手动任务。
+ 首先修改数据库实例并关闭多可用区，然后修改临时数据库，最后重新启用多可用区。此方法不会有任何停机时间。

  有关更多信息，请参阅“[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)”。
+ 首先在原始主实例中修改 `tempdb`，然后手动执行故障转移，最后在新的主实例中修改 `tempdb`。此方法需要停机。

  有关更多信息，请参阅 [重启数据库实例](USER_RebootInstance.md)。