

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

# 在 RDS for SQL Server 中使用儲存
<a name="Appendix.SQLServer.CommonDBATasks.DatabaseStorage"></a>

使用 RDS for SQL Server，您最多可以將三個額外的磁碟區連接至 RDS for SQL Server 執行個體，每個磁碟區對應至唯一的 Windows 磁碟機代號。這可讓您將資料庫檔案分散到預設`D:`磁碟機以外的多個磁碟區。當您新增儲存磁碟區時，您可以獲得資料庫檔案管理和儲存最佳化的增強彈性。

優點包括：
+ **靈活的檔案分佈** – 將資料庫資料檔案和日誌檔案分佈到多個磁碟區，以提高 I/O 效能。
+ **儲存最佳化** – 針對不同的工作負載需求使用不同的儲存類型和組態。
+ **可擴展性** – 新增儲存容量而不修改現有的磁碟區。

**Topics**
+ [

## 搭配 RDS for SQL Server 使用其他儲存磁碟區的考量事項
](#SQLServer.ASV.Considerations)
+ [

## 使用 RDS for SQL Server 新增、移除或修改儲存磁碟區
](#SQLServer.ASV.Management)
+ [

## 使用 RDS for SQL Server 還原其他儲存磁碟區的操作
](#SQLServer.ASV.Restore)
+ [

## 使用 RDS for SQL Server 的其他儲存磁碟區的使用案例
](#SQLServer.ASV.UseCases)

## 搭配 RDS for SQL Server 使用其他儲存磁碟區的考量事項
<a name="SQLServer.ASV.Considerations"></a>

將其他儲存磁碟區與 RDS for SQL Server 搭配使用時，請注意下列功能和限制：
+ 您只能在 SQL Server Standard Edition (SE)、Enterprise Edition (EE) 和 Developer Edition (DEV-EE) 上新增儲存磁碟區。
+ 每個執行個體最多可以新增 3 個額外的儲存磁碟區。
+ 磁碟區名稱會自動映射至 Windows 磁碟機代號，如下所示：
  + `rdsdbdata2` – `H:`磁碟機
  + `rdsdbdata3` – `I:`磁碟機
  + `rdsdbdata4` – `J:`磁碟機
+ 使用 NVMe 執行個體儲存體時，TempDB 檔案會繼續使用`T:`磁碟機。SQL Server 稽核檔案和 Microsoft Business Intelligence (MSBI) 檔案會保留在`D:`磁碟機上。
+ 您只能新增一般用途 SSD (gp3) 和佈建 IOPS SSD (io2) 儲存類型。
+ 其他儲存磁碟區的儲存大小下限與預設`D:`磁碟機設定的限制相同。資料庫執行個體的儲存體大小上限為所有磁碟區總計 256 TiB。
+ 不支援將儲存磁碟區新增至具有僅供讀取複本的執行個體或僅供讀取複本執行個體。
+ 不支援將儲存磁碟區新增至已啟用跨區域自動備份的執行個體。
+ 不支援為儲存體自動擴展設定其他儲存磁碟區。
+ 不支援在建立後於磁碟區之間移動檔案。
+ 您無法刪除`D:`磁碟區，但您可以刪除其他儲存磁碟區，只要它們是空的即可。
+ 不支援在快照還原或point-in-time復原 (PITR) 期間修改現有磁碟區的大小。不過，您可以在還原操作期間新增新的儲存磁碟區。

## 使用 RDS for SQL Server 新增、移除或修改儲存磁碟區
<a name="SQLServer.ASV.Management"></a>

您可以使用 AWS CLI 或 來新增、修改和移除其他儲存磁碟區 AWS 管理主控台。所有操作都會搭配 `additional-storage-volumes` 參數使用 `modify-db-instance` API 操作。

**重要**  
新增或移除其他儲存磁碟區會建立備份待定動作和point-in-time還原中斷時段。此視窗會在備份工作流程完成時關閉。

**Topics**
+ [

### 新增儲存磁碟區
](#SQLServer.ASV.Adding)
+ [

### 擴展其他儲存磁碟區
](#SQLServer.ASV.Scaling)
+ [

### 移除其他儲存磁碟區
](#SQLServer.ASV.Removing)

### 新增儲存磁碟區
<a name="SQLServer.ASV.Adding"></a>

除了預設`D:`磁碟機之外，您最多可以新增三個儲存磁碟區。若要將新的儲存磁碟區新增至 RDS for SQL Server 執行個體，請使用 `modify-db-instance`命令搭配 `additional-storage-volumes` 參數。

下列範例新增了名為 的 4，000 GiB 一般用途 SSD (gp3) 磁碟區`rdsdbdata4`。

```
aws rds modify-db-instance \
  --db-instance-identifier my-sql-server-instance \
  --region us-east-1 \
  --additional-storage-volumes '[{"VolumeName":"rdsdbdata4","StorageType":"gp3","AllocatedStorage":4000}]' \
  --apply-immediately
```

### 擴展其他儲存磁碟區
<a name="SQLServer.ASV.Scaling"></a>

您可以修改額外磁碟區的儲存設定，但儲存大小除外。下列範例會修改`rdsdbdata2`磁碟區的 IOPS 設定。

```
aws rds modify-db-instance \
  --db-instance-identifier my-sql-server-instance \
  --region us-east-1 \
  --additional-storage-volumes '[{"VolumeName":"rdsdbdata2","IOPS":4000}]' \
  --apply-immediately
```

### 移除其他儲存磁碟區
<a name="SQLServer.ASV.Removing"></a>

您無法刪除磁碟`D:`區，但您可以在其他儲存磁碟區為空時將其刪除。

**警告**  
移除額外的儲存磁碟區之前，請確定磁碟區上沒有存放資料庫檔案。

下列範例會移除磁碟`rdsdbdata4`區。

```
aws rds modify-db-instance \
  --db-instance-identifier my-sql-server-instance \
  --region us-east-1 \
  --additional-storage-volumes '[{"VolumeName":"rdsdbdata4","SetForDelete":true}]' \
  --apply-immediately
```

## 使用 RDS for SQL Server 還原其他儲存磁碟區的操作
<a name="SQLServer.ASV.Restore"></a>

還原資料庫時，您可以新增儲存磁碟區。您也可以修改現有磁碟區的儲存設定。

**Topics**
+ [

### 快照還原
](#SQLServer.ASV.SnapshotRestore)
+ [

### 時間點復原
](#SQLServer.ASV.PITR)
+ [

### 原生資料庫還原
](#SQLServer.ASV.NativeRestore)

### 快照還原
<a name="SQLServer.ASV.SnapshotRestore"></a>

從快照還原時，您可以新增新的其他儲存磁碟區，或修改現有磁碟區的 IOPS、輸送量和儲存類型設定。

下列範例會從快照還原資料庫執行個體，並修改`rdsdbdata2`磁碟區的 IOPS 設定：

```
aws rds restore-db-instance-from-db-snapshot \
  --db-instance-identifier my-restored-instance \
  --db-snapshot-identifier my-snapshot \
  --region us-east-1 \
  --additional-storage-volumes '[{"VolumeName":"rdsdbdata2","IOPS":5000}]'
```

### 時間點復原
<a name="SQLServer.ASV.PITR"></a>

在point-in-time(PITR) 期間，您可以使用自訂組態新增額外的儲存磁碟區。

下列範例會執行 PITR 並新增 5，000 GiB 一般用途 SSD (gp3) 磁碟區：

```
aws rds restore-db-instance-to-point-in-time \
  --source-db-instance-identifier my-source-instance \
  --target-db-instance my-pitr-instance \
  --use-latest-restorable-time \
  --region us-east-1 \
  --additional-storage-volumes '[{"VolumeName":"rdsdbdata4","StorageType":"gp3","AllocatedStorage":5000,"IOPS":5000,"StorageThroughput":200}]'
```

### 原生資料庫還原
<a name="SQLServer.ASV.NativeRestore"></a>

您可以使用`rds_restore_database`預存程序將資料庫還原至特定的其他儲存磁碟區。兩個新參數支援磁碟區選擇：

**`data_file_volume`**  
指定資料庫資料檔案的磁碟機代號

**`log_file_volume`**  
指定資料庫日誌檔案的磁碟機代號

下列範例會還原資料庫，其中包含`H:`磁碟機上的資料檔案和`I:`磁碟機上的日誌檔案：

```
EXEC msdb.dbo.rds_restore_database    
    @restore_db_name='my_database',
    @s3_arn_to_restore_from='arn:aws:s3:::my-bucket/backup-file.bak',
    @data_file_volume='H:',
    @log_file_volume='I:';
```

如果您未指定磁碟區參數，或同時為兩個參數指定`D:`磁碟機，則資料庫檔案會還原至預設`D:`磁碟機：

```
EXEC msdb.dbo.rds_restore_database    
    @restore_db_name='my_database',
    @s3_arn_to_restore_from='arn:aws:s3:::my-bucket/backup-file.bak';
```

## 使用 RDS for SQL Server 的其他儲存磁碟區的使用案例
<a name="SQLServer.ASV.UseCases"></a>

其他儲存磁碟區支援各種資料庫管理案例。下列各節說明常見的使用案例和實作方法。

**Topics**
+ [

### 在其他儲存磁碟區上建立資料庫
](#SQLServer.ASV.NewDatabase)
+ [

### 擴充儲存容量
](#SQLServer.ASV.ExtendStorage)
+ [

### 在磁碟區之間移動資料庫
](#SQLServer.ASV.MoveDatabase)
+ [

### 將資料存檔到經濟實惠的儲存體
](#SQLServer.ASV.ArchiveData)

### 在其他儲存磁碟區上建立資料庫
<a name="SQLServer.ASV.NewDatabase"></a>

您可以使用標準 SQL Server `CREATE DATABASE`陳述式，直接在其他儲存磁碟區上建立新的資料庫。

下列範例會建立資料庫，其中包含`H:`磁碟機上的資料檔案和`I:`磁碟機上的日誌檔案：

```
CREATE DATABASE MyDatabase
ON (
    NAME = 'MyDatabase_Data',
    FILENAME = 'H:\rdsdbdata\data\MyDatabase_Data.mdf',
    SIZE = 100MB,
    FILEGROWTH = 10MB
)
LOG ON (
    NAME = 'MyDatabase_Log',
    FILENAME = 'I:\rdsdbdata\data\MyDatabase_Log.ldf',
    SIZE = 10MB,
    FILEGROWTH = 10%
);
```

### 擴充儲存容量
<a name="SQLServer.ASV.ExtendStorage"></a>

當預設`D:`磁碟機達到容量上限時，您可以新增額外的儲存磁碟區、擴展現有磁碟區，以及在新的磁碟區上建立新的資料檔案或日誌檔案。

**擴充儲存容量**

1. 使用 `modify-db-instance`命令將儲存磁碟區新增至執行個體。

1. 將新的資料檔案新增至額外的儲存磁碟區：

   ```
   ALTER DATABASE MyDatabase
   ADD FILE (
       NAME = 'MyDatabase_Data2',
       FILENAME = 'H:\rdsdbdata\data\MyDatabase_Data2.ndf',
       SIZE = 500MB,
       FILEGROWTH = 50MB
   );
   ```

### 在磁碟區之間移動資料庫
<a name="SQLServer.ASV.MoveDatabase"></a>

若要將資料庫移至不同的磁碟區，請使用 備份和還原方法搭配 `rds_backup_database`和 `rds_restore_database`預存程序。如需詳細資訊，請參閱[使用原生備份與還原](SQLServer.Procedural.Importing.Native.Using.md)。

**將資料庫移至不同的磁碟區**

1. 使用 備份資料庫`rds_backup_database`：

   ```
   EXEC msdb.dbo.rds_backup_database 
       @source_db_name='MyDatabase',
       @s3_arn_to_backup_to='arn:aws:s3:::my-bucket/database-backup.bak';
   ```

1. 將資料庫還原至目標磁碟區：

   ```
   EXEC msdb.dbo.rds_restore_database    
       @restore_db_name='MyDatabase_New',
       @s3_arn_to_restore_from='arn:aws:s3:::my-bucket/database-backup.bak',
       @data_file_volume='H:',
       @log_file_volume='I:';
   ```

1. 從舊磁碟機捨棄資料庫以釋放空間。如需詳細資訊，請參閱[在 Amazon RDS for Microsoft SQL Server 資料庫執行個體中捨棄資料庫](Appendix.SQLServer.CommonDBATasks.DropMirrorDB.md)。

### 將資料存檔到經濟實惠的儲存體
<a name="SQLServer.ASV.ArchiveData"></a>

對於分割資料表，您可以將較舊的資料封存至具有不同效能特性的其他儲存磁碟區。

**封存分割的資料**

1. 新增具有適當儲存類型和容量的儲存磁碟區。

1. 在額外的儲存磁碟區上建立新的檔案群組：

   ```
   ALTER DATABASE MyDatabase
   ADD FILEGROUP ArchiveFileGroup;
   
   ALTER DATABASE MyDatabase
   ADD FILE (
       NAME = 'Archive_Data',
       FILENAME = 'H:\rdsdbdata\data\Archive_Data.ndf',
       SIZE = 1GB,
       FILEGROWTH = 100MB
   ) TO FILEGROUP ArchiveFileGroup;
   ```

1. 使用 SQL Server 分割區管理命令將分割區移至新的檔案群組。