

# Uso del almacenamiento en RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.DatabaseStorage"></a>

Con RDS para SQL Server, puede adjuntar hasta tres volúmenes adicionales a la instancia de RDS para SQL Server, cada uno asignado a una letra de unidad de Windows única. Esto le permite distribuir los archivos de la base de datos en varios volúmenes más allá de la unidad `D:` predeterminada. Cuando agrega un volumen de almacenamiento, obtiene una mayor flexibilidad para la administración de archivos de bases de datos y la optimización del almacenamiento.

Los beneficios incluyen:
+ **Distribución flexible de archivos**: distribuya los archivos de datos de bases de datos y los archivos de registro en varios volúmenes para mejorar el rendimiento de E/S.
+ **Optimización del almacenamiento**: utilice diferentes tipos y configuraciones de almacenamiento para diferentes requisitos de carga de trabajo.
+ **Escalabilidad**: agregue capacidad de almacenamiento sin modificar los volúmenes existentes.

**Topics**
+ [

## Consideraciones para el uso de volúmenes de almacenamiento adicionales con RDS para SQL Server
](#SQLServer.ASV.Considerations)
+ [

## Agregación, eliminación o modificación de volúmenes de almacenamiento con RDS para SQL Server
](#SQLServer.ASV.Management)
+ [

## Restauración de operaciones para volúmenes de almacenamiento adicionales con RDS para SQL Server
](#SQLServer.ASV.Restore)
+ [

## Casos de uso para volúmenes de almacenamiento adicionales con RDS para SQL Server
](#SQLServer.ASV.UseCases)

## Consideraciones para el uso de volúmenes de almacenamiento adicionales con RDS para SQL Server
<a name="SQLServer.ASV.Considerations"></a>

Tenga en cuenta las siguientes características y limitaciones al utilizar volúmenes de almacenamiento adicionales con RDS para SQL Server:
+ Solo puede agregar volúmenes de almacenamiento en SQL Server Standard Edition (SE), Enterprise Edition (EE) y Developer Edition (DEV-EE).
+ Puede agregar hasta 3 volúmenes de almacenamiento adicionales por instancia.
+ Los nombres de los volúmenes se asignan automáticamente a las letras de las unidades de Windows de la siguiente manera:
  + `rdsdbdata2`: unidad `H:`
  + `rdsdbdata3`: unidad `I:`
  + `rdsdbdata4`: unidad `J:`
+ Los archivos TempDB siguen utilizando la unidad `T:` cuando se utiliza el almacenamiento de instancias NVMe. Los archivos de auditoría de SQL Server y los archivos de Microsoft Business Intelligence (MSBI) permanecen en la unidad `D:`.
+ Solo puede agregar tipos de almacenamiento de SSD de uso general (gp3) y SSD de IOPS aprovisionadas (io2).
+ El tamaño mínimo de almacenamiento de los volúmenes de almacenamiento adicionales es el mismo que el límite establecido para la unidad `D:` predeterminada. El tamaño máximo de almacenamiento de la instancia de base de datos es de 256 TiB en total en todos los volúmenes.
+ No se admite la agregación de volúmenes de almacenamiento a instancias con réplicas de lectura o a instancias de réplicas de lectura.
+ No se admite la adición de volúmenes de almacenamiento a las instancias habilitadas para la copia de seguridad automatizada entre regiones.
+ No se admite la configuración de volúmenes de almacenamiento adicionales para el autoescalado del almacenamiento.
+ No se admite el traslado de archivos entre volúmenes después de crearlos.
+ No puede eliminar el volumen `D:`, pero puede eliminar otros volúmenes de almacenamiento siempre que estén vacíos.
+ No se admite la modificación del tamaño de los volúmenes existentes durante la restauración de instantáneas o la recuperación en un momento dado (PITR). Sin embargo, puede agregar nuevos volúmenes de almacenamiento durante las operaciones de restauración.

## Agregación, eliminación o modificación de volúmenes de almacenamiento con RDS para SQL Server
<a name="SQLServer.ASV.Management"></a>

Puede agregar, modificar y eliminar volúmenes de almacenamiento adicionales mediante la AWS CLI o la Consola de administración de AWS. Todas las operaciones utilizan la operación de la API `modify-db-instance` con el parámetro `additional-storage-volumes`.

**importante**  
La agregación o eliminación de volúmenes de almacenamiento adicionales crea una copia de seguridad pendiente y un periodo de interrupción de la restauración en un momento dado. Este periodo se cierra cuando se completa el flujo de trabajo de copia de seguridad.

**Topics**
+ [

### Agregación de volúmenes de almacenamiento
](#SQLServer.ASV.Adding)
+ [

### Escalado de volúmenes de almacenamiento adicionales
](#SQLServer.ASV.Scaling)
+ [

### Eliminación de volúmenes de almacenamiento adicionales
](#SQLServer.ASV.Removing)

### Agregación de volúmenes de almacenamiento
<a name="SQLServer.ASV.Adding"></a>

Puede agregar hasta tres volúmenes de almacenamiento además de la unidad `D:` predeterminada. Para agregar un nuevo volumen de almacenamiento a la instancia de RDS para SQL Server, utilice el comando `modify-db-instance` con el parámetro `additional-storage-volumes`.

El siguiente ejemplo agrega un nuevo volumen de SSD de uso general (gp3) de 4000 GiB llamado `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
```

### Escalado de volúmenes de almacenamiento adicionales
<a name="SQLServer.ASV.Scaling"></a>

Puede modificar cualquier configuración de almacenamiento para los volúmenes adicionales, excepto el tamaño de almacenamiento. En el siguiente ejemplo, se modifica la configuración de IOPS del volumen `rdsdbdata2`.

```
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
```

### Eliminación de volúmenes de almacenamiento adicionales
<a name="SQLServer.ASV.Removing"></a>

No puede eliminar el volumen `D:`, pero puede eliminar otros volúmenes de almacenamiento cuando estén vacíos.

**aviso**  
Antes de eliminar un volumen de almacenamiento adicional, asegúrese de que no haya ningún archivo de base de datos almacenado en el volumen.

En el siguiente ejemplo, se elimina el volumen `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
```

## Restauración de operaciones para volúmenes de almacenamiento adicionales con RDS para SQL Server
<a name="SQLServer.ASV.Restore"></a>

Al restaurar la base de datos, puede agregar volúmenes de almacenamiento. También puede modificar la configuración de almacenamiento de los volúmenes existentes.

**Topics**
+ [

### Restauración de instantáneas
](#SQLServer.ASV.SnapshotRestore)
+ [

### Recuperación a un momento dado
](#SQLServer.ASV.PITR)
+ [

### Restauración de bases de datos nativos
](#SQLServer.ASV.NativeRestore)

### Restauración de instantáneas
<a name="SQLServer.ASV.SnapshotRestore"></a>

Al restaurar a partir de una instantánea, puede agregar nuevos volúmenes de almacenamiento adicionales o modificar la configuración de IOPS, rendimiento y tipo de almacenamiento de los volúmenes existentes.

El siguiente ejemplo restaura una instancia de base de datos a partir de una instantánea y modifica la configuración de IOPS del volumen `rdsdbdata2`:

```
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}]'
```

### Recuperación a un momento dado
<a name="SQLServer.ASV.PITR"></a>

Durante la recuperación en un momento dado (PITR), puede agregar nuevos volúmenes de almacenamiento adicionales con configuraciones personalizadas.

El siguiente ejemplo realiza PITR y agrega un nuevo volumen de SSD de uso general (gp3) de 5000 GiB:

```
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}]'
```

### Restauración de bases de datos nativos
<a name="SQLServer.ASV.NativeRestore"></a>

Puede utilizar el procedimiento almacenado `rds_restore_database` para restaurar las bases de datos en volúmenes de almacenamiento adicionales específicos. Dos nuevos parámetros permiten la selección de volúmenes:

**`data_file_volume`**  
Especifica la letra de unidad para los archivos de datos de la base de datos

**`log_file_volume`**  
Especifica la letra de unidad para los archivos de registros de la base de datos

El ejemplo siguiente restaura una base de datos con los archivos de datos de la unidad `H:` y los archivos de registro de la unidad `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:';
```

Si no especifica los parámetros de volumen o si especifica la unidad `D:` para ambos parámetros, los archivos de la base de datos se restauran en la unidad `D:` predeterminada:

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

## Casos de uso para volúmenes de almacenamiento adicionales con RDS para SQL Server
<a name="SQLServer.ASV.UseCases"></a>

Los volúmenes de almacenamiento adicionales admiten varios escenarios de administración de bases de datos. Las siguientes secciones describen casos de uso comunes y enfoques de implementación.

**Topics**
+ [

### Creación de bases de datos en volúmenes de almacenamiento adicionales
](#SQLServer.ASV.NewDatabase)
+ [

### Ampliación de la capacidad de almacenamiento
](#SQLServer.ASV.ExtendStorage)
+ [

### Movimiento de bases de datos entre volúmenes
](#SQLServer.ASV.MoveDatabase)
+ [

### Archivado de los datos en un almacenamiento rentable
](#SQLServer.ASV.ArchiveData)

### Creación de bases de datos en volúmenes de almacenamiento adicionales
<a name="SQLServer.ASV.NewDatabase"></a>

Puede crear nuevas bases de datos directamente en volúmenes de almacenamiento adicionales mediante instrucciones estándar de `CREATE DATABASE` SQL Server.

El ejemplo siguiente crea una base de datos con los archivos de datos de la unidad `H:` y los archivos de registro de la unidad `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%
);
```

### Ampliación de la capacidad de almacenamiento
<a name="SQLServer.ASV.ExtendStorage"></a>

Cuando la unidad `D:` predeterminada alcance su capacidad máxima, puede agregar volúmenes de almacenamiento adicionales, escalar los volúmenes existentes y crear nuevos archivos de datos o archivos de registro en los nuevos volúmenes.

**Ampliación de la capacidad de almacenamiento**

1. Agregue un volumen de almacenamiento a la instancia mediante el comando `modify-db-instance`.

1. Agregue un nuevo archivo de datos al volumen de almacenamiento adicional:

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

### Movimiento de bases de datos entre volúmenes
<a name="SQLServer.ASV.MoveDatabase"></a>

Para mover una base de datos a un volumen diferente, utilice el enfoque de copia de seguridad y restauración con los procedimientos `rds_backup_database` y `rds_restore_database` almacenados. Para obtener más información, consulte [Uso de la copia de seguridad y la restauración nativas](SQLServer.Procedural.Importing.Native.Using.md).

**Traslado de una base de datos a otro volumen**

1. Haga una copia de seguridad de la base de datos mediante `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. Restaure la base de datos al volumen objetivo:

   ```
   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. Quite la base de datos de la unidad anterior para liberar espacio. Para obtener más información, consulte [Eliminación de una base de datos en una instancia de base de datos de Amazon RDS para Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.DropMirrorDB.md).

### Archivado de los datos en un almacenamiento rentable
<a name="SQLServer.ASV.ArchiveData"></a>

En el caso de las tablas particionadas, puede archivar datos antiguos en volúmenes de almacenamiento adicionales con características de rendimiento diferentes.

**Archivado de datos particionados**

1. Agregue un volumen de almacenamiento con el tipo y la capacidad de almacenamiento adecuados.

1. Cree un nuevo grupo de archivos en el volumen de almacenamiento adicional:

   ```
   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. Mueva las particiones al nuevo grupo de archivos mediante los comandos de administración de particiones de SQL Server.