

# Atualizações do mecanismo de banco de dados do Microsoft SQL Server
<a name="USER_UpgradeDBInstance.SQLServer"></a>

Quando o Amazon RDS oferece suporte a uma nova versão de um mecanismo de banco de dados, você pode atualizar suas instâncias de banco de dados para essa nova versão. Há dois tipos de atualizações para instâncias de banco de dados SQL Server: atualizações de versão principal e atualizações de versão secundária. 

As *atualizações da versão principal* podem conter as alterações de banco de dados incompatíveis com os aplicativos existentes. Como resultado, você deve realizar *manualmente* as atualizações de versões principais das suas instâncias de banco de dados. Você pode iniciar uma atualização de versão principal modificando manualmente sua instância de banco de dados. No entanto, antes de realizar uma atualização de versão principal, recomendamos que você teste a atualização seguindo as etapas descritas em [Testar uma atualização do RDS para SQL Server](USER_UpgradeDBInstance.SQLServer.UpgradeTesting.md). 

As *atualizações de versão secundária* contêm somente alterações compatíveis com versões anteriores das aplicações existentes. Você pode atualizar a versão secundária da instância de banco de dados de duas maneiras:
+ *Manualmente*: modifique a instância de banco de dados para iniciar a atualização.
+ *Automaticamente*: habilite atualizações automáticas de versão secundária para a instância de banco de dados.

Quando você habilita atualizações automáticas de versões secundárias, o RDS para SQL Server atualiza automaticamente a instância de banco de dados durante janelas de manutenção programada, quando atualizações essenciais de segurança estão disponíveis em uma versão secundária mais recente.

Para versões secundárias do mecanismo após `16.00.4120.1`, `15.00.4365.2`, `14.00.3465.1` e `13.00.6435.1`, os seguintes protocolos de segurança estão desabilitados por padrão:
+ `rds.tls10` (protocolo TLS 1.0)
+ `rds.tls11` (protocolo TLS 1.1)
+ `rds.rc4` (cifra RC4)
+ `rds.curve25519` (criptografia Curve25519)
+ `rds.3des168` (criptografia Triple DES)

Para versões anteriores do mecanismo, o Amazon RDS habilita esses protocolos de segurança por padrão.

```
...

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

Para ter mais informações sobre como executar atualizações, consulte [Atualizar de uma instância de banco de dados SQL Server](#USER_UpgradeDBInstance.SQLServer.Upgrading). Para obter informações sobre quais versões do SQL Server estão disponíveis no Amazon RDS, consulte [Amazon RDS para Microsoft SQL Server](CHAP_SQLServer.md).

O Amazon RDS também comporta a política de implementação de atualizações para gerenciar atualizações automáticas de versões secundárias em vários recursos de banco de dados e Contas da AWS. Para obter mais informações, consulte [Usar a política de implementação de atualização do AWS Organizations para atualizações automáticas de versões secundárias](RDS.Maintenance.AMVU.UpgradeRollout.md).

**Topics**
+ [Atualizações da versão principal do RDS para SQL Server](USER_UpgradeDBInstance.SQLServer.Major.md)
+ [Considerações sobre atualizações do SQL Server](USER_UpgradeDBInstance.SQLServer.Considerations.md)
+ [Testar uma atualização do RDS para SQL Server](USER_UpgradeDBInstance.SQLServer.UpgradeTesting.md)
+ [Atualizar de uma instância de banco de dados SQL Server](#USER_UpgradeDBInstance.SQLServer.Upgrading)
+ [Fazer upgrade de instâncias de banco de dados defasadas antes do fim do suporte](#USER_UpgradeDBInstance.SQLServer.DeprecatedVersions)

# Atualizações da versão principal do RDS para SQL Server
<a name="USER_UpgradeDBInstance.SQLServer.Major"></a>

Atualmente, o Amazon RDS oferece suporte para as seguintes atualizações de versão principais para uma instância de banco de dados do Microsoft SQL Server.

Atualize sua instância de banco de dados existente para o SQL Server 2017 ou 2019 a partir de qualquer versão, exceto SQL Server 2008. Para atualizar do SQL Server 2008, primeiro atualize para outra versão.


****  

| Versão atual | Versões de upgrade com suporte | 
| --- | --- | 
|  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  | 

É possível usar uma consulta da AWS CLI, como o exemplo a seguir, para localizar as atualizações disponíveis para uma versão específica do mecanismo de banco de dados.

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

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

```
aws rds describe-db-engine-versions ^
    --engine sqlserver-se ^
    --engine-version 14.00.3281.6.v1 ^
    --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" ^
    --output table
```
A saída mostra que é possível atualizar a versão 14.00.3281.6 para as versões mais recentes do SQL Server 2017 ou 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       |
+------------------------+
```

## Nível de compatibilidade do banco de dados
<a name="USER_UpgradeDBInstance.SQLServer.Major.Compatibility"></a>

Você pode usar os níveis de compatibilidade do banco de dados Microsoft SQL Server para ajustar alguns comportamentos de banco de dados de forma a imitar as versões anteriores do SQL Server. Para ter mais informações, consulte [Nível de compatibilidade](https://msdn.microsoft.com/en-us/library/bb510680.aspx) na documentação da Microsoft. Quando você atualiza sua instância de banco de dados, todos os bancos de dados existentes permanecem em seus níveis de compatibilidade originais. 

Você pode alterar o nível de compatibilidade de um banco de dados usando o comando ALTER DATABASE. Por exemplo, para alterar um banco de dados denominado `customeracct` para que ele seja compatível com o SQL Server 2016, emita o seguinte comando: 

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

# Considerações sobre atualizações do SQL Server
<a name="USER_UpgradeDBInstance.SQLServer.Considerations"></a>

O Amazon RDS usa dois snapshot de banco de dadoss durante o processo de atualização. O primeiro snapshot de banco de dados é da instância de banco de dados antes de qualquer alteração de upgrade ter sido feita. O segundo snapshot de banco de dados é capturado após a conclusão do upgrade.

**nota**  
O Amazon RDS só tirará snapshot de banco de dadoss se você tiver definido o período de retenção de backup para sua instância de banco de dados como um número maior que 0. Para alterar o período de retenção de backup, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).

Após a conclusão de um upgrade, não será possível reverter para a versão anterior do mecanismo de banco de dados. Se desejar retornar à versão anterior, restaure o snapshot do banco de dados que foi tirado antes do upgrade para criar uma nova instância de banco de dados. 

Durante uma atualização de versão secundária ou principal do SQL Server, as métricas **Free Storage Space (Espaço de armazenamento gratuito)** e **Disk Queue Depth (Profundidade da fila do disco)** exibirão `-1`. Após a conclusão da atualização, ambas as métricas voltarão ao normal.

Antes de fazer a atualização da instância do SQL Server, analise as informações a seguir.

**Topics**
+ [Práticas recomendadas antes de iniciar uma atualização](#USER_UpgradeDBInstance.SQLServer.BestPractices)
+ [Considerações Multi-AZ](#USER_UpgradeDBInstance.SQLServer.MAZ)
+ [Considerações sobre réplicas de leitura](#USER_UpgradeDBInstance.SQLServer.readreplica)
+ [Considerações de grupos de opções](#USER_UpgradeDBInstance.SQLServer.OGPG.OG)
+ [Considerações de grupos de parâmetros](#USER_UpgradeDBInstance.SQLServer.OGPG.PG)

## Práticas recomendadas antes de iniciar uma atualização
<a name="USER_UpgradeDBInstance.SQLServer.BestPractices"></a>

Antes de iniciar o processo de atualização, implemente as seguintes etapas preparatórias para permitir que a atualização ocorra de maneira ideal e para minimizar possíveis problemas:

Gerenciamento do cronograma e de workloads  
+ Programe as atualizações para períodos de baixo volume de transações.
+ Minimize as operações de gravação durante a janela de atualização.
Isso permite que o Amazon RDS conclua as atualizações mais depressa, reduzindo o número de arquivos de backup do log de transações que o RDS precisa restaurar durante o emparelhamento de secundárias e principais.

Gerenciamento de transações  
+ Identifique e monitore transações de longa duração.
+ Garanta que todas as transações essenciais sejam confirmadas antes de iniciar a atualização.
+ Evite transações de longa duração durante a janela de atualização.

Otimização do arquivo de log  
Examine e otimize os arquivos de log das transações:  
+ Reduza os arquivos de log superdimensionados.
+ Reduza os padrões de alto consumo de logs.
+ Gerencie os arquivos de log virtuais (VLFs).
+ Mantenha espaço livre adequado para operações normais.

## Considerações Multi-AZ
<a name="USER_UpgradeDBInstance.SQLServer.MAZ"></a>

O Amazon RDS oferece suporte a implantações Multi-AZ para instâncias de bancos de dados que executem o Microsoft SQL Server usando o SQL Server Database Mirroring (DBM) ou Grupos de disponibilidade AlwaysOn. Para obter mais informações, consulte [Implantações multi-AZ para o Amazon RDS for Microsoft SQL Server](USER_SQLServerMultiAZ.md).

Em uma implantação Multi-AZ (espelhamento/AlwaysOn), quando uma atualização é solicitada, o RDS segue uma estratégia de atualização contínua para as instâncias primária e secundária. As atualizações contínuas garantem que pelo menos uma instância esteja disponível para transações enquanto a instância secundária é atualizada. Espera-se que a interrupção dure apenas o tempo de um failover.

Durante a atualização, o RDS remove a instância secundária da configuração Multi-AZ, executa uma atualização da instância secundária e restaura todos os backups de log de transações da primária feitos durante o período em que ela estava desconectada. Depois que todos os backups de log forem restaurados, o RDS une o secundário atualizado ao primário. Quando todos os bancos de dados estiverem em um estado sincronizado, o RDS executa um failover para a instância secundária atualizada. Depois que o failover é concluído, o RDS prossegue com a atualização da antiga instância primária, restaura todos os backups do log de transações e a associa à nova instância primária.

Para minimizar essa duração do failover, recomendamos usar o endpoint do receptor do grupo de disponibilidade do AlwaysOn AG ao usar bibliotecas de cliente que ofereçam suporte à opção de conexão `MultiSubnetFailover` na string de conexão. Ao usar o endpoint do receptor do grupo de disponibilidade, os tempos de failover geralmente são inferiores a 10 segundos, no entanto, essa duração não inclui nenhum tempo adicional de recuperação de falhas.

## Considerações sobre réplicas de leitura
<a name="USER_UpgradeDBInstance.SQLServer.readreplica"></a>

Durante uma atualização da versão do banco de dados, o Amazon RDS atualiza todas as réplicas de leitura, bem como a instância de banco de dados primária. O Amazon RDS não é compatível com atualizações de versões de banco de dados nas réplicas de leitura separadamente. Para ter mais informações sobre réplicas de leitura, consulte [Trabalhar com réplicas de leitura do Microsoft SQL Server no Amazon RDS](SQLServer.ReadReplicas.md).

Ao fazer uma atualização da versão do banco de dados da instância de banco de dados primária, todas as réplicas de leitura também são atualizadas automaticamente. O Amazon RDS vai atualizar todas as réplicas de leitura simultaneamente antes de atualizar a instância de banco de dados primária. As réplicas de leitura podem não estar disponíveis até que a atualização da versão do banco de dados na instância de banco de dados primária seja concluída.

## Considerações de grupos de opções
<a name="USER_UpgradeDBInstance.SQLServer.OGPG.OG"></a>

Se a sua instância de banco de dados usar um grupo de opções de banco de dados personalizado, em alguns casos, o Amazon RDS não poderá atribuir automaticamente à instância um novo grupo de opções. Por exemplo, ao atualizar para uma nova versão principal, você deve especificar um novo grupo de opções. Recomendamos que você crie um novo grupo de opções e adicione as mesmas opções a ele que o seu grupo de opções personalizadas existente.

Para ter mais informações, consulte [Criar um grupo de opções](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) ou [Copiar um grupo de opções](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Copy).

## Considerações de grupos de parâmetros
<a name="USER_UpgradeDBInstance.SQLServer.OGPG.PG"></a>

Se sua instância de banco de dados usa um grupo de parâmetros de banco de dados personalizado:
+ O Amazon RDS reinicializa automaticamente a instância de banco de dados após uma atualização.
+ Em alguns casos, o RDS não pode atribuir automaticamente um novo grupo de parâmetros à sua instância de banco de dados.

  Por exemplo, ao atualizar para uma nova versão principal, você deve especificar um novo grupo de parâmetros. Recomendamos que você crie um novo parameter group e configure os parâmetros como no seu parameter group personalizado existente.

Para ter mais informações, consulte [Criar um grupo de parâmetros de banco de dados no Amazon RDS](USER_WorkingWithParamGroups.Creating.md) ou [Copiar um grupo de parâmetros de banco de dados no Amazon RDS](USER_WorkingWithParamGroups.Copying.md).

# Testar uma atualização do RDS para SQL Server
<a name="USER_UpgradeDBInstance.SQLServer.UpgradeTesting"></a>

Antes de executar um upgrade de versão principal na sua instância de banco de dados, você deve testar completamente seu banco de dados e todos os aplicativos que o acessam para verificar a compatibilidade com a nova versão. Recomendamos que você use o procedimento a seguir.

**Para testar um upgrade de versão principal**

1. Examine a [Atualização do SQL Server](https://docs.microsoft.com/en-us/sql/database-engine/install-windows/upgrade-sql-server) na documentação da Microsoft para a nova versão do mecanismo de banco de dados para ver se existem problemas de compatibilidade que podem afetar o banco de dados as aplicações.

1. Se a sua instância de banco de dados usar um grupo de opções personalizado, crie um novo grupo de opções compatível com a nova versão para a qual você está atualizando. Para ter mais informações, consulte [Considerações de grupos de opções](USER_UpgradeDBInstance.SQLServer.Considerations.md#USER_UpgradeDBInstance.SQLServer.OGPG.OG).

1. Se a sua instância de banco de dados usar um parameter group personalizado, crie um novo parameter group compatível com a nova versão para a qual você está atualizando. Para ter mais informações, consulte [Considerações de grupos de parâmetros](USER_UpgradeDBInstance.SQLServer.Considerations.md#USER_UpgradeDBInstance.SQLServer.OGPG.PG).

1. Crie um snapshot de banco de dados da instância de banco de dados a ser atualizada. Para ter mais informações, consulte [Criar um snapshot de banco de dados para uma instância de banco de dados single-AZ para o Amazon RDS](USER_CreateSnapshot.md).

1. Restaure o snapshot de banco de dados para criar uma nova instância de banco de dados de teste. Para ter mais informações, consulte [Restaurar uma instância de banco de dados](USER_RestoreFromSnapshot.md).

1. Modifique essa nova instância de banco de dados de teste para atualizá-la para a nova versão, usando um dos seguintes métodos:
   + [Console](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.Manual.Console)
   + [AWS CLI](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.Manual.CLI)
   + [API do RDS](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.Manual.API)

1. Avalie o armazenamento usado pela instância atualizada para determinar se o upgrade requer armazenamento adicional. 

1. Execute quantos testes de garantia de qualidade na instância de banco de dados atualizada forem necessários para garantir que o seu banco de dados e o seu aplicativo funcionem corretamente com a nova versão. Implemente os novos testes necessários para avaliar o impacto de problemas de compatibilidade que você identificou na etapa 1. Teste todos os procedimentos armazenados e funções. Direcione versões de teste dos seus aplicativos à instância de banco de dados atualizada. 

1. Se todos os testes forem aprovados, realize o upgrade na sua instância de banco de dados de produção. Recomendamos que você não permita operações de gravação na instância de banco de dados até confirmar que tudo está funcionando corretamente. 

## Atualizar de uma instância de banco de dados SQL Server
<a name="USER_UpgradeDBInstance.SQLServer.Upgrading"></a>

Para obter informações sobre como atualizar manual ou automaticamente uma instância de banco de dados do SQL Server, consulte o seguinte:
+ [Atualizar a versão de mecanismo de uma instância de banco de dados ](USER_UpgradeDBInstance.Upgrading.md)
+ [Práticas recomendadas para atualizar o SQL Server 2008 R2 para o SQL Server 2016 no 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**  
Se você tiver algum snapshot criptografado usando o AWS KMS, recomendamos iniciar um upgrade antes do fim do suporte. 

## Fazer upgrade de instâncias de banco de dados defasadas antes do fim do suporte
<a name="USER_UpgradeDBInstance.SQLServer.DeprecatedVersions"></a>

Depois que uma versão principal é defasada, não é possível instalá-la em novas instâncias de banco de dados. O RDS tentará fazer o upgrade automático de todas as instâncias de banco de dados existentes. 

Se você precisar restaurar uma instância de banco de dados defasada, poderá fazer uma Point-In-Time Recovery (PITR – Recuperação de ponto no tempo) ou restaurar um snapshot. Isso permite o acesso temporário a uma instância de banco de dados que usa a versão que está sendo preterida. No entanto, depois que uma versão principal for totalmente preterida, essas instâncias de banco de dados também serão automaticamente atualizadas para uma versão com suporte. 