

# Actualizaciones del motor de base de datos de Microsoft SQL Server
<a name="USER_UpgradeDBInstance.SQLServer"></a>

Cuando Amazon RDS admita una nueva versión de un motor de base de datos, podrá actualizar sus instancias de base de datos a la nueva versión. Hay dos tipos de actualizaciones para las instancias de base de datos de SQL Server: actualizaciones de versiones principales y actualizaciones de versiones secundarias. 

*Las actualizaciones de la versión principal* pueden contener cambios realizados en la base de datos que no son compatibles con las versiones anteriores de las aplicaciones. Por lo tanto, debe realizar *manualmente* las actualizaciones de versiones principales de sus instancias de base de datos. Puede iniciar una actualización de versión principal modificando su instancia de base de datos. Sin embargo, antes de realizar una actualización de versión principal, recomendamos que pruebe la actualización siguiendo los pasos descritos en [Prueba de una actualización de RDS para SQL Server](USER_UpgradeDBInstance.SQLServer.UpgradeTesting.md). 

Las *actualizaciones de versiones secundarias* solo contienen cambios compatibles con las versiones anteriores de las aplicaciones existentes. Puede actualizar la versión secundaria de la instancia de base de datos de dos maneras:
+ *Manualmente*: modifique la instancia de base de datos para iniciar la actualización
+ *Automáticamente*: habilite las actualizaciones automáticas de versiones secundarias para la instancia de base de datos

Al habilitar las actualizaciones automáticas de las versiones secundarias, RDS para SQL Server actualiza automáticamente la instancia de base de datos durante los periodos de mantenimiento programados cuando hay actualizaciones de seguridad críticas disponibles en una versión secundaria más reciente.

Para las versiones secundarias del motor posteriores a `16.00.4120.1`, `15.00.4365.2`, `14.00.3465.1`, `13.00.6435.1`, los siguientes protocolos de seguridad están desactivados de forma predeterminada:
+ `rds.tls10` (protocolo TLS 1.0)
+ `rds.tls11` (protocolo TLS 1.1)
+ `rds.rc4` (cifrado RC4)
+ `rds.curve25519` (cifrado Curve25519)
+ `rds.3des168` (cifrado Triple DES)

Para versiones anteriores del motor, Amazon RDS habilita estos protocolos de seguridad de forma predeterminada.

```
...

"ValidUpgradeTarget": [
    {
        "Engine": "sqlserver-se",
        "EngineVersion": "14.00.3281.6.v1",
        "Description": "SQL Server 2017 14.00.3281.6.v1",
        "AutoUpgrade": false,
        "IsMajorVersionUpgrade": false
    }
...
```

Para obtener más información acerca de cómo realizar actualizaciones, consulte [Actualización de una instancia de base de datos de SQL Server](#USER_UpgradeDBInstance.SQLServer.Upgrading). Para obtener información acerca de las versiones de SQL Server disponibles en Amazon RDS, consulte [Amazon RDS for Microsoft SQL Server](CHAP_SQLServer.md).

Amazon RDS también admite la política de implementación de actualizaciones para administrar las actualizaciones automáticas de versiones secundarias en varios recursos de bases de datos y Cuentas de AWS. Para obtener más información, consulte [Uso de la política de implementación de actualizaciones de AWS Organizations para actualizaciones de versiones secundarias automáticas](RDS.Maintenance.AMVU.UpgradeRollout.md).

**Topics**
+ [Actualizaciones de versiones principales de RDS para SQL Server](USER_UpgradeDBInstance.SQLServer.Major.md)
+ [Aspectos a tener en cuenta sobre las actualizaciones de SQL Server](USER_UpgradeDBInstance.SQLServer.Considerations.md)
+ [Prueba de una actualización de RDS para SQL Server](USER_UpgradeDBInstance.SQLServer.UpgradeTesting.md)
+ [Actualización de una instancia de base de datos de SQL Server](#USER_UpgradeDBInstance.SQLServer.Upgrading)
+ [Actualización de instancias de base de datos obsoletas antes de finalizar el soporte técnico](#USER_UpgradeDBInstance.SQLServer.DeprecatedVersions)

# Actualizaciones de versiones principales de RDS para SQL Server
<a name="USER_UpgradeDBInstance.SQLServer.Major"></a>

Amazon RDS admite actualmente las siguientes actualizaciones de la versión principal para una instancia de base de datos de Microsoft SQL Server.

Puede actualizar su instancia de base de datos existente a SQL Server 2017 o 2019 desde cualquier versión salvo SQL Server 2008. Para actualizar desde SQL Server 2008, primero actualice a una de las otras versiones.


****  

| Versión actual | Versiones de actualización admitidas | 
| --- | --- | 
|  SQL Server 2019  |  SQL Server 2022  | 
|  SQL Server 2017  |  SQL Server 2022 SQL Server 2019  | 
|  SQL Server 2016  |  SQL Server 2022 SQL Server 2019 SQL Server 2017  | 

Puede utilizar una consulta de AWS CLI, como el ejemplo siguiente, para buscar las actualizaciones disponibles para una versión concreta del motor de base de datos.

**Example**  
Para Linux, macOS o:Unix  

```
aws rds describe-db-engine-versions \
    --engine sqlserver-se \
    --engine-version 14.00.3281.6.v1 \
    --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" \
    --output table
```
En:Windows  

```
aws rds describe-db-engine-versions ^
    --engine sqlserver-se ^
    --engine-version 14.00.3281.6.v1 ^
    --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" ^
    --output table
```
El resultado muestra que puede actualizar la versión 14.00.3281.6 a las versiones más recientes disponibles de SQL Server 2017 o 2019.  

```
--------------------------
|DescribeDBEngineVersions|
+------------------------+
|      EngineVersion     |
+------------------------+
|  14.00.3294.2.v1       |
|  14.00.3356.20.v1      |
|  14.00.3381.3.v1       |
|  14.00.3401.7.v1       | 
|  14.00.3421.10.v1      |
|  14.00.3451.2.v1       |
|  15.00.4043.16.v1      |
|  15.00.4073.23.v1      |
|  15.00.4153.1.v1       |
|  15.00.4198.2.v1       |
|  15.00.4236.7.v1       |
+------------------------+
```

## Nivel de compatibilidad de la base de datos
<a name="USER_UpgradeDBInstance.SQLServer.Major.Compatibility"></a>

Puede utilizar los niveles de compatibilidad de la base de datos de Microsoft SQL Server para ajustar algunos comportamientos de la base de datos con objeto de imitar versiones anteriores de SQL Server. Para obtener más información, consulte [Niveles de compatibilidad](https://msdn.microsoft.com/en-us/library/bb510680.aspx) en la documentación de Microsoft. Al actualizar la instancia de base de datos, todas las bases de datos existentes conservan su nivel de compatibilidad original. 

Puede cambiar el nivel de compatibilidad de una base de datos mediante el comando ALTER DATABASE. Por ejemplo, para cambiar una base de datos llamada `customeracct` de modo que sea compatible con SQL  Server 2016, utilice el siguiente comando: 

```
1. ALTER DATABASE customeracct SET COMPATIBILITY_LEVEL = 130
```

# Aspectos a tener en cuenta sobre las actualizaciones de SQL Server
<a name="USER_UpgradeDBInstance.SQLServer.Considerations"></a>

Amazon RDS toma dos instantáneas de base de datos durante el proceso de actualización. La primera instantánea de base de datos es la de la instancia de base de datos antes de que se haya llevado a cabo ningún cambio. La segunda instantánea de base de datos se crea cuando termina la actualización.

**nota**  
Amazon RDS solo realiza instantáneas de base de datos si ha definido el periodo de retención de copia de seguridad de su instancia de base de datos en un número mayor que 0. Para cambiar el periodo de retención de copia de seguridad, consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md).

Después de completar la actualización, no puede volver a la versión anterior del motor de base de datos. Si desea volver a la versión anterior, restaure desde la instantánea de base de datos que se realizó antes de la actualización para crear una nueva instancia de base de datos. 

Durante la actualización de una versión principal o secundaria de SQL Server, las métricas **Free Storage Space** y **Disk Queue Depth** mostrarán el valor `-1`. Una vez finalizada la actualización, las dos métricas recuperarán sus valores normales.

Antes de actualizar la instancia de SQL Server, lea la siguiente información.

**Topics**
+ [Prácticas recomendadas antes de iniciar una actualización](#USER_UpgradeDBInstance.SQLServer.BestPractices)
+ [Consideraciones de Multi-AZ](#USER_UpgradeDBInstance.SQLServer.MAZ)
+ [Consideraciones sobre las réplicas de lectura](#USER_UpgradeDBInstance.SQLServer.readreplica)
+ [Consideraciones relativas al grupo de opciones](#USER_UpgradeDBInstance.SQLServer.OGPG.OG)
+ [Consideraciones relativas al grupo de parámetros](#USER_UpgradeDBInstance.SQLServer.OGPG.PG)

## Prácticas recomendadas antes de iniciar una actualización
<a name="USER_UpgradeDBInstance.SQLServer.BestPractices"></a>

Antes de iniciar el proceso de actualización, implemente los siguientes pasos preparatorios para lograr un rendimiento óptimo de la actualización y minimizar los posibles problemas:

Administración de tiempos y carga de trabajo  
+ Programe las actualizaciones durante los periodos de bajo volumen de transacciones.
+ Minimice las operaciones de escritura durante el periodo de actualización.
Esto permite a Amazon RDS completar las actualizaciones con mayor rapidez al reducir la cantidad de archivos de copia de seguridad del registro de transacciones que RDS necesita restaurar durante el emparejamiento entre el secundario y el primario.

Administración de transacciones  
+ Identifique y supervise transacciones de larga duración.
+ Asegúrese de que todas las transacciones críticas estén confirmadas antes de iniciar la actualización.
+ Evite las transacciones de larga duración durante el periodo de actualización.

Optimización de archivos de registro  
Revise y optimice los archivos de registro de transacciones:  
+ Reduzca los archivos de registro de gran tamaño.
+ Reduzca los patrones de alto consumo de registros.
+ Administre los archivos de registro virtuales (VLF).
+ Mantenga un espacio libre adecuado para las operaciones normales.

## Consideraciones de Multi-AZ
<a name="USER_UpgradeDBInstance.SQLServer.MAZ"></a>

Amazon RDS admite implementaciones Multi-AZ para instancias de base de datos en las que se ejecuta Microsoft SQL Server mediante el uso de la creación de reflejos de bases de datos (DBM) de SQL Server o los grupos de disponibilidad (AG) Always On. Para obtener más información, consulte [Implementaciones Multi-AZ para Amazon RDS for Microsoft SQL Server](USER_SQLServerMultiAZ.md).

En una implementación multi-AZ (reflejo/AlwaysOn), cuando se solicita una actualización, RDS sigue una estrategia de actualización progresiva para las instancias principal y secundaria. Las actualizaciones progresivas garantizan que al menos una instancia esté disponible para las transacciones mientras se actualiza la instancia secundaria. Se espera que la interrupción solo dure lo que la conmutación por error.

Durante la actualización, RDS elimina la instancia secundaria de la configuración Multi-AZ, actualiza la instancia secundaria y restaura las copias de seguridad de registros de transacciones de la principal realizadas durante la desconexión. Una vez restauradas todas las copias de seguridad del registro, RDS une la secundaria actualizada a la principal. Cuando todas las bases de datos se encuentran en estado sincronizado, RDS realiza una conmutación por error a la instancia secundaria actualizada. Una vez completada la conmutación por error, RDS continúa con la actualización de la instancia principal anterior, restaura las copias de seguridad del registro de transacciones y la empareja con la nueva principal.

Para minimizar la duración de esta conmutación por error, recomendamos utilizar el punto de conexión del oyente del grupo de disponibilidad AlwaysOn AG cuando se utilizan bibliotecas de clientes que admiten la opción de conexión `MultiSubnetFailover` en la cadena de conexión. Cuando se utiliza el punto de conexión del oyente del grupo de disponibilidad, los tiempos de conmutación por error suelen ser inferiores a 10 segundos; no obstante, esta duración no incluye ningún tiempo adicional de recuperación tras un bloqueo.

## Consideraciones sobre las réplicas de lectura
<a name="USER_UpgradeDBInstance.SQLServer.readreplica"></a>

Durante una actualización de la versión de la base de datos, Amazon RDS actualiza todas las réplicas de lectura junto con la instancia de base de datos principal. Amazon RDS no admite actualizaciones de versiones de bases de datos en las réplicas de lectura por separado. Para obtener más información acerca de las réplicas de lectura, consulte [Uso de réplicas de lectura para Microsoft SQL Server en Amazon RDS](SQLServer.ReadReplicas.md).

Al actualizar la versión de la base de datos de la instancia de base de datos principal, todas las réplicas de lectura también se actualizan automáticamente. Amazon RDS actualiza todas las réplicas de lectura de forma simultánea antes de actualizar la instancia de base de datos principal. Es posible que las réplicas de lectura no estén disponibles hasta que se complete la actualización de la versión de la base de datos en la instancia de base de datos principal.

## Consideraciones relativas al grupo de opciones
<a name="USER_UpgradeDBInstance.SQLServer.OGPG.OG"></a>

Si la instancia de base de datos utiliza un grupo de opciones de base de datos personalizado, en algunos casos Amazon RDS no puede asignar automáticamente a la instancia de base de datos un grupo de opciones nuevo. Por ejemplo, cuando se actualiza a una nueva versión principal, se debe especificar un grupo de opciones nuevo. Recomendamos que cree un grupo de opciones nuevo y que le añada las mismas opciones que tiene el grupo de opciones personalizado existente.

Para obtener más información, consulte [Creación de un grupo de opciones](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) o [Copia de un grupo de opciones](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Copy).

## Consideraciones relativas al grupo de parámetros
<a name="USER_UpgradeDBInstance.SQLServer.OGPG.PG"></a>

Si su instancia de base de datos utiliza un grupo de parámetro de base de datos personalizado:
+ Amazon RDS reinicia automáticamente la instancia de base de datos después de una actualización.
+ En algunos casos, RDS no puede asignar automáticamente un grupo de parámetro nuevo a su instancia de base de datos.

  Por ejemplo, cuando se actualiza a una versión principal nueva, se debe especificar un grupo de parámetro nuevo. Recomendamos que cree un grupo de parámetros nuevo y que configure en él los mismos parámetros que tiene el grupo de parámetros personalizado existente.

Para obtener más información, consulte [Creación de un grupo de parámetros de base de datos en Amazon RDS](USER_WorkingWithParamGroups.Creating.md) o [Copia de un grupo de parámetros de base de datos en Amazon RDS](USER_WorkingWithParamGroups.Copying.md).

# Prueba de una actualización de RDS para SQL Server
<a name="USER_UpgradeDBInstance.SQLServer.UpgradeTesting"></a>

Antes de realizar una actualización de versión principal en su instancia de base de datos, deberá realizar una comprobación exhaustiva de su base de datos y de todas las aplicaciones que tienen acceso a ella, para determinar la compatibilidad con la versión nueva. Le recomendamos que utilice el siguiente procedimiento.

**Para probar una actualización de versión principal**

1. Revise [Actualizar SQL Server](https://docs.microsoft.com/en-us/sql/database-engine/install-windows/upgrade-sql-server) en la documentación de actualización relativa a la nueva versión del motor de base de datos para ver si hubiera problemas de compatibilidad que pudieran afectar a su base de datos o aplicaciones:

1. Si la instancia de base de datos utiliza un grupo de opciones personalizado, cree un grupo de opciones nuevo compatible con la versión nueva a la que va a actualizar. Para obtener más información, consulte [Consideraciones relativas al grupo de opciones](USER_UpgradeDBInstance.SQLServer.Considerations.md#USER_UpgradeDBInstance.SQLServer.OGPG.OG).

1. Si la instancia de base de datos utiliza un grupo de parámetros personalizado, cree un grupo de parámetros nuevo compatible con la versión nueva a la que va a actualizar. Para obtener más información, consulte [Consideraciones relativas al grupo de parámetros](USER_UpgradeDBInstance.SQLServer.Considerations.md#USER_UpgradeDBInstance.SQLServer.OGPG.PG).

1. Cree una instantánea de base de datos de la instancia de base de datos que se va a actualizar. Para obtener más información, consulte [Creación de una instantánea de base de datos para una instancia de base de datos single-AZ para Amazon RDS](USER_CreateSnapshot.md).

1. Restaure la instantánea de base de datos para crear una nueva instancia de base de datos de prueba. Para obtener más información, consulte [Restauración a una instancia de base de datos](USER_RestoreFromSnapshot.md).

1. Modifique esta instancia de base de datos de prueba nueva para actualizarla a la nueva versión, utilizando uno de los siguientes métodos:
   + [Consola](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.Manual.Console)
   + [AWS CLI](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.Manual.CLI)
   + [API de RDS](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.Manual.API)

1. Evalúe el almacenamiento utilizado por la instancia actualizada para determinar si la actualización necesita almacenamiento adicional. 

1. Ejecute tantas pruebas de control de calidad en la instancia de base de datos actualizada como necesite para asegurarse de que la base de datos y la aplicación funcionan correctamente con la versión nueva. Implemente las pruebas nuevas necesarias para evaluar el impacto de cualquier problema de compatibilidad identificado en el paso 1. Pruebe todas las funciones y los procedimientos almacenados. Dirija las versiones de prueba de sus aplicaciones a la instancia de base de datos actualizada. 

1. Si se superan todas las pruebas, realice la actualización de la instancia de base de datos de producción. Recomendamos que no permita operaciones de escritura en la instancia de base de datos hasta haber confirmado que todo funciona correctamente. 

## Actualización de una instancia de base de datos de SQL Server
<a name="USER_UpgradeDBInstance.SQLServer.Upgrading"></a>

Para obtener más información acerca de la actualización automática o manual de una instancia de base de datos de SQL Server, consulte lo siguiente:
+ [Actualización de una versión del motor de una instancia de base de datos ](USER_UpgradeDBInstance.Upgrading.md)
+ [Procedimientos recomendados para actualizar SQL Server 2008 R2 a SQL Server 2016 en Amazon RDS for SQL Server](https://aws.amazon.com/blogs/database/best-practices-for-upgrading-sql-server-2008-r2-to-sql-server-2016-on-amazon-rds-for-sql-server/)

**importante**  
Si tiene instantáneas cifradas con AWS KMS, es recomendable que inicie una actualización antes de que finalice el soporte técnico. 

## Actualización de instancias de base de datos obsoletas antes de finalizar el soporte técnico
<a name="USER_UpgradeDBInstance.SQLServer.DeprecatedVersions"></a>

Una vez que queda obsoleta una versión principal, no puede instalarla en instancias de base de datos nuevas. RDS intentará actualizar automáticamente todas las instancias de base de datos existentes. 

Si necesita restaurar una instancia de base de datos obsoleta, puede realizar una recuperación a un momento dado (PITR) o restaurar una instantánea. De este modo se le concederá acceso temporal a una instancia de base de datos que use la versión obsoleta. No obstante, una vez que una versión principal haya quedado totalmente obsoleta, estas instancias de base de datos también se actualizarán automáticamente a una versión compatible. 