

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 多可用區域部署的 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 Agent 任務和 `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` 組態時執行這些手動任務。
+ 首先修改您的資料庫執行個體並關閉異地同步備份，然後修改 tempdb，最後再次開啟異地同步備份。此方法不涉及任何停機時間。

  如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。
+ 首先修改原始主要執行個體中的 `tempdb`，然後手動容錯移轉，最後修改新主要執行個體中的 `tempdb`。此方法涉及停機時間。

  如需詳細資訊，請參閱 [在資料庫執行個體](USER_RebootInstance.md)。