

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

# 在 Amazon RDS 上存取 Microsoft SQL Server 資料庫執行個體上的 tempdb 資料庫
<a name="SQLServer.TempDB"></a>

您可以在 Amazon RDS 上存取 Microsoft SQL Server 資料庫執行個體上的 `tempdb` 資料庫。您可以使用 Transact-SQL 透過 Microsoft SQL Server Management Studio (SSMS)，或任何其他標準 SQL 用戶端應用程式，在 `tempdb` 上執行程式碼。如需連接至資料庫執行個體的詳細資訊，請參閱[連線至 Microsoft SQL Server 資料庫執行個體](USER_ConnectToMicrosoftSQLServerInstance.md)。

資料庫執行個體的主要使用者會獲授予 `CONTROL` 的 `tempdb` 存取權，以便此使用者可以修改 `tempdb` 資料庫選項。主要使用者不是 `tempdb` 資料庫的資料庫擁有者。必要時，主要使用者可將 `CONTROL` 存取權授予其他使用者，以便他們也可以修改 `tempdb` 資料庫選項。

**注意**  
您無法在 `tempdb` 資料庫上執行資料庫主控台命令 (DBCC)。

# 修改 tempdb 資料庫選項
<a name="SQLServer.TempDB.Modifying"></a>

您可以在 Amazon RDS 資料庫執行個體上修改 `tempdb` 資料庫上的資料庫選項。如需可以修改哪些選項的詳細資訊，請參閱 Microsoft 文件中的 [tempdb 資料庫](https://msdn.microsoft.com/en-us/library/ms190768%28v=sql.120%29.aspx)。

在重新啟動您的資料庫執行個體之後，檔案大小上限選項之類的資料庫選項會持續存在。您可以修改資料庫選項，以在匯入資料時將效能提高到最佳化，並避免用光儲存體。

## 匯入資料時將效能提高到最佳化
<a name="SQLServer.TempDB.Modifying.Import"></a>

在將大量資料匯入至資料庫執行個體時，若要將效能提高到最佳化，請將 tempdb 資料庫的 `SIZE` 和 `FILEGROWTH` 屬性設定為大數字。如需如何將 `tempdb` 最佳化的詳細資訊，請參閱 Microsoft 文件中的[將 tempdb 效能最佳化](https://technet.microsoft.com/en-us/library/ms175527%28v=sql.120%29.aspx)。

下列範例示範將大小設定為 100 GB，並將檔案成長率設定為 10%。

```
1. alter database[tempdb] modify file (NAME = N'templog', SIZE=100GB, FILEGROWTH = 10%)
```

## 防止儲存體問題
<a name="SQLServer.TempDB.Modifying.Full"></a>

若要防止 `tempdb` 資料庫使用所有可用的磁碟空間，請設定 `MAXSIZE` 屬性。下列範例示範將屬性設定為 2048 MB。

```
1. alter database [tempdb] modify file (NAME = N'templog', MAXSIZE = 2048MB)
```

# 縮減 tempdb 資料庫
<a name="SQLServer.TempDB.Shrinking"></a>

有兩種方式可縮減 Amazon RDS 資料庫執行個體上的 `tempdb` 資料庫。您可以使用 `rds_shrink_tempdbfile` 程序，或設定 `SIZE` 屬性。

## 使用 rds\$1shrink\$1tempdbfile 程序
<a name="SQLServer.TempDB.Shrinking.Proc"></a>

您可以使用 Amazon RDS 程序 `msdb.dbo.rds_shrink_tempdbfile`，來縮減 `tempdb` 資料庫。只有在您對 `rds_shrink_tempdbfile` 具有 `CONTROL` 存取權時，才能呼叫 `tempdb`。當您呼叫 `rds_shrink_tempdbfile` 時，資料庫執行個體沒有停機時間。

`rds_shrink_tempdbfile` 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
| `@temp_filename` | SYSNAME | — | 必要 | 要縮減之檔案的邏輯名稱。 | 
| `@target_size` | int | null | 選擇性 | 檔案的新大小 (以 MB 為單位)。 | 

下列範例會取得 `tempdb` 資料庫的檔案名稱。

```
1. use tempdb;
2. GO
3. 
4. select name, * from sys.sysfiles;
5. GO
```

下列範例會縮減名為 `tempdb` 的 `test_file` 資料庫檔案，並要求 `10` MB 的新大小：

```
1. exec msdb.dbo.rds_shrink_tempdbfile @temp_filename = N'test_file', @target_size = 10;
```

## 設定 SIZE 屬性
<a name="SQLServer.TempDB.Shrinking.Size"></a>

您也可以設定 `tempdb` 屬性，然後重新啟動資料庫執行個體，來縮減 `SIZE` 資料庫。如需重新啟動資料庫執行個體的詳細資訊，請參閱[在資料庫執行個體](USER_RebootInstance.md)。

下列範例示範將 `SIZE` 屬性設定為 1024 MB。

```
1. alter database [tempdb] modify file (NAME = N'templog', SIZE = 1024MB)
```

# 多可用區域部署的 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)。