

# Amazon RDS para Microsoft SQL Server
<a name="CHAP_SQLServer"></a>

O Amazon RDS é compatível com as versões e as edições do Microsoft SQL Server. A tabela a seguir mostra a versão secundária compatível mais recente de cada versão principal. Para obter a lista completa das versões, edições e versões de mecanismo de RDS compatíveis, consulte [Versões do Microsoft SQL Server no Amazon RDS](SQLServer.Concepts.General.VersionSupport.md).




| Versão principal | Pacote de serviço/GDR | Atualização cumulativa | Versão secundária | Artigo da base de conhecimento | Data de lançamento | 
| --- | --- | --- | --- | --- | --- | 
| SQL Server 2022 | Não aplicável | CU23 |  16.0.4236.2  | [KB5078297](https://learn.microsoft.com/en-us/troubleshoot/sql/releases/sqlserver-2022/cumulativeupdate23) | 29 de janeiro de 2026 | 
| SQL Server 2019 | GDR | CU32-GDR |  15.0.4455.2  | [KB5068404](https://support.microsoft.com/en-us/topic/kb5068404-description-of-the-security-update-for-sql-server-2019-cu32-november-11-2025-c203bfbf-036e-46d2-bc10-6c01200dc48a) | 11 de novembro de 2025 | 
| SQL Server 2017 | GDR | CU31 GDR |  14.0.3515.1  | [KB5068402](https://support.microsoft.com/en-us/topic/kb5068402-description-of-the-security-update-for-sql-server-2017-cu31-november-11-2025-1be08efe-ad14-4b95-a0de-ecbbf2703114) | 11 de novembro de 2025 | 
| SQL Server 2016 | SP3 GDR | Não aplicável |  13.0.6475.1  | [KB5068401](https://support.microsoft.com/en-us/topic/kb5068401-description-of-the-security-update-for-sql-server-2016-sp3-gdr-november-11-2025-59a59fc0-f673-45c2-b8de-492b95c0e423) | 11 de novembro de 2025 | 

Para obter informações sobre licenciamento para o SQL Server, consulte [Licenciar o Microsoft SQL Server no Amazon RDS](SQLServer.Concepts.General.Licensing.md). Consulte informações sobre as compilações do SQL Server neste artigo do suporte da Microsoft sobre [Onde encontrar informações sobre os builds de SQL Server mais recentes](https://support.microsoft.com/en-us/topic/kb957826-where-to-find-information-about-the-latest-sql-server-builds-43994ba5-9aed-2323-ea7c-d29fe9c4fbe8).

Com o Amazon RDS, você pode criar instâncias de banco de dados e snapshot de banco de dadoss, além de restaurações point-in-time e backups automáticos e manuais. As instâncias de banco de dados que executam o SQL Server podem ser usadas dentro de uma VPC. Também é possível usar o Secure Sockets Layer (SSL) para conectar-se a uma instância de banco de dados executando o SQL Server e usar a criptografia de dados transparente (TDE) para criptografar dados em repouso. O Amazon RDS oferece suporte a implantações multi-AZ para o SQL Server usando o SQL Server Database Mirroring (DBM) ou grupos de disponibilidade AlwaysOn (AGs) como uma solução de failover de alta disponibilidade. 

Para oferecer uma experiência de serviço gerenciado, o Amazon RDS não fornece acesso ao shell para instâncias de bancos de dados e restringe o acesso a determinados procedimentos e tabelas do sistema que exigem privilégios avançados. O Amazon RDS oferece suporte a acesso a bancos de dados em uma instância de banco de dados que usa qualquer aplicação de cliente SQL padrão, como o Microsoft SQL Server Management Studio. O Amazon RDS não permite o acesso direto do host a uma instância de banco de dados pelo Telnet, Secure Shell (SSH) ou Windows Remote Desktop Connection. Quando você cria uma instância de banco de dados, o usuário principal é designado à função *db\$1owner* para todos os bancos de dados de usuários nessa instância e possui todas as permissões no nível do banco de dados, exceto as que são usadas para backups. O Amazon RDS gerencia backups para você. 

Antes de criar sua primeira instância de banco de dados, você deve concluir as etapas na seção de configuração deste guia. Para obter mais informações, consulte [Configuração do ambiente do Amazon RDS](CHAP_SettingUp.md).

**Topics**
+ [Tarefas comuns de gerenciamento para o Microsoft SQL Server no Amazon RDS](#SQLServer.Concepts.General)
+ [Limitações das instâncias de banco de dados Microsoft SQL Server](#SQLServer.Concepts.General.FeatureSupport.Limits)
+ [Suporte a classes de instâncias de banco de dados para o Microsoft SQL Server](SQLServer.Concepts.General.InstanceClasses.md)
+ [Otimizar CPUs para instâncias com licença incluída do RDS para SQL Server](SQLServer.Concepts.General.OptimizeCPU.md)
+ [Segurança do Microsoft SQL Server](SQLServer.Concepts.General.FeatureSupport.UnsupportedRoles.md)
+ [Suporte ao programa de conformidade de instâncias de banco de dados do Microsoft SQL Server](#SQLServer.Concepts.General.Compliance)
+ [Versões do Microsoft SQL Server no Amazon RDS](SQLServer.Concepts.General.VersionSupport.md)
+ [Recursos do Microsoft SQL Server no Amazon RDS](SQLServer.Concepts.General.FeatureSupport.md)
+ [Implantações multi-AZ usando o espelhamento de banco de dados ou os grupos de disponibilidade Always On do Microsoft SQL Server](#SQLServer.Concepts.General.Mirroring)
+ [Uso da criptografia de dados transparente para criptografar dados em repouso](#SQLServer.Concepts.General.Options)
+ [Funções e procedimentos armazenados do Amazon RDS para Microsoft SQL Server](SQLServer.Concepts.General.StoredProcedures.md)
+ [Fuso horário local para instâncias de banco de dados do Microsoft SQL Server](SQLServer.Concepts.General.TimeZone.md)
+ [Licenciar o Microsoft SQL Server no Amazon RDS](SQLServer.Concepts.General.Licensing.md)
+ [Conectar-se à instância de banco de dados do Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md)
+ [Trabalhar com o SQL Server Developer Edition no RDS para SQL Server](sqlserver-dev-edition.md)
+ [Trabalhar com o Active Directory com o RDS para SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md)
+ [Atualizações do mecanismo de banco de dados do Microsoft SQL Server](USER_UpgradeDBInstance.SQLServer.md)
+ [Trabalhar com armazenamento no RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.DatabaseStorage.md)
+ [Importar e exportar bancos de dados do SQL Server usando backup e restauração nativos](SQLServer.Procedural.Importing.md)
+ [Trabalhar com réplicas de leitura do Microsoft SQL Server no Amazon RDS](SQLServer.ReadReplicas.md)
+ [Implantações multi-AZ para o Amazon RDS for Microsoft SQL Server](USER_SQLServerMultiAZ.md)
+ [Recursos adicionais do Microsoft SQL Server no Amazon RDS](User.SQLServer.AdditionalFeatures.md)
+ [Opções para o mecanismo de banco de dados do Microsoft SQL Server](Appendix.SQLServer.Options.md)
+ [Tarefas comuns de DBA no Amazon RDS para Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.md)

## Tarefas comuns de gerenciamento para o Microsoft SQL Server no Amazon RDS
<a name="SQLServer.Concepts.General"></a>

A seguir, você encontra tarefas de gerenciamento comuns que são executadas com uma instância de banco de dados Amazon RDS para SQL Server, com links para documentação relevante de cada tarefa. 


****  

| Área de tarefa | Descrição | Documentação relevante | 
| --- | --- | --- | 
|  **Classes de instância, armazenamento e PIOPS**  |  Se você estiver criando uma instância de banco de dados para fins de produção, deve entender como classes de instâncias, tipos de armazenamento e IOPS provisionadas funcionam no Amazon RDS.   |  [Suporte a classes de instâncias de banco de dados para o Microsoft SQL Server](SQLServer.Concepts.General.InstanceClasses.md) [Tipos de armazenamento do Amazon RDS](CHAP_Storage.md#Concepts.Storage)  | 
|  **Implantações multi-AZ**  |  Uma instância de banco de dados de produção deve usar implantações multi-AZ. As implantações multi-AZ oferecem maior disponibilidade, durabilidade de dados e tolerância a falhas para instâncias de banco de dados. As implantações multi-AZ para o SQL Server são feitas usando a tecnologia nativa DBM ou AGs do SQL Server.   |  [Configurar e gerenciar uma implantação multi-AZ para o Amazon RDS](Concepts.MultiAZ.md) [Implantações multi-AZ usando o espelhamento de banco de dados ou os grupos de disponibilidade Always On do Microsoft SQL Server](#SQLServer.Concepts.General.Mirroring)  | 
|  **Amazon Virtual Private Cloud (VPC)**  |  Se a sua conta AWS tiver uma VPC padrão, a instância de banco de dados será criada automaticamente dentro da VPC padrão. Se a sua conta não tiver uma VPC padrão e você quiser a instância de banco de dados em uma VPC, deverá criar os grupos de VPC e sub-redes antes de criar a instância de banco de dados.   |  [Trabalhar com uma instância de banco de dados em uma VPC](USER_VPC.WorkingWithRDSInstanceinaVPC.md)  | 
|  **Grupos de segurança**  |  Por padrão, as instâncias de banco de dados são criadas com um firewall que impede o acesso a elas. Você deve criar um grupo de segurança com os endereços IP corretos e uma configuração de rede para acessar a instância de banco de dados.  |  [Controlar acesso com grupos de segurança](Overview.RDSSecurityGroups.md)  | 
|  **Grupos de parâmetros**  |  Se a sua instância de banco de dados exigir parâmetros de banco de dados específicos, você poderá criar um grupo de parâmetros antes de criar essa instância de banco de dados.   |  [Grupos de parâmetros para Amazon RDS](USER_WorkingWithParamGroups.md)  | 
|  **Grupos de opções**  |  Se a sua instância de banco de dados exigir opções de banco de dados específicas, você deverá criar um grupo de opções antes de criar essa instância de banco de dados.   |  [Opções para o mecanismo de banco de dados do Microsoft SQL Server](Appendix.SQLServer.Options.md)  | 
|  **Conexão à instância de banco de dados**  |  Após criar um grupo de segurança e associá-lo a uma instância de banco de dados, você poderá se conectar à instância de banco de dados usando qualquer aplicativo cliente SQL padrão, como o Microsoft SQL Server Management Studio.   |  [Conectar-se à instância de banco de dados do Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md)  | 
|  **Backup e restauração**  |  Ao criar sua instância de banco de dados, você pode configurá-la para receber backups automáticos. Você também pode fazer backup e restaurar seus bancos de dados manualmente usando arquivos de backup completos (arquivos .bak).   |  [Introdução aos backups](USER_WorkingWithAutomatedBackups.md) [Importar e exportar bancos de dados do SQL Server usando backup e restauração nativos](SQLServer.Procedural.Importing.md)  | 
|  **Monitoramento**  |  Você pode monitorar sua instância de banco de dados do SQL Server usando as métricas, eventos e o monitoramento aprimorado do CloudWatch Amazon RDS.   |  [Visualizar métricas no console do Amazon RDS](USER_Monitoring.md) [Visualizar eventos do Amazon RDS](USER_ListEvents.md)  | 
|  **Arquivos de log**  |  Você pode acessar os arquivos de log de sua instância de banco de dados SQL Server.   |  [Monitorar arquivos de log do Amazon RDS](USER_LogAccess.md) [Arquivos de log do banco de dados do Amazon RDS para Microsoft SQL Server](USER_LogAccess.Concepts.SQLServer.md)  | 

Há também tarefas administrativas avançadas para trabalhar com instâncias de banco de dados do SQL Server. Para obter mais informações, consulte a documentação a seguir: 
+ [Tarefas comuns de DBA no Amazon RDS para Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.md).
+ [Trabalhar com o AWS Managed Active Directory com o RDS para SQL Server](USER_SQLServerWinAuth.md)
+ [Acessar o banco de dados tempdb](SQLServer.TempDB.md)

## Limitações das instâncias de banco de dados Microsoft SQL Server
<a name="SQLServer.Concepts.General.FeatureSupport.Limits"></a>

A implantação do Amazon RDS do Microsoft SQL Server em uma instância de banco de dados apresenta algumas limitações das quais você deve estar ciente:
+ O número máximo de bancos de dados aceitos em uma instância de banco de dados depende do tipo de classe da instância e do modo de disponibilidade—single-AZ, DBM (Database Mirroring) multi-AZ ou Grupos de disponibilidade (AGs) multi-AZ. Os bancos de dados do sistema Microsoft SQL Server não contam para esse limite. 

  A tabela a seguir mostra o número máximo de bancos de dados com suporte para cada tipo de classe de instância e modo de disponibilidade. Use essa tabela para ajudá-lo a decidir se você pode mover de um tipo de classe de instância para outro ou de um modo de disponibilidade para outro. Se sua instância de banco de dados de origem tiver mais bancos de dados do que o tipo de classe de instância de destino ou o modo de disponibilidade puder suportar, a modificação da instância de banco de dados falhará. Você pode ver o status de sua solicitação no painel **Events (Eventos)**.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html)

  \$1 Representa os diferentes tipos de classes da instância. 

  Por exemplo, digamos que sua instância de banco de dados seja executada em db.\$1.16xlarge com single-AZ e que possua 76 bancos de dados. Você modifica a instância do banco de dados para atualizar para o uso de AGs Always On multi-AZ. Essa atualização falhará, pois sua instância de banco de dados contém mais bancos de dados do que a configuração de destino pode suportar. Mas, se você atualizar seu tipo de classe de instância para db.\$1.24xlarge, a modificação será realizada.

  Se a atualização falhar, você verá eventos e mensagens semelhantes aos seguintes:
  +  Não é possível modificar a classe da instância do banco de dados. A instância possui 76 bancos de dados, mas, após a conversão, ela oferece suporte a apenas 75. 
  +  Não é possível converter a instância de banco de dados para multi-AZ: a instância possui 76 bancos de dados, mas, após a conversão, comportaria apenas 75. 

   Se a restauração pontual ou o snapshot falhar, você verá eventos e mensagens semelhantes aos seguintes:
  +  Instância de banco de dados colocada em restauração incompatível. A instância possui 76 bancos de dados, mas, após a conversão, ela oferece suporte a apenas 75. 
+ As seguintes portas são reservadas para o Amazon RDS, e não é possível usá-las ao criar uma instância de banco de dados: `1234, 1434, 3260, 3343, 3389, 47001,` e `49152-49156`.
+ Conexões de cliente de endereços IP dentro do intervalo 169.254.0.0/16 não são permitidas. Esse é o APIPA (Automatic Private IP Addressing Range, Intervalo de endereçamento IP privado automático), usado para o endereçamento de link local.
+ O SQL Server Standard Edition usa apenas um subconjunto dos processadores disponíveis, se a instância do banco de dados tiver mais processadores do que os limites de software (24 núcleos, 4 soquetes e 128 GB de RAM). Exemplos disso são as classes de instância db.m5.24xlarge e db.r5.24xlarge.

  Para obter mais informações, consulte a tabela de limites de escala em [Edições e recursos compatíveis do SQL Server 2019 (15.x)](https://docs.microsoft.com/en-us/sql/sql-server/editions-and-components-of-sql-server-version-15) na documentação da Microsoft.
+ O Amazon RDS para SQL Server não oferece suporte para a importação de dados no banco de dados msdb. 
+ Não renomeie bancos de dados em uma instância de banco de dados em uma implantação multi-AZ do SQL Server.
+ Use estas diretrizes ao definir os seguintes parâmetros de banco de dados em RDS for SQL Server:
  + `max server memory (mb)` >= 256 MB
  + `max worker threads` >= (número de CPUs lógicas\$1 7)

  Para obter mais informações sobre como definir parâmetros de banco de dados, consulte [Grupos de parâmetros para Amazon RDS](USER_WorkingWithParamGroups.md).
+ O tamanho de armazenamento máximo para instâncias de banco de dados do SQL Server é o seguinte: 
  + Armazenamento de uso geral (SSD) – 16 TiB para todas as edições 
  + Armazenamento de IOPS provisionadas: 64 TiB para todas as edições 
  + Armazenamento magnético – 1 TiB para todas as edições 

  Se for preciso uma maior quantidade de armazenamento, você poderá usar fragmentos em múltiplas instâncias de banco de dados para contornar o limite. Essa abordagem exige uma lógica de roteamento dependente de dados em aplicativos que se conectam ao sistema fragmentado. Você pode usar um framework de fragmentação existente ou pode escrever um código personalizado para permitir a fragmentação. Se você usa um framework existente, o framework não pode instalar nenhum componente no mesmo servidor que a instância de banco de dados. 
+ O tamanho de armazenamento mínimo para instâncias de banco de dados do SQL Server é o seguinte:
  + Armazenamento de uso geral (SSD) – 20 GiB para edições Enterprise, Standard, Web e Express
  + Armazenamento IOPS provisionado – 20 GiB para edições Enterprise, Standard, Web e Express
  + Armazenamento magnético – 20 GiB para edições Enterprise, Standard, Web e Express
+ O Amazon RDS não oferece suporte à execução desses serviços no mesmo servidor que sua instância de banco de dados do RDS:
  + Data Quality Services
  + Master Data Services

  Para usar esses recursos, recomendamos que você instale o SQL Server em uma instância do Amazon EC2 ou use uma instância do SQL Server no local. Nesses casos, a instância do EC2 ou do SQL Server atua como o servidor do Master Data Services para a instância de banco de dados do SQL Server no Amazon RDS. Você pode instalar o SQL Server em uma instância do Amazon EC2 com armazenamento do Amazon EBS, respeitando as políticas de licenciamento da Microsoft.
+ Devido às limitações no Microsoft SQL Server, a restauração a determinado momento antes da execução bem-sucedida de `DROP DATABASE` pode não refletir o estado desse banco de dados nesse momento. Por exemplo, o banco de dados descartado normalmente é restaurado ao seu estado até cinco minutos antes do comando `DROP DATABASE` ter sido emitido. Esse tipo de restauração significa que não é possível restaurar as transações feitas durante esses poucos minutos em seu banco de dados descartado. Para contornar essa questão, é possível reeditar o comando `DROP DATABASE` após a conclusão da operação de restauração. Descartar um banco de dados remove os logs de transações desse banco de dados.
+ Para o SQL Server, você cria seus bancos de dados depois de criar sua instância de banco de dados. Os nomes de banco de dados seguem as regras de nomenclatura usuais do SQL Server com as diferenças a seguir.
  + Nomes de banco de dados não podem começar com `rdsadmin`.
  + Não podem começar ou terminar com um espaço ou uma tabulação.
  + Não podem conter nenhum dos caracteres que criam uma nova linha.
  + Não podem conter aspas simples (`'`).
+ O SQL Server Web Edition só permite que você use o modelo **Dev/Teste** ao criar uma instância de banco de dados do RDS para SQL Server.
+ O SQL Server Web Edition foi projetado para provedores de hospedagem e VAPs da Web para hospedar páginas da Web, sites, aplicações e serviços da Web públicos e acessíveis pela Internet. Para obter mais informações, consulte [Licenciar o Microsoft SQL Server no Amazon RDS](SQLServer.Concepts.General.Licensing.md).

# Suporte a classes de instâncias de banco de dados para o Microsoft SQL Server
<a name="SQLServer.Concepts.General.InstanceClasses"></a>

A capacidade de computação e memória de uma instância de banco de dados é determinada de acordo com sua classe de instância de banco de dados. A classe de instância de banco de dados da qual você precisa depende dos requisitos de energia e memória de processamento. Para obter mais informações, consulte [Classes de instâncias de banco de dados do ](Concepts.DBInstanceClass.md). 

A lista a seguir das classes de instância de banco de dados compatíveis para o Microsoft SQL Server é fornecida aqui para sua comodidade. Para obter a lista mais atual, consulte o console do RDS:[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

Nem todas as classes de instâncias de banco de dados estão disponíveis em todas as versões secundárias do SQL Server compatíveis. Por exemplo, algumas classes de instância de banco de dados mais recentes, como db.r6i, não estão disponíveis em versões secundárias mais antigas. Você pode usar o comando [describe-orderable-db-instance-options](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/rds/describe-orderable-db-instance-options.html) da AWS CLI para descobrir quais classes de instância de banco de dados estão disponíveis para a sua edição e versão do SQL Server.


****  

| Edição do SQL Server | Faixa de suporte para 2022 | Faixa de suporte para 2019 | Faixa de suporte para 2017 e 2016 | 
| --- | --- | --- | --- | 
|  Edição Enterprise  | `db.t3.xlarge`–`db.t3.2xlarge``db.r5.xlarge`–`db.r5.24xlarge``db.r5b.xlarge`–`db.r5b.24xlarge``db.r5d.xlarge`–`db.r5d.24xlarge``db.r6i.xlarge`–`db.r6i.32xlarge`db.r7i.xlarge–db.r7i.48xlarge`db.m5.xlarge`–`db.m5.24xlarge``db.m5d.xlarge`–`db.m5d.24xlarge``db.m6i.xlarge`–`db.m6i.32xlarge``db.m7i.xlarge`–`db.m7i.48xlarge``db.x2iedn.xlarge`–`db.x2iedn.32xlarge``db.z1d.xlarge`–`db.z1d.12xlarge` |  `db.t3.xlarge`–`db.t3.2xlarge` `db.r5.xlarge`–`db.r5.24xlarge` `db.r5b.xlarge`–`db.r5b.24xlarge` `db.r5d.xlarge`–`db.r5d.24xlarge` `db.r6i.xlarge`–`db.r6i.32xlarge` `db.r7i.xlarge`–`db.r7i.48xlarge` `db.m5.xlarge`–`db.m5.24xlarge` `db.m5d.xlarge`–`db.m5d.24xlarge` `db.m6i.xlarge`–`db.m6i.32xlarge` `db.m7i.xlarge`–`db.m7i.48xlarge` `db.x2iedn.xlarge`–`db.x2iedn.32xlarge` `db.z1d.xlarge`–`db.z1d.12xlarge`  |  `db.t3.xlarge`–`db.t3.2xlarge` `db.r5.xlarge`–`db.r5.24xlarge` `db.r5b.xlarge`–`db.r5b.24xlarge` `db.r5d.xlarge`–`db.r5d.24xlarge` `db.r6i.xlarge`–`db.r6i.32xlarge` `db.r7i.xlarge`–`db.r7i.48xlarge` `db.m5.xlarge`–`db.m5.24xlarge` `db.m5d.xlarge`–`db.m5d.24xlarge` `db.m6i.xlarge`–`db.m6i.32xlarge` `db.m7i.xlarge`–`db.m7i.48xlarge` `db.x2iedn.xlarge`–`db.x2iedn.32xlarge` `db.z1d.xlarge`–`db.z1d.12xlarge`  | 
|  Edição Standard  | `db.t3.xlarge`–`db.t3.2xlarge``db.r5.large`–`db.r5.24xlarge``db.r5b.large`–`db.r5b.8xlarge``db.r5d.large`–`db.r5d.24xlarge``db.r6i.large`–`db.r6i.8xlarge`db.r7i.large–db.r7i.12xlarge`db.m5.large`–`db.m5.24xlarge``db.m5d.large`–`db.m5d.24xlarge``db.m6i.large`–`db.m6i.8xlarge``db.m7i.large`–`db.m7i.12xlarge``db.x2iedn.xlarge`–`db.x2iedn.8xlarge``db.z1d.large`–`db.z1d.12xlarge` |  `db.t3.xlarge`–`db.t3.2xlarge` `db.r5.large`–`db.r5.24xlarge` `db.r5b.large`–`db.r5b.24xlarge` `db.r5d.large`–`db.r5d.24xlarge` `db.r6i.large`–`db.r6i.8xlarge` `db.r7i.large`–`db.r7i.12xlarge` `db.m5.large`–`db.m5.24xlarge` `db.m5d.large`–`db.m5d.24xlarge` `db.m6i.large`–`db.m6i.8xlarge` `db.m7i.large`–`db.m7i.12xlarge` `db.x2iedn.xlarge`–`db.x2iedn.32xlarge` `db.z1d.large`–`db.z1d.12xlarge`  | `db.t3.xlarge`–`db.t3.2xlarge``db.r5.large`–`db.r5.24xlarge``db.r5b.large`–`db.r5b.24xlarge``db.r5d.large`–`db.r5d.24xlarge``db.r6i.large`–`db.r6i.8xlarge``db.r7i.large`–`db.r7i.12xlarge``db.m5.large`–`db.m5.24xlarge``db.m5d.large`–`db.m5d.24xlarge``db.m6i.large`–`db.m6i.8xlarge`db.m7i.large–db.m7i.12xlarge`db.x2iedn.xlarge`–`db.x2iedn.32xlarge``db.z1d.large`–`db.z1d.12xlarge` | 
|  Edição Web  | `db.t3.small`–`db.t3.xlarge``db.r5.large`–`db.r5.4xlarge``db.r5b.large`–`db.r5b.4xlarge``db.r5d.large`–`db.r5d.4xlarge`db.r6i.large–db.r6i.4xlarge`db.r7i.large`–`db.r7i.4xlarge``db.m5.large`–`db.m5.4xlarge``db.m5d.large`–`db.m5d.4xlarge``db.m6i.large`–`db.m6i.4xlarge``db.m7i.large`–`db.m7i.4xlarge``db.z1d.large`–`db.z1d.13xlarge` | `db.t3.small`–`db.t3.2xlarge``db.r5.large`–`db.r5.4xlarge``db.r5b.large`–`db.r5b.4xlarge``db.r5d.large`–`db.r5d.4xlarge``db.r6i.large`–`db.r6i.4xlarge`db.r7i.large–db.r7i.4xlarge`db.m5.large`–`db.m5.4xlarge``db.m5d.large`–`db.m5d.4xlarge``db.m6i.large`–`db.m6i.4xlarge`db.m7i.large–db.m7i.4xlarge`db.z1d.large`–`db.z1d.3xlarge` | `db.t3.small`–`db.t3.2xlarge``db.r5.large`–`db.r5.4xlarge``db.r5b.large`–`db.r5b.4xlarge``db.r5d.large`–`db.r5d.4xlarge``db.r6i.large`–`db.r6i.4xlarge`db.r7i.large–db.r7i.4xlarge`db.m5.large`–`db.m5.4xlarge``db.m5d.large`–`db.m5d.4xlarge``db.m6i.large`–`db.m6i.4xlarge`db.m7i.large–db.m7i.4xlarge`db.z1d.large`–`db.z1d.3xlarge` | 
|  Edição Express  |  `db.t3.micro`–`db.t3.xlarge`  |  `db.t3.micro`–`db.t3.xlarge`  |  `db.t3.micro`–`db.t3.xlarge`  | 
| Developer Edition | `db.m6i.xlarge`–`db.m6i.32xlarge``db.r6i.xlarge`–`db.r6i.32xlarge` |  |  | 

**nota**  
 A partir da classe de instância da 7ª geração, o hyper-threading está desabilitado no RDS SQL Server para instâncias de tamanho 2xlarge ou superior. Isso faz com que o número total de vCPUs disponíveis seja metade do aceito pela [instância do EC2 correspondente](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cpu-options-supported-instances-values.html). Por exemplo, o tipo de instância do EC2, `m7i.2xlarge` por padrão, comporta quatro núcleos e dois threadsPerCore, gerando um total de oito vCPUs. Por outro lado, a instância `db.m7i.2xlarge` do RDS para SQL Server, com o hyper-threading desabilitado, gera quatro núcleos e um threadsPerCore, em geral, quatro vCPUs.
A partir das instâncias da 7ª geração, sua conta exibe uma análise detalhada das taxas de licenciamento de terceiros e da instância de banco de dados do RDS. Para acessar mais detalhes, consulte [Definição de preço do RDS SQL Server](https://aws.amazon.com/rds/sqlserver/pricing/).

# Otimizar CPUs para instâncias com licença incluída do RDS para SQL Server
<a name="SQLServer.Concepts.General.OptimizeCPU"></a>

Com o RDS para SQL Server, você pode usar o recurso Otimizar a CPU especificando os recursos do processador para configurar a contagem de vCPU em sua instância de banco de dados, mantendo a mesma memória e IOPS. Você pode atingir as proporções desejadas de memória para CPU para requisitos específicos de workload do banco de dados e reduzir os custos de licenciamento do sistema operacional Microsoft Windows e do SQL Server, que se baseiam na contagem de vCPUs.

Para especificar o recurso do processador, use os seguintes parâmetros:

```
--processor-features "Name=coreCount,Value=value" \ 
	"Name=threadsPerCore,Value=value"
```
+ **coreCount**: especifique o número de núcleos de CPU para a instância de banco de dados, a fim de otimizar os custos de licenciamento para instâncias de banco de dados. Consulte [Classes de instância de banco de dados compatíveis com Otimizar a CPUSuporte a classes de instância de banco de dados](SQLServer.Concepts.General.OptimizeCPU.Support.md) para encontrar os valores permitidos para a contagem de núcleos para um tipo de instância selecionado.
+ **threadsPerCore**: especifique os encadeamentos por núcleo para definir o número de encadeamentos por núcleo da CPU. Consulte [Classes de instância de banco de dados compatíveis com Otimizar a CPUSuporte a classes de instância de banco de dados](SQLServer.Concepts.General.OptimizeCPU.Support.md) para encontrar os valores permitidos para encadeamentos por núcleo para um tipo de instância selecionado.

Exemplo de comando para criar uma instância do RDS para SQL Server com as configurações de Otimizar a CPU:

```
aws rds create-db-instance \
    --engine sqlserver-ee \
    --engine-version 16.00 \
    --license-model license-included \
    --allocated-storage 300 \
    --master-username myuser \
    --master-user-password xxxxx \
    --no-multi-az \
    --vpc-security-group-ids myvpcsecuritygroup \
    --db-subnet-group-name mydbsubnetgroup \
    --db-instance-identifier my-rds-instance \
    --db-instance-class db.m7i.8xlarge \
    --processor-features "Name=coreCount,Value=8" "Name=threadsPerCore,Value=1"
```

Neste exemplo, você vai criar uma instância `db.m7i.8xlarge` que, por padrão, tem um coreCount de 16. Ao usar o recurso Otimizar a CPU, você opta por uma coreCount de 8, gerando uma contagem efetiva de vCPU de 8.

Se você criar a instância sem o parâmetro `--processor-features`, a contagem de núcleos será definida como 16 e os encadeamentos por núcleo serão definidos como 1 por padrão, gerando uma contagem padrão de vCPU de 16.

Algumas considerações que você deve ter em mente ao especificar os recursos do processador:
+ **Criar**: especifique `coreCount` e `threadsPerCore` para o parâmetro `processor-features` a partir dos valores permitidos. Consulte [Classes de instância de banco de dados compatíveis com Otimizar a CPUSuporte a classes de instância de banco de dados](SQLServer.Concepts.General.OptimizeCPU.Support.md).
+ **Modificar**: ao realizar a modificação de uma classe de instância definida com as configurações de Otimizar a CPU para outra que aceite as configurações desse recurso, você deve especificar as configurações padrão do processador usando o parâmetro `--use-default-processor-features` ou definir explicitamente as opções durante a solicitação de modificação.
**nota**  
Alterar a contagem de vCPUs pode ter implicações no custo da taxa de licenciamento associada à instância de banco de dados.
+ **Restauração de snapshot**: ao restaurar um snapshot para o mesmo tipo de instância que o da origem, a instância de banco de dados restaurada herda as configurações de CPU do recurso Otimizar a CPU do snapshot. Se estiver restaurando para um tipo de instância diferente, você precisará definir as configurações do recurso Otimizar a CPU para a instância de destino ou especificar o parâmetro `--use-default-processor-features`.
+ **Restauração pontual**: a restauração pontual (PITR) envolve a restauração de um snapshot específico com base no horário designado para a PITR e, posteriormente, a aplicação de todos os backups de logs transacionais a esse snapshot, levando a instância ao momento especificado. Para PITR, as configurações de Otimizar a CPU, `coreCount` e `threadsPerCore`, são derivadas do snapshot de origem (não da restauração pontual), a menos que valores personalizados sejam especificados durante a solicitação PITR. Se o snapshot de origem usado estiver habilitado com as configurações de Otimizar a CPU e você estiver usando um tipo de instância diferente para PITR, deverá definir as configurações de Otimizar a CPU para a instância de destino ou especificar o parâmetro `—-use-default-processor-features`.

## Limitações
<a name="SQLServer.Concepts.General.OptimizeCPU.Limitations"></a>

Quando você usa o recurso Otimizar a CPU, as seguintes limitações se aplicam:
+ O recurso Otimizar a CPU é compatível somente com edições Enterprise, Standard e Web.
+ O recurso Otimizar a CPU está disponível em instâncias selecionadas. Consulte [Classes de instância de banco de dados compatíveis com Otimizar a CPUSuporte a classes de instância de banco de dados](SQLServer.Concepts.General.OptimizeCPU.Support.md).
+ A personalização do número de núcleos de CPU é aceita em tamanhos de instância de `2xlarge` ou superiores. Com esses tipos de instância, o número mínimo de vCPCU compatível com o Otimizar a CPU é 4.
+ O recurso Otimizar a CPU permite apenas um encadeamento por núcleo, já que o Hyper-Threading está desabilitado para instâncias a partir da 7ª geração que comportam o recurso Otimizar a CPU.

# Classes de instância de banco de dados compatíveis com Otimizar a CPU
<a name="SQLServer.Concepts.General.OptimizeCPU.Support"></a>

O RDS para SQL Server comporta Otimizar a CPU começando com o tipo de classe de instância da 7ª geração. Além disso, o RDS fornece uma análise detalhada do faturamento das taxas de licenciamento da instância de banco de dados do RDS e de terceiros, a partir do tipo de classe de instância da 7ª geração, independentemente de o recurso Otimizar a CPU estar habilitado.

O RDS para SQL Server comporta a opção Otimizar a CPU em tamanhos de instância específicos, sendo `2xlarge` o menor tamanho de instância aceito. A configuração mínima aceita é de 4 vCPUs. A tabela abaixo descreve as classes de instância de banco de dados que comportam a opção Otimizar a CPU, incluindo seus valores padrão e válidos para núcleos de CPU, encadeamentos de CPU por núcleo e vCPUs: 


**Instâncias de uso geral**  

| Tipo de instância | vCPUs padrão | Núcleos de CPU padrão | Núcleos de CPU válidos | Threads válidos por núcleo | 
| --- | --- | --- | --- | --- | 
| `m7i.large` | 2 | 1 | 1 | 2 | 
| `m7i.xlarge` | 4 | 2 | 2 | 2 | 
| `m7i.2xlarge` | 4 | 4 | 1, 2, 3, 4 | 1 | 
| `m7i.4xlarge` | 8 | 8 | 1, 2, 3, 4, 5, 6, 7, 8 | 1 | 
| `m7i.8xlarge` | 16 | 16 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 | 1 | 
| `m7i.12xlarge` | 24 | 24 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 | 1 | 
| `m7i.16xlarge` | 32 | 32 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 | 1 | 


**Instâncias otimizadas para memória**  

| Tipo de instância | vCPUs padrão | Núcleos de CPU padrão | Núcleos de CPU válidos | Threads válidos por núcleo | 
| --- | --- | --- | --- | --- | 
| `r7i.large` | 2 | 1 | 1 | 2 | 
| `r7i.xlarge` | 4 | 2 | 2 | 2 | 
| `r7i.2xlarge` | 4 | 4 | 1, 2, 3, 4 | 1 | 
| `r7i.4xlarge` | 8 | 8 | 1, 2, 3, 4, 5, 6, 7, 8 | 1 | 
| `r7i.8xlarge` | 16 | 16 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 | 1 | 
| `r7i.12xlarge` | 24 | 24 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 | 1 | 
| `r7i.16xlarge` | 32 | 32 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 | 1 | 

# Configuração dos núcleos e threads de CPU por núcleo de CPU para uma classe de instância de banco de dados
<a name="SQLServer.Concepts.General.OptimizeCPU.Enabling"></a>

Você pode configurar o número de núcleos e threads de CPU por núcleo para a classe de instância de banco de dados ao executar as seguintes operações:
+ [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md)
+ [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md)
+ [Restaurar uma instância de banco de dados](USER_RestoreFromSnapshot.md)
+ [Restaurar uma instância de banco de dados para um momento especificado no Amazon RDS](USER_PIT.md)

**nota**  
Ao modificar uma instância de banco de dados para configurar o número de núcleos ou de encadeamentos de CPU por núcleo, há uma breve interrupção semelhante a quando você modifica a classe da instância.

Defina os núcleos da CPU usando o Console de gerenciamento da AWS, a AWS CLI ou a API do RDS.

## Console
<a name="SQLServer.Concepts.General.OptimizeCPU.Enabling.CON"></a>

**Como definir os núcleos**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Escolha **Create database (Criar banco de dados)**.

1. Ao definir as opções de **configuração da instância**:

   1. Escolha a opção **Otimizar CPU**.

   1. Defina sua opção de **vCPU** escolhendo o número de núcleos.  
![\[Página de criação do banco de dados ao definir as configurações de OCPU\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/OCPU-screenshot.png)

1. Depois de concluir outras seleções, selecione **Criar banco de dados**.

## AWS CLI
<a name="SQLServer.Concepts.General.OptimizeCPU.Enabling.CLI"></a>

**Como definir os núcleos**

1. Para configurar a opção Otimizar a CPU usando a AWS CLI, inclua a opção `--processor-features` no comando. Especifique o número de núcleos da CPU com `coreCount` e `threadsPerCore` como`1`.

1. Use a seguinte sintaxe:

   ```
   aws rds create-db-instance \
       --engine sqlserver-ee \
       --engine-version 16.00 \
       --license-model license-included \
       --allocated-storage 300 \
       --master-username myuser \
       --master-user-password xxxxx \
       --no-multi-az \
       --vpc-security-group-ids myvpcsecuritygroup \
       --db-subnet-group-name mydbsubnetgroup \
       --db-instance-identifier my-rds-instance \
       --db-instance-class db.m7i.4xlarge \
       --processor-features "Name=coreCount,Value=6" "Name=threadsPerCore,Value=1"
   ```

**Example de visualização dos valores válidos do processador para uma classe de instância de banco de dados**  
Use o comando `describe-orderable-db-instance-options` para mostrar as vCPUs padrão, núcleos e encadeamentos por núcleo. Por exemplo, o resultado do comando a seguir mostra as opções de processador para a classe de instância db.r7i.2xlarge.  

```
aws rds describe-orderable-db-instance-options --engine sqlserver-ee \
--db-instance-class db.r7i.2xlarge

Sample output: 
-------------------------------------------------------------
|            DescribeOrderableDBInstanceOptions             |
+-----------------------------------------------------------+
||               OrderableDBInstanceOptions                ||
|+------------------------------------+--------------------+|
||  DBInstanceClass                   |  db.r7i.2xlarge    ||
||  Engine                            |  sqlserver-ee      ||
||  EngineVersion                     |  13.00.6300.2.v1   ||
||  LicenseModel                      |  license-included  ||
||  MaxIopsPerDbInstance              |                    ||
||  MaxIopsPerGib                     |                    ||
||  MaxStorageSize                    |  64000             ||
||  MinIopsPerDbInstance              |                    ||
||  MinIopsPerGib                     |                    ||
||  MinStorageSize                    |  20                ||
||  MultiAZCapable                    |  True              ||
||  OutpostCapable                    |  False             ||
||  ReadReplicaCapable                |  True              ||
||  StorageType                       |  gp2               ||
||  SupportsClusters                  |  False             ||
||  SupportsDedicatedLogVolume        |  False             ||
||  SupportsEnhancedMonitoring        |  True              ||
||  SupportsGlobalDatabases           |  False             ||
||  SupportsIAMDatabaseAuthentication |  False             ||
||  SupportsIops                      |  False             ||
||  SupportsKerberosAuthentication    |  True              ||
||  SupportsPerformanceInsights       |  True              ||
||  SupportsStorageAutoscaling        |  True              ||
||  SupportsStorageEncryption         |  True              ||
||  SupportsStorageThroughput         |  False             ||
||  Vpc                               |  True              ||
|+------------------------------------+--------------------+|
|||                   AvailabilityZones                   |||
||+-------------------------------------------------------+||
|||                         Name                          |||
||+-------------------------------------------------------+||
|||  us-west-2a                                           |||
|||  us-west-2b                                           |||
|||  us-west-2c                                           |||
||+-------------------------------------------------------+||
|||              AvailableProcessorFeatures               |||
||+-----------------+-----------------+-------------------+||
|||  AllowedValues  |  DefaultValue   |       Name        |||
||+-----------------+-----------------+-------------------+||
|||  1,2,3,4        |  4              |  coreCount        |||
|||  1              |  1              |  threadsPerCore   |||
||+-----------------+-----------------+-------------------+||
```
Além disso, você pode executar os seguintes comandos para informações de processador de classe de instância de banco de dados:  
+ `describe-db-instances`: mostra as informações do processador da instância de banco de dados especificada.
+ `describe-db-snapshots`: mostra as informações do processador da instância de banco de dados especificada.
+ `describe-valid-db-instance-modifications`: mostra as modificações válidas no processador da instância de banco de dados especificada.
Na saída do comando anterior, os valores dos recursos do processador serão `null` se a opção Otimizar a CPU não estiver configurada.

**Example de definição do número de núcleos de CPU de uma instância de banco de dados**  
O exemplo a seguir modifica *mydbinstance* definindo o número de núcleos de CPU para 4 threadsPerCore como 1. Aplique as alterações imediatamente usando `--apply-immediately`. Caso queira aplicar as alterações durante a próxima janela de manutenção programada, omita `--apply-immediately option`.  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --db-instance-class db.r7i.8xlarge \
    --processor-features "Name=coreCount,Value=4" "Name=threadsPerCore,Value=1" \
    --apply-immediately
```

**Example de retorno às configurações de processador padrão de uma instância de banco de dados**  
O exemplo a seguir modifica a *mydbinstance* retornando-a para os valores de processador padrão.  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --db-instance-class db.r7i.8xlarge \
    --use-default-processor-features \
    --apply-immediately
```

# Segurança do Microsoft SQL Server
<a name="SQLServer.Concepts.General.FeatureSupport.UnsupportedRoles"></a>

O mecanismo de banco de dados do Microsoft SQL Server usa segurança baseada na função. O nome de usuário mestre que você usa ao criar uma instância de banco de dados é um login de autenticação do SQL Server que é um membro das funções fixas de servidor `processadmin`, `public` e `setupadmin`.

Qualquer usuário que crie um banco de dados é atribuído à função db\$1owner desse banco de dados e tem todas as permissões no nível do banco de dados, exceto para aquelas usadas para backups. O Amazon RDS gerencia backups para você.

As seguintes funções no nível do servidor não estão disponíveis no Amazon RDS para SQL Server:
+ bulkadmin
+ dbcreator
+ diskadmin
+ securityadmin
+ serveradmin
+ sysadmin

As seguintes permissões no nível do servidor não estão disponíveis em instâncias de banco de dados do RDS for SQL Server:
+ ALTERAR QUALQUER BANCO DE DADOS
+ ALTER ANY EVENT NOTIFICATION
+ ALTER RESOURCES
+ ALTER SETTINGS (você pode usar as operações de API do grupo de parâmetros de banco de dados para modificar os parâmetro; para obter mais informações, consulte [Grupos de parâmetros para Amazon RDS](USER_WorkingWithParamGroups.md)) 
+ AUTHENTICATE SERVER
+ CONTROL\$1SERVER
+ CREATE DDL EVENT NOTIFICATION
+ CREATE ENDPOINT
+ CREATE SERVER ROLE
+ CREATE TRACE EVENT NOTIFICATION
+ DESCARTAR QUALQUER BANCO DE DADOS
+ EXTERNAL ACCESS ASSEMBLY
+ SHUTDOWN (Você pode usar a opção de reinicialização do RDS em vez disso)
+ UNSAFE ASSEMBLY
+ ALTERAR QUALQUER GRUPO DE DISPONIBILIDADE
+ CRIAR QUALQUER GRUPO DE DISPONIBILIDADE

## Suporte do SSL a instâncias de banco de dados do Microsoft SQL Server
<a name="SQLServer.Concepts.General.SSL"></a>

Você pode usar SSL para criptografar conexões entre seus aplicativos e suas instâncias de banco de dados do Amazon RDS executando o Microsoft SQL Server. Você também pode forçar todas as conexões à instância de banco de dados a usarem SSL. Se você forçar as conexões a usarem o SSL, isso acontece de forma transparente para o cliente, e o cliente não precisa fazer nada para usar o SSL. 

O SSL tem suporte em todas as regiões AWS e em todas as edições compatíveis do SQL Server. Para ter mais informações, consulte [Uso do SSL com uma instância de banco de dados do Microsoft SQL Server](SQLServer.Concepts.General.SSL.Using.md). 

# Uso do SSL com uma instância de banco de dados do Microsoft SQL Server
<a name="SQLServer.Concepts.General.SSL.Using"></a>

Você pode usar a Secure Sockets Layer (SSL) para criptografar conexões entre seus aplicativos cliente e suas instâncias de banco de dados do Amazon RDS executando o Microsoft SQL Server. O suporte a SSL está disponível em todas as regiões da AWS para todas as edições compatíveis com o SQL Server. 

Quando você cria uma instância de banco de dados do SQL Server, o Amazon RDS cria um certificado SSL para ela. O certificado SSL inclui o endpoint da instância de banco de dados como o nome comum (CN) do certificado SSL para se proteger contra ataques de falsificação. 

Há 2 maneiras de usar o SSL para se conectar a sua instância de banco de dados do SQL Server: 
+ Forçar o SSL para todas as conexões &endash; isso acontece de forma transparente para o cliente, e o cliente não precisa fazer nada para usar o SSL. 
**nota**  
Ao configurar `1` para `rds.force_ssl` e usar o SSMS versão 19.3, 20.0 e 20.2, verifique o seguinte:  
Ative o **Certificado de servidor confiável** no SSMS.
Importe o certificado no sistema.
+ Criptografar conexões específicas &endash; isso configura uma conexão SSL a partir de um computador cliente específico e você deve trabalhar no cliente para criptografar as conexões. 

Para obter informações sobre o suporte a Transport Layer Security (TLS) para SQL Server, consulte [ TLS 1.2 support for Microsoft SQL Server](https://support.microsoft.com/en-ca/help/3135244/tls-1-2-support-for-microsoft-sql-server).

## Forçar conexões à sua instância de banco de dados para usar o SSL
<a name="SQLServer.Concepts.General.SSL.Forcing"></a>

Você pode forçar todas as conexões à instância de banco de dados a usarem SSL. Se você forçar as conexões a usarem o SSL, isso acontece de forma transparente para o cliente, e o cliente não precisa fazer nada para usar o SSL. 

Se você deseja forçar o SSL, use o parâmetro `rds.force_ssl`. Por padrão, o parâmetro `rds.force_ssl` é definido como `0 (off)`. Defina o `rds.force_ssl` parâmetro como `1 (on)` para forçar as conexões a usarem o SSL. O parâmetro `rds.force_ssl` é estático, por isso, depois de alterar o valor, você deve reiniciar a instância do banco de dados para que a alteração entre em vigor. 

**Para forçar todas as conexões à instância de banco de dados a usarem SSL**

1. Determine o grupo de parâmetros a ser anexado à instância de banco de dados: 

   1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

   1. No canto superior direito do console do Amazon RDS, escolha a região da AWS da instância de banco de dados. 

   1. No painel de navegação, escolha **Databases (Bancos de dados)** e o nome da instância de banco de dados para mostrar os detalhes. 

   1. Escolha a guia **Configuration (Configuração)**. Encontre o **Parameter group** (Grupo de parâmetros) na seção. 

1. Se necessário, crie um novo parameter group. Se sua instância de banco de dados usa o parameter group padrão, você deve criar um novo parameter group. Se sua instância de banco de dados usa um parameter group diferente do padrão, você pode optar por editar o parameter group existente ou criar um novo parameter group. Se você editar um parameter group existente, a alteração afeta todas as instâncias de banco de dados que usam esse parameter group. 

   Para criar um novo parameter group, siga as instruções em [Criar um grupo de parâmetros de banco de dados no Amazon RDS](USER_WorkingWithParamGroups.Creating.md). 

1. Edite seu parameter group novo ou existente para configurar o parâmetro `rds.force_ssl` como `true`. Para editar o parameter group, siga as instruções em [Modificar parâmetros em um grupo de parâmetros de banco de dados no Amazon RDS](USER_WorkingWithParamGroups.Modifying.md). 

1. Se você criou um novo parameter group, modifique sua instância de banco de dados para anexar o novo parameter group. Modifique a configuração **DB Parameter Group (Parameter group de banco de dados)** da instância de banco de dados. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md). 

1. Reinicialize sua instância de banco de dados. Para obter mais informações, consulte [Reinicializar uma instância de banco de dados](USER_RebootInstance.md). 

## Criptografia de conexões específicas
<a name="SQLServer.Concepts.General.SSL.Client"></a>

É possível forçar todas as conexões de sua instância de banco de dados a usar o SSL, ou criptografar conexões somente de computadores cliente específicos. Para usar o SSL de um cliente específico, você deve obter certificados para o computador cliente, certificados de importação no computador cliente, e criptografar as conexões do computador cliente. 

**nota**  
Todas as instâncias do SQL Server criadas após 5 de agosto de 2014 usam o endpoint de instância de banco de dados no campo Common Name (CN) do certificado do SSL. Antes de 5 de agosto de 2014, a verificação de certificado do SSL não estava disponível para instâncias do SQL Server baseadas na VPC. Se você tiver uma instância de banco de dados do SQL Server baseada na VPC que foi criada antes de 5 de agosto de 2014, e você deseja usar a verificação de certificado do SSL e garantir que o endpoint da instância seja incluído como CN para o certificado do SSL dessa instância de banco de dados, então renomeie a instância. Quando você renomeia uma instância de banco de dados, um novo certificado é implantado e a instância é reiniciada para habilitar o novo certificado.

### Obter certificados para computadores cliente
<a name="SQLServer.Concepts.General.SSL.Certificates"></a>

Para criptografar conexões de um computador cliente para uma instância de banco de dados do Amazon RDS executando o Microsoft SQL Server, você precisa de um certificado no seu computador cliente. 

Para obter esse certificado, transfira o certificado para o seu computador cliente. Você pode baixar um certificado raiz que funciona para todas as regiões. Você também pode fazer dowload de um pacote de certificados que contém o certificado raiz antigo e o novo. Além disso, você pode baixar certificados intermediários específicos de região. Para obter mais informações sobre como fazer download de certificados, consulte [Usar SSL/TLS para criptografar uma conexão com uma instância ou um cluster de banco de dados](UsingWithRDS.SSL.md).

Após baixar o certificado apropriado, importe o certificado em seu sistema operacional Microsoft Windows seguindo o procedimento na seção a seguir. 

### Importar certificados em computadores cliente
<a name="SQLServer.Concepts.General.SSL.Importing"></a>

Você pode usar o seguinte procedimento para importar o certificado para o sistema operacional Microsoft Windows no computador cliente. 

**Para importar o certificado no sistema operacional Windows:**

1. No menu **Iniciar**, digite **Run** na caixa de pesquisa e pressione **Enter**. 

1. Na caixa **Abrir**, digite **MMC** e escolha **OK**. 

1. No menu **Arquivo** do console do MMC, escolha **Adicionar/remover snap-in**. 

1. Na caixa de diálogo **Adicionar ou remover snap-ins**, para **Snap-ins disponíveis**, selecione **Certificates** e escolha **Adicionar**. 

1. Na caixa de diálogo **Certificados de snap-in**, selecione **Conta de computador** e, em seguida, **Avançar**. 

1. Na caixa de diálogo **Selecionar computador**, selecione **Concluir**. 

1. Na caixa de diálogo **Adicionar ou remover snap-ins**, selecione **OK**. 

1. No console do MMC, expanda **Certificados**, abra o menu contextual (clique com o botão direito) para **Autoridades de certificação raiz confiáveis**, escolha **Todas as tarefas** e selecione **Importar**. 

1. Na primeira página do Assistente para Importação de Certificados, escolha **Avançar**. 

1. Na segunda página do Assistente para Importação de Certificados, escolha **Procurar**. Na janela de navegação, altere o tipo de arquivo para **Todos os arquivos (\$1.\$1)** pois .pem não é uma extensão de certificado padrão. Encontre o arquivo .pem que você baixou anteriormente. 
**nota**  
Ao se conectar por meio de clientes Windows, como o SQL Server Management Studio (SSMS), recomendamos usar o formato de certificado PKCS \$17 (.p7b) em vez do arquivo global-bundle.pem. O formato .p7b garante que toda a cadeia de certificados, inclusive autoridades de certificação (CAs) raiz e intermediárias, seja importada corretamente para o repositório de certificados do Windows. Isso evita falhas de conexão que podem ocorrer quando a criptografia obrigatória está habilitada, pois as importações .pem podem não instalar a cadeia completa corretamente.

1. Escolha **Abrir** para selecionar o arquivo de certificado, e depois escolha **Avançar**. 

1. Na terceira página do Assistente para Importação de Certificados, escolha **Avançar**. 

1. Na quarta página do Assistente para Importação de Certificados, escolha **Concluir**. É exibida uma caixa de diálogo indicando que a importação foi bem-sucedida. 

1. No console do MMC, expanda **Certificados** e depois **Autoridades de certificação raiz confiáveis**, e escolha **Certificados**. Localize o certificado para confirmar sua existência, conforme mostrado aqui.  
![\[No console do MMC, no painel de navegação, a pasta Certificados é selecionada detalhadamente entre Raiz do Console, Certificados (Computador local) e Autoridade de certificação raiz confiável. Na página principal, selecione o certificado CA necessário.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/rds_sql_ssl_cert.png)

### Criptografar conexões a uma instância de banco de dados do Amazon RDS executando o Microsoft SQL Server
<a name="SQLServer.Concepts.General.SSL.Encrypting"></a>

Após ter importado um certificado no computador cliente, você poderá criptografar conexões de um computador cliente para uma instância de banco de dados do Amazon RDS executando o Microsoft SQL Server. 

Para o SQL Server Management Studio, use o procedimento a seguir. Para obter mais informações sobre o SQL Server Management Studio, consulte [Usar o SQL Server Management Studio](http://msdn.microsoft.com/en-us/library/ms174173.aspx). 

**Para criptografar conexões do SQL Server Management Studio**

1. Inicie o SQL Server Management Studio. 

1. Em **Connect to server**, digite as informações de servidor, o nome de usuário e a senha de login. 

1. Escolha **Options**. 

1. Selecione **Encrypt connection**. 

1. Selecione **Conectar**.

1. Confirme se a sua conexão está criptografada executando a seguinte consulta. Verifique se a consulta retorna `true` para `encrypt_option`. 

   ```
   select ENCRYPT_OPTION from SYS.DM_EXEC_CONNECTIONS where SESSION_ID = @@SPID
   ```

Para qualquer outro cliente de SQL, use o procedimento a seguir. 

**Para criptografar conexões de outros clientes de SQL**

1. Adicione `encrypt=true` à sua string de conexão. Essa string pode estar disponível como uma opção ou como uma propriedade na página de conexão nas ferramentas de GUI. 
**nota**  
Para habilitar a criptografia SSL para clientes que se conectam usando o JDBC, talvez seja necessário adicionar o certificado de SQL do Amazon RDS para a loja de certificados de Java CA (cacerts). Você pode fazer isso usando o utilitário [keytool](http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html). 

1. Confirme se a sua conexão está criptografada executando a seguinte consulta. Verifique se a consulta retorna `true` para `encrypt_option`. 

   ```
   select ENCRYPT_OPTION from SYS.DM_EXEC_CONNECTIONS where SESSION_ID = @@SPID
   ```

# Configurar cifras e protocolos de segurança do SQL Server
<a name="SQLServer.Ciphers"></a>

É possível ativar e desativar determinadas cifras e protocolos de segurança usando parâmetros de banco de dados. Os parâmetros de segurança que podem ser configurados (exceto para TLS versão 1.2) são mostrados na tabela a seguir. 


****  

| Parâmetro de banco de dados | Valores permitidos (padrão em negrito) | Descrição | 
| --- | --- | --- | 
| rds.tls10 | padrão, habilitado, desabilitado | TLS 1.0. | 
| rds.tls11 | padrão, habilitado, desabilitado | TLS 1.1. | 
| rds.tls12 | padrão | TLS 1.2. Não é possível modificar esse valor. | 
| rds.fips | 0, 1 |  Quando você define o parâmetro como 1, o RDS força o uso de módulos compatíveis com o padrão Federal Information Processing Standard (FIPS) 140-2. Para obter mais informações, consulte [Use SQL Server 2016 in FIPS 140-2-compliant mode (Usar o SQL Server 2016 no modo compatível com FIPS 140-2)](https://docs.microsoft.com/en-us/troubleshoot/sql/security/sql-2016-fips-140-2-compliant-mode) na documentação da Microsoft.  | 
| rds.rc4 | padrão, habilitado, desabilitado | Cifra de stream RC4. | 
| rds.diffie-hellman | padrão, habilitado, desabilitado | Criptografia de troca de chaves de Diffie-Hellman. | 
| rds.diffie-hellman-min-key-bit-length | padrão, 1024, 2048, 3072, 4096 | Tamanho mínimo de bits para chaves de Diffie-Hellman. | 
| rds.curve25519 | padrão, habilitado, desabilitado | Cifra de criptografia de curva elíptica Curve25519. Este parâmetro é compatível com todas as versões do mecanismo. | 
| rds.3des168 | padrão, habilitado, desabilitado | Cifra de criptografia de Triplo DES (Triple Data Encryption Standard) com um tamanho de chave de 168 bits. | 

**nota**  
Em relação a versões secundárias do mecanismo após 16.00.4120.1, 15.00.4365.2, 14.00.3465.1, 13.00.6435.1 e 12.00.6449.1, a configuração padrão para os parâmetros de banco de dados `rds.tls10`, `rds.tls11`, `rds.rc4`, `rds.curve25519` e `rds.3des168` é *desabilitado*. Caso contrário, a configuração padrão será *habilitado*.  
Em relação a versões secundárias do mecanismo após 16.00.4120.1, 15.00.4365.2, 14.00.3465.1, 13.00.6435.1 e 12.00.6449.1, a configuração padrão para `rds.diffie-hellman-min-key-bit-length` é 3072. Caso contrário, a configuração padrão será 2048.

Use o seguinte processo para configurar as cifras e os protocolos de segurança:

1. Crie um grupo de parâmetros de banco de dados personalizado.

1. Modifique os parâmetros no grupo de parâmetros.

1. Associe o novo grupo de parâmetros de banco de dados à sua instância de banco de dados.

Para obter mais informações sobre parameter groups de banco de dados, consulte [Grupos de parâmetros para Amazon RDS](USER_WorkingWithParamGroups.md).

## Criar o grupo de parâmetros relacionados à segurança
<a name="CreateParamGroup.Ciphers"></a>

Crie um grupo de parâmetros para parâmetros relacionados à segurança que corresponde à edição e à versão do SQL Server da instância de banco de dados.

### Console
<a name="CreateParamGroup.Ciphers.Console"></a>

O procedimento a seguir cria um grupo de parâmetros para o SQL Server Standard Edition 2016.

**Como criar o grupo de parâmetros**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Parameter groups** (Grupos de parâmetros).

1. Escolha **Create parameter group (Criar parameter group)**.

1. No painel**Create parameter group (Criar parameter group)**, faça o seguinte:

   1. Em **Família de grupos de parâmetros**, escolha **sqlserver-se-13.0**.

   1. Em **Nome do grupo**, insira um identificador para o grupo de parâmetros, como **sqlserver-ciphers-se-13**.

   1. Em **Descrição**, insira **Parameter group for security protocols and ciphers**.

1. Escolha **Criar**.

### CLI
<a name="CreateParamGroup.Ciphers.CLI"></a>

O procedimento a seguir cria um grupo de parâmetros para o SQL Server Standard Edition 2016.

**Como criar o grupo de parâmetros**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds create-db-parameter-group \
      --db-parameter-group-name sqlserver-ciphers-se-13 \
      --db-parameter-group-family "sqlserver-se-13.0" \
      --description "Parameter group for security protocols and ciphers"
  ```

  Para Windows:

  ```
  aws rds create-db-parameter-group ^
      --db-parameter-group-name sqlserver-ciphers-se-13 ^
      --db-parameter-group-family "sqlserver-se-13.0" ^
      --description "Parameter group for security protocols and ciphers"
  ```

## Modificar parâmetros relacionados à segurança
<a name="ModifyParams.Ciphers"></a>

Modifique os parâmetros relacionados à segurança no grupo de parâmetros que corresponde à edição e à versão do SQL Server da instância de banco de dados.

### Console
<a name="ModifyParams.Ciphers.Console"></a>

O procedimento a seguir modifica o grupo de parâmetros que você criou para o SQL Server Standard Edition 2016. Este exemplo desativa o TLS versão 1.0.

**Como modificar o grupo de parâmetros**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, selecione **Parameter groups**.

1. Escolha o grupo de parâmetros, como **sqlserver-ciphers-se-13**.

1. Em **Parâmetros**, filtre a lista de parâmetros para **rds**.

1. Escolha **Edit parameters**.

1. Escolha **rds.tls10**.

1. Em **Valores**, escolha **desativado**.

1. Escolha **Salvar alterações**.

### CLI
<a name="ModifyParams.Ciphers.CLI"></a>

O procedimento a seguir modifica o grupo de parâmetros que você criou para o SQL Server Standard Edition 2016. Este exemplo desativa o TLS versão 1.0.

**Como modificar o grupo de parâmetros**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds modify-db-parameter-group \
      --db-parameter-group-name sqlserver-ciphers-se-13 \
      --parameters "ParameterName='rds.tls10',ParameterValue='disabled',ApplyMethod=pending-reboot"
  ```

  Para Windows:

  ```
  aws rds modify-db-parameter-group ^
      --db-parameter-group-name sqlserver-ciphers-se-13 ^
      --parameters "ParameterName='rds.tls10',ParameterValue='disabled',ApplyMethod=pending-reboot"
  ```

## Associar o grupo de parâmetros relacionados à segurança à sua instância de banco de dados
<a name="AssocParamGroup.Ciphers"></a>

Para associar o grupo de parâmetros à sua instância de banco de dados, use o Console de gerenciamento da AWS ou a AWS CLI.

### Console
<a name="AssocParamGroup.Ciphers.Console"></a>

É possível associar o grupo de parâmetros a uma instância de banco de dados nova ou existente:
+ Para uma nova instância de banco de dados, associe-o ao executar a instância. Para ter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).
+ Para uma instância de banco de dados existente, associe-o modificando a instância. Para ter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).

### CLI
<a name="AssocParamGroup.Ciphers.CLI"></a>

É possível associar o grupo de parâmetros a uma instância de banco de dados nova ou existente.

**Como criar uma instância de banco de dados com o grupo de parâmetros**
+ Especifique o mesmo tipo de mecanismo de banco de dados e a versão principal que você usou ao criar o grupo de parâmetros.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier mydbinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 13.00.5426.0.v1 \
      --allocated-storage 100 \
      --master-user-password secret123 \
      --master-username admin \
      --storage-type gp2 \
      --license-model li \
      --db-parameter-group-name sqlserver-ciphers-se-13
  ```

  Para Windows:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier mydbinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 13.00.5426.0.v1 ^
      --allocated-storage 100 ^
      --master-user-password secret123 ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --db-parameter-group-name sqlserver-ciphers-se-13
  ```
**nota**  
Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.

**Como modificar uma instância de banco de dados e associar o grupo de parâmetros**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier mydbinstance \
      --db-parameter-group-name sqlserver-ciphers-se-13 \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier mydbinstance ^
      --db-parameter-group-name sqlserver-ciphers-se-13 ^
      --apply-immediately
  ```

# Atualizar aplicações para conexão com instâncias de banco de dados Microsoft SQL Server usando novos certificados SSL/TLS
<a name="ssl-certificate-rotation-sqlserver"></a>

Em 13 de janeiro de 2023, o Amazon RDS publicou novos certificados de autoridade de certificação (CA) para se conectar às suas instâncias de banco de dados do RDS via Secure Socket Layer ou Transport Layer Security (SSL/TLS). A seguir, você pode encontrar informações sobre como atualizar seus aplicativos para usar os novos certificados.

Este tópico pode ajudá-lo a determinar se algum aplicativo cliente usa SSL/TLS para conectar-se às suas instâncias de banco de dados. Em caso positivo, examine mais a fundo se esse aplicativo exige verificação de certificado para se conectar. 

**nota**  
Algumas aplicações são configuradas para se conectar a instâncias de banco de dados do SQL Server apenas quando podem verificar com êxito o certificado no servidor.   
Para esses aplicativos, você deve atualizar os repositórios confiáveis de aplicativos cliente para incluir os novos certificados de CA. 

Depois de atualizar seus certificados de CA nos armazenamentos confiáveis do aplicativo cliente, você pode fazer o rodízio dos certificados nas suas instâncias de banco de dados. É altamente recomendável testar esses procedimentos em um ambiente de desenvolvimento ou teste antes de implementá-los em seus ambientes de produção.

Para obter mais informações sobre a mudança de certificados, consulte [Alternar o certificado SSL/TLS](UsingWithRDS.SSL-certificate-rotation.md). Para obter mais informações sobre como fazer download de certificados, consulte [Usar SSL/TLS para criptografar uma conexão com uma instância ou um cluster de banco de dados](UsingWithRDS.SSL.md). Para obter informações sobre o uso de SSL/TLS com instâncias de bancos de dados Microsoft SQL Server, consulte [Uso do SSL com uma instância de banco de dados do Microsoft SQL Server](SQLServer.Concepts.General.SSL.Using.md).

**Topics**
+ [Determinar se alguma aplicação está se conectando à sua instância de banco de dados Microsoft SQL Server usando SSL](#ssl-certificate-rotation-sqlserver.determining-server)
+ [Determinar se um cliente requer verificação de certificado para se conectar](#ssl-certificate-rotation-sqlserver.determining-client)
+ [Atualizar o armazenamento confiável de aplicações](#ssl-certificate-rotation-sqlserver.updating-trust-store)

## Determinar se alguma aplicação está se conectando à sua instância de banco de dados Microsoft SQL Server usando SSL
<a name="ssl-certificate-rotation-sqlserver.determining-server"></a>

Verifique a configuração da instância de banco de dados para obter o valor do parâmetro `rds.force_ssl`. Por padrão, o parâmetro `rds.force_ssl` é definido como 0 (desativado). Se o parâmetro `rds.force_ssl` estiver definido como 1 (ativado), os clientes serão obrigados a usar SSL/TLS para conexões. Para ter mais informações sobre parameter groups, consulte [Grupos de parâmetros para Amazon RDS](USER_WorkingWithParamGroups.md).

Executar a seguinte consulta para obter a opção de criptografia atual para todas as conexões abertas para uma instância de banco de dados. A coluna `ENCRYPT_OPTION` retornará `TRUE` se a conexão estiver criptografada.

```
select SESSION_ID,
    ENCRYPT_OPTION,
    NET_TRANSPORT,
    AUTH_SCHEME
    from SYS.DM_EXEC_CONNECTIONS
```

Essa consulta mostra apenas as conexões atuais. Ela não mostra se os aplicativos que se conectaram e desconectaram no passado usaram SSL.

## Determinar se um cliente requer verificação de certificado para se conectar
<a name="ssl-certificate-rotation-sqlserver.determining-client"></a>

Você pode verificar se diferentes tipos de clientes exigem verificação do certificado para se conectar.

**nota**  
Se você usar conectores diferentes dos listados, consulte a documentação do conector específico para obter informações sobre como ele impõe conexões criptografadas. Para obter mais informações, consulte [Módulos de conexão para bancos de dados Microsoft SQL](https://docs.microsoft.com/en-us/sql/connect/sql-connection-libraries?view=sql-server-ver15), na documentação do Microsoft SQL Server.

### SQL Server Management Studio
<a name="ssl-certificate-rotation-sqlserver.determining-client.management-studio"></a>

Verifique se a criptografia é aplicada para conexões do SQL Server Management Studio:

1. Inicie o SQL Server Management Studio.

1. Em **Connect to server (Conectar-se ao servidor)**, digite as informações de servidor, o nome de usuário e a senha de login.

1. Escolha **Options**.

1. Verifique se **Encrypt connection (Criptografar conexão)** está selecionada na página de conexão.

Para obter mais informações sobre o SQL Server Management Studio, consulte [Usar o SQL Server Management Studio](http://msdn.microsoft.com/en-us/library/ms174173.aspx).

### Sqlcmd
<a name="ssl-certificate-rotation-sqlserver.determining-client.sqlcmd"></a>

Os exemplos a seguir com o cliente `sqlcmd` mostram como verificar uma conexão SQL Server de um script para determinar se conexões bem-sucedidas requerem um certificado válido. Para obter mais informações, consulte [Conectar-se com sqlcmd](https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/connecting-with-sqlcmd?view=sql-server-ver15) na documentação do Microsoft SQL Server.

Ao usar `sqlcmd`, uma conexão SSL exigirá verificação com base no certificado do servidor se você usar o argumento de comando `-N` para criptografar conexões, como no exemplo a seguir.

```
$ sqlcmd -N -S dbinstance.rds.amazon.com -d ExampleDB                     
```

**nota**  
Se `sqlcmd` for chamado com a opção `-C`, ele confiará no certificado do servidor, mesmo que ele não corresponda ao armazenamento confiável no lado do cliente.

### ADO.NET
<a name="ssl-certificate-rotation-sqlserver.determining-client.adonet"></a>

No exemplo a seguir, o aplicativo se conecta usando SSL, e o certificado de servidor deve ser verificado.

```
using SQLC = Microsoft.Data.SqlClient;
 
...
 
    static public void Main()  
    {  
        using (var connection = new SQLC.SqlConnection(
            "Server=tcp:dbinstance.rds.amazon.com;" +
            "Database=ExampleDB;User ID=LOGIN_NAME;" +
            "Password=YOUR_PASSWORD;" + 
            "Encrypt=True;TrustServerCertificate=False;"
            ))
        {  
            connection.Open();  
            ...
        }
```

### Java
<a name="ssl-certificate-rotation-sqlserver.determining-client.java"></a>

No exemplo a seguir, o aplicativo se conecta usando SSL, e o certificado de servidor deve ser verificado.

```
String connectionUrl =   
    "jdbc:sqlserver://dbinstance.rds.amazon.com;" +  
    "databaseName=ExampleDB;integratedSecurity=true;" +  
    "encrypt=true;trustServerCertificate=false";
```

Para habilitar a criptografia SSL para clientes que se conectam usando o JDBC, talvez seja necessário adicionar o certificado do Amazon RDS para a loja de certificados de Java CA. Para obter instruções, consulte o tópico sobre como [Configurar o cliente para criptografia](https://docs.microsoft.com/en-us/SQL/connect/jdbc/configuring-the-client-for-ssl-encryption?view=sql-server-2017), na documentação do Microsoft SQL Server. Você também pode fornecer o nome de arquivo do certificado de CA confiável diretamente, anexando `trustStore=path-to-certificate-trust-store-file` a string de conexão.

**nota**  
Se você usar `TrustServerCertificate=true` (ou equivalente) na string de conexão, o processo de conexão ignorará a validação da cadeia de confiança. Nesse caso, o aplicativo se conecta mesmo que o certificado não possa ser verificado. O uso de `TrustServerCertificate=false` impõe a validação de certificado e é uma prática recomendada.

## Atualizar o armazenamento confiável de aplicações
<a name="ssl-certificate-rotation-sqlserver.updating-trust-store"></a>

Você pode atualizar o armazenamento confiável para aplicativos que usam o Microsoft SQL Server. Para obter instruções, consulte [Criptografia de conexões específicas](SQLServer.Concepts.General.SSL.Using.md#SQLServer.Concepts.General.SSL.Client). Além disso, consulte o tópico sobre como [Configurar o cliente para criptografia](https://docs.microsoft.com/en-us/SQL/connect/jdbc/configuring-the-client-for-ssl-encryption?view=sql-server-2017), na documentação do Microsoft SQL Server.

Se você estiver usando um sistema operacional que não seja o Microsoft Windows, consulte a documentação da distribuição do software para implementação de SSL/TLS para obter informações sobre como adicionar novo certificado de CA raiz. Por exemplo, o OpenSSL e o GnuTLS são opções populares. Use o método de implementação para adicionar confiança ao certificado de CA raiz do RDS. A Microsoft fornece instruções para configurar certificados em alguns sistemas.

Para obter informações sobre como baixar o certificado raiz, consulte [Usar SSL/TLS para criptografar uma conexão com uma instância ou um cluster de banco de dados](UsingWithRDS.SSL.md).

Para obter exemplos de scripts que importam certificados, consulte [Script de exemplo para importar certificados para o seu armazenamento confiável](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-sample-script).

**nota**  
Ao atualizar o armazenamento confiável, é possível reter certificados mais antigos, além de adicionar os novos certificados.

## Suporte ao programa de conformidade de instâncias de banco de dados do Microsoft SQL Server
<a name="SQLServer.Concepts.General.Compliance"></a>

AWSOs serviços da no escopo foram totalmente avaliados por um auditor terceirizado e resultam em uma certificação, declaração de conformidade ou Authority to Operate (ATO, Autoridade para operar). Para obter mais informações, consulte [Serviços da AWS no escopo por programa de conformidade](https://aws.amazon.com/compliance/services-in-scope/).

### Suporte HIPAA para instâncias de banco de dados para o Microsoft SQL Server
<a name="SQLServer.Concepts.General.HIPAA"></a>

Você pode usar bancos de dados do Amazon RDS para Microsoft SQL Server para criar aplicativos em conformidade com a norma HIPAA. É possível armazenar informações relacionadas à saúde, inclusive informações de saúde protegidas (PHI), sob um Acordo de associado comercial (BAA) com AWS. Para obter mais informações, consulte [Conformidade com a HIPAA](https://aws.amazon.com/compliance/hipaa-compliance/).

O Amazon RDS para SQL Server oferece suporte a HIPAA para as seguintes versões e edições:
+ SQL Server 2.022 edições Enterprise, Standard e Web
+ SQL Server 2019 edições Enterprise, Standard e Web
+ SQL Server 2017 edições Enterprise, Standard e Web
+ SQL Server 2016 edições Enterprise, Standard e Web

Para permitir suporte a HIPAA na instância de banco de dados, configure os três componentes a seguir.


****  

| Componente | Detalhes | 
| --- | --- | 
|  Auditoria  |  Para configurar a auditoria, defina o parâmetro `rds.sqlserver_audit` como o valor `fedramp_hipaa`. Se a instância de banco de dados não estiver usando um grupo de parâmetros de banco de dados personalizado, você deverá criar um grupo de parâmetros personalizado e anexá-lo à instância de banco de dados para modificar o parâmetro `rds.sqlserver_audit`. Para obter mais informações, consulte [Grupos de parâmetros para Amazon RDS](USER_WorkingWithParamGroups.md).  | 
|  Criptografia de transporte  |  Para configurar a criptografia de transporte, force todas as conexões para a instância de banco de dados para usar Secure Sockets Layer (SSL). Para obter mais informações, consulte [Forçar conexões à sua instância de banco de dados para usar o SSL](SQLServer.Concepts.General.SSL.Using.md#SQLServer.Concepts.General.SSL.Forcing).  | 
|  Criptografia em repouso  |  Para configurar a criptografia em repouso, você tem duas opções: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html)  | 

# Versões do Microsoft SQL Server no Amazon RDS
<a name="SQLServer.Concepts.General.VersionSupport"></a>

Você pode especificar qualquer versão atualmente com suporte do Microsoft SQL Server ao criar uma nova instância de banco de dados. Você pode especificar a versão principal do Microsoft SQL Server (como o Microsoft SQL Server 14.00) e qualquer versão secundária com suporte para a versão principal especificada. Se nenhuma versão for especificada, o Amazon RDS usará uma versão compatível por padrão, geralmente a versão mais recente. Se uma versão principal for especificada, mas uma versão secundária não, o Amazon RDS usará por padrão um lançamento recente da versão principal que você especificou.

A tabela a seguir mostra as versões compatíveis do SQL Server para todas as edições e todas as regiões da AWS, exceto quando especificado de outra forma. 

**nota**  
Você também pode usar o comando [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) da AWS CLI para ver uma lista de versões compatíveis, bem como padrões para instâncias de banco de dados recém-criadas. Você pode visualizar as versões principais dos bancos de dados do SQL Server executando o comando [describe-db-major-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-major-engine-versions.html) da AWS CLI ou usando a operação [DescribeDBMajorEngineVersions](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBMajorEngineVersions.html) da API do RDS.


| Versão principal | Versão secundária | API do RDS `EngineVersion` e CLI `engine-version` | 
| --- | --- | --- | 
| SQL Server 2022 |  16.00.4236.2 (CU23) 16.00.4230.2 (CU22 GDR) 16.00.4225.2 (CU22) 16.00.4215.2 (CU21) 16.00.4210.1 (CU20 GDR) 16.00.4205.1 (CU20) 16.00.4195.2 (CU19) 16.00.4185.3 (CU18) 16.00.4175.1 (CU17) 16.00.4165.4 (CU16) 16.00.4150.1 (CU15) 16.00.4140.3 (CU14 GDR) 16.00.4135.4 (CU14) 16.00.4131.2 (CU13) 16.00.4125.3 (CU13) 16.00.4120.1 (CU12 GDR) 16.00.4115.5 (CU12) 16.00.4105.2 (CU11) 16.00.4095.4 (CU10) 16.00.4085.2 (CU9)  |  `16.00.4236.2.v1` `16.00.4230.2.v1` `16.00.4225.2.v1` `16.00.4215.2.v1` `16.00.4210.1.v1` `16.00.4205.1.v1` `16.00.4195.2.v1` `16.00.4185.3.v1` `16.00.4175.1.v1` `16.00.4165.4.v1` `16.00.4150.1.v1` `16.00.4140.3.v1` `16.00.4135.4.v1` `16.00.4131.2.v1` `16.00.4125.3.v1` `16.00.4120.1.v1` `16.00.4115.5.v1` `16.00.4105.2.v1` `16.00.4095.4.v1` `16.00.4085.2.v1`  | 
| SQL Server 2019 |  15.00.4455.2 (CU32-GDR) 15.00.4445.1 (CU32-GDR) 15.00.4440.1 (CU32-GDR) 15.00.4435.7 (CU32) 15.00.4430.1 (CU32) 15.00.4420.2 (CU31) 15.00.4415.2 (CU30) 15.00.4410.1 (CU29-GDR) 15.00.4395.2 (CU28) 15.00.4390.2 (CU28) 15.00.4385,2 (CU28) 15.00.4382.1 (CU27) 15.00.4375.4 (CU27) 15.00.4365.2 (CU26) 15.00.4355.3 (CU25) 15.00.4345.5 (CU24) 15.00.4335.1 (CU23) 15.00.4322.2 (CU22) 15.00.4316.3 (CU21) 15.00.4312.2 (CU20) 15.00.4236.7 (CU16) 15.00.4198.2 (CU15) 15.00.4153.1 (CU12) 15.00.4073.23 (CU8) 15.00.4043.16 (CU5)  |  `15.00.4455.2.v1` `15.00.4445.1.v1` `15.00.4440.1.v1` `15.00.4435.7.v1` `15.00.4430.1.v1` `15.00.4420.2.v1` `15.00.4415.2.v1` `15.00.4410.1.v1` `15.00.4395.2.v1` `15.00.4390.2.v1` `15.00.4385.2.v1` `15.00.4382.1.v1` `15.00.4375.4.v1` `15.00.4365.2.v1` `15.00.4355.3.v1` `15.00.4345.5.v1` `15.00.4335.1.v1` `15.00.4322.2.v1` `15.00.4316.3.v1` `15.00.4312.2.v1` `15.00.4236.7.v1` `15.00.4198.2.v1` `15.00.4153.1.v1` `15.00.4073.23.v1` `15.00.4043.16.v1`  | 
| SQL Server 2017 |  14.00.3515.1 (CU31 GDR) 14.00.3505.1 (CU31 GDR) 14.00.3500.1.(CU31 GDR) 14.00.3495.9 (CU31 GDR) 14.00.3485.1 (CU31 GDR) 14.00.3480.1 (CU31) 14.00.3475.1 (CU31) 14.00.3471.2 (CU31) 14.00.3465.1 (CU31) 14.00.3460.9 (CU31) 14.00.3451.2 (CU30) 14.00.3421.10 (CU27) 14.00.3401.7 (CU25) 14.00.3381.3 (CU23) 14.00.3356.20 (CU22) 14.00.3294.2 (CU20) 14.00.3281.6 (CU19)  |  `14.00.3515.1.v1` `14.00.3505.1.v1` `14.00.3500.1.v1` `14.00.3495.9.v1` `14.00.3485.1.v1` `14.00.3480.1.v1` `14.00.3475.1.v1` `14.00.3471.2.v1` `14.00.3465.1.v1` `14.00.3460.9.v1` `14.00.3451.2.v1` `14.00.3421.10.v1` `14.00.3401.7.v1` `14.00.3381.3.v1` `14.00.3356.20.v1` `14.00.3294.2.v1` `14.00.3281.6.v1`  | 
| SQL Server 2016 |  13.00.6475.1 (GDR) 13.00.6470.1 (GDR) 13.00.6465.1 (GDR) 13.00.6460.7 (GDR) 13.00.6455.2 (GDR) 13.00.6450.1 (GDR) 13.00.6445.1 (GDR) 13.00.6441.1 (GDR) 13.00.6435.1 (GDR) 13.00.6430.49 (GDR) 13.00.6419.1 (SP3 \$1 Hotfix) 13.00.6300.2 (SP3)  |  `14.00.6475.1.v1` `14.00.6470.1.v1` `13.00.6465.1.v1` `13.00.6460.7.v1` `13.00.6455.2.v1` `13.00.6450.1.v1` `13.00.6445.1.v1` `13.00.6441.1.v1` `13.00.6435.1.v1` `13.00.6430.49.v1` `13.00.6419.1.v1` `13.00.6300.2.v1`  | 

## Gerenciamento de versão no Amazon RDS
<a name="SQLServer.Concepts.General.Version-Management"></a>

O Amazon RDS inclui gerenciamento de versão flexível que permite controlar quando e como sua instância de banco de dados é corrigida ou atualizada. Isso permite que você faça o seguinte para o seu mecanismo de banco de dados:
+ Mantenha a compatibilidade com versões de patch do mecanismo de banco de dados
+ Teste novas versões de patches para verificar se elas funcionam com o aplicativo antes de implantá-las na produção
+ Planeje e realize atualizações de versão para atender aos contratos de nível de serviço e requisitos de tempo

### Aplicação de patch de mecanismos do Microsoft SQL Server no Amazon RDS
<a name="SQLServer.Concepts.General.Patching"></a>

O Amazon RDS agrega periodicamente patches oficiais do banco de dados do Microsoft SQL Server em uma versão do mecanismo de instância de banco de dados específica para o Amazon RDS. Para obter mais informações sobre os patches do Microsoft SQL Server em cada versão de mecanismo, consulte [Suporte a versões e recursos no Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.FeatureSupport).

No momento, você executa manualmente todas as atualizações de mecanismo em sua instância de banco de dados. Para obter mais informações, consulte [Atualizações do mecanismo de banco de dados do Microsoft SQL Server](USER_UpgradeDBInstance.SQLServer.md). 

### Programação de descontinuação para versões principais do mecanismo do Microsoft SQL Server no Amazon RDS
<a name="SQLServer.Concepts.General.Deprecated-Versions"></a>

A tabela a seguir exibe a programação planejada de reprovações para as principais versões do mecanismo do Microsoft SQL Server.


| Data | Informações | 
| --- | --- | 
| 14 de julho de 2026 |  A Microsoft interromperá as atualizações de patch críticas para o SQL Server 2016. Para obter mais informações, consulte a página [Microsoft SQL Server 2016](https://learn.microsoft.com/en-us/lifecycle/products/sql-server-2016) na documentação da Microsoft.  | 
| 14 de julho de 2026 |  O Amazon RDS planeja encerrar o suporte ao Microsoft SQL Server 2016 no RDS para SQL Server. Na ocasião, todas as instâncias restantes serão agendadas para migrar para o SQL Server 2017 (versão secundária mais recente disponível). Para ter mais informações, consulte [Announcement: Amazon RDS for SQL Server ending support for Microsoft SQL Server 2016](https://repost.aws/articles/ARGkeWligDSU-MQgBwUQj0nA/announcement-amazon-rds-for-sql-server-ending-support-for-microsoft-sql-server-2016). Para evitar upgrade automático para o Microsoft SQL Server 2016, você poderá fazer upgrade no momento que for mais conveniente. Para obter mais informações, consulte [Atualizar a versão de mecanismo de uma instância de banco de dados ](USER_UpgradeDBInstance.Upgrading.md).  | 
| 15 de janeiro de 2026 | O Amazon RDS está começando a desabilitar a criação de instâncias de banco de dados do RDS for SQL Server usando o Microsoft SQL Server 2016. Para ter mais informações, consulte [Announcement: Amazon RDS for SQL Server ending support for Microsoft SQL Server 2016](https://repost.aws/articles/ARGkeWligDSU-MQgBwUQj0nA/announcement-amazon-rds-for-sql-server-ending-support-for-microsoft-sql-server-2016). | 
| 9 de julho de 2024 |  A Microsoft interromperá as atualizações de patch críticas para o SQL Server 2014. Para obter mais informações, consulte a página [Microsoft SQL Server 2014](https://learn.microsoft.com/en-us/lifecycle/products/sql-server-2014) na documentação da Microsoft.  | 
|  1.º de junho de 2024 |  O Amazon RDS planeja encerrar o suporte ao Microsoft SQL Server 2014 no RDS para SQL Server. Na ocasião, todas as instâncias restantes serão agendadas para migrar para o SQL Server 2016 (versão secundária mais recente disponível). Para obter mais informações, consulte [Anúncio: Fim do suporte do Amazon RDS para SQL Server às versões principais do SQL Server 2014](https://repost.aws/articles/AR-eyAH1PSSuevuZRUE9FV3A). Para evitar upgrade automático para o Microsoft SQL Server 2014, você poderá fazer upgrade no momento que for mais conveniente. Para obter mais informações, consulte [Atualizar a versão de mecanismo de uma instância de banco de dados ](USER_UpgradeDBInstance.Upgrading.md).  | 
| 12 de julho de 2022 |  A Microsoft interromperá as atualizações de patch críticas para o SQL Server 2012. Para obter mais informações, consulte a página [Microsoft SQL Server 2012](https://docs.microsoft.com/en-us/lifecycle/products/microsoft-sql-server-2012) na documentação da Microsoft.  | 
| 1º de junho de 2022 |  O Amazon RDS planeja encerrar o suporte ao Microsoft SQL Server 2012 no RDS para SQL Server. Na ocasião, todas as instâncias restantes serão agendadas para migrar para o SQL Server 2014 (versão secundária mais recente disponível). Para obter mais informações, consulte [Anúncio: Fim do suporte do Amazon RDS para SQL Server às versões principais do SQL Server 2012](https://repost.aws/questions/QUFNiETqrMQ_WT_AXSxOYNOA). Para evitar uma atualização automática para o Microsoft SQL Server 2012, você poderá atualizar no momento que for mais conveniente. Para obter mais informações, consulte [Atualizar a versão de mecanismo de uma instância de banco de dados ](USER_UpgradeDBInstance.Upgrading.md).  | 
| 1º de setembro de 2021 | O Amazon RDS está começando a desabilitar a criação de instâncias de banco de dados do RDS for SQL Server usando o Microsoft SQL Server 2012. Para obter mais informações, consulte [Anúncio: Fim do suporte do Amazon RDS para SQL Server às versões principais do SQL Server 2012](https://repost.aws/questions/QUFNiETqrMQ_WT_AXSxOYNOA). | 
| 12 de julho de 2019 |  A equipe do Amazon RDS substituiu o suporte do Microsoft SQL Server 2008 R2 em junho de 2019. As instâncias restantes do Microsoft SQL Server 2008 R2 estão migrando para o SQL Server 2012 (versão secundária mais recente disponível).  Para evitar uma atualização automática para o Microsoft SQL Server 2008 R2, você pode atualizar no momento que for mais conveniente. Para obter mais informações, consulte [Atualizar a versão de mecanismo de uma instância de banco de dados ](USER_UpgradeDBInstance.Upgrading.md).  | 
| 25 de abril de 2019 | Antes do final de abril de 2019, não será mais possível criar novas instâncias de banco de dados do Amazon RDS para SQL Server usando o Microsoft SQL Server 2008R2. | 

# Recursos do Microsoft SQL Server no Amazon RDS
<a name="SQLServer.Concepts.General.FeatureSupport"></a>

As versões compatíveis do SQL Server no Amazon RDS incluem os recursos a seguir. Em geral, uma versão também inclui recursos das versões anteriores, a menos que indicado de outra forma na documentação da Microsoft.

**Topics**
+ [Recursos do Microsoft SQL Server 2022](#SQLServer.Concepts.General.FeatureSupport.2022)
+ [Recursos do Microsoft SQL Server 2019](#SQLServer.Concepts.General.FeatureSupport.2019)
+ [Recursos do Microsoft SQL Server 2017](#SQLServer.Concepts.General.FeatureSupport.2017)
+ [Recursos do Microsoft SQL Server 2016](#SQLServer.Concepts.General.FeatureSupport.2016)
+ [Fim do suporte ao Microsoft SQL Server 2014 no Amazon RDS](#SQLServer.Concepts.General.FeatureSupport.2014)
+ [Fim do suporte ao Microsoft SQL Server 2012 no Amazon RDS](#SQLServer.Concepts.General.FeatureSupport.2012)
+ [Fim do suporte ao Microsoft SQL Server 2008 R2 no Amazon RDS](#SQLServer.Concepts.General.FeatureSupport.2008)
+ [Compatibilidade entre captura de dados de alteração e instâncias de banco de dados do Microsoft SQL Server](SQLServer.Concepts.General.CDC.md)
+ [Recursos não compatíveis e recursos com suporte limitado](SQLServer.Concepts.General.FeatureNonSupport.md)

## Recursos do Microsoft SQL Server 2022
<a name="SQLServer.Concepts.General.FeatureSupport.2022"></a>

O SQL Server 2022 inclui muitos recursos novos, como os seguintes: 
+ Otimização de planos sensíveis a parâmetros: permite vários planos em cache para uma única declaração parametrizada, reduzindo possivelmente os problemas com a detecção de parâmetros.
+ SQL Server Ledger: oferece a capacidade de provar criptograficamente que os dados não foram alterados sem autorização.
+ Inicialização instantânea de arquivos para eventos de crescimento de arquivos de log de transações: ocasiona a execução mais rápida de eventos de crescimento de log de até 64 MB, inclusive para bancos de dados com TDE habilitado.
+ Aprimoramentos na simultaneidade do bloqueio de página do sistema: reduz a contenção por travamento de página ao mesmo tempo em que aloca e desaloca páginas e extensões de dados, proporcionando melhorias significativas de performance para workloads pesadas `tempdb`.

Para ter a lista completa de recursos do SQL Server 2022, consulte [What's new in SQL Server 2022 (16.x)](https://learn.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-server-2022?view=sql-server-ver16) na documentação da Microsoft.

Para conferir uma lista de recursos não compatíveis, consulte [Recursos não compatíveis e recursos com suporte limitado](SQLServer.Concepts.General.FeatureNonSupport.md). 

## Recursos do Microsoft SQL Server 2019
<a name="SQLServer.Concepts.General.FeatureSupport.2019"></a>

O SQL Server 2019 inclui muitos recursos novos, como os seguintes: 
+ Recuperação acelerada de banco de dados (ADR) – reduz o tempo de recuperação de falhas após uma reinicialização ou uma reversão de transação de longa execução.
+ Processamento de consultas inteligente (IQP):
  + Feedback de concessão de memória no modo de linha – corrige automaticamente o excesso de concessões que, de outra forma, resultaria em perda de memória e simultaneidade reduzida.
  + Modo de lote no rowstore – permite a execução do modo de lote para workloads analíticas sem a necessidade de índices columnstore.
  + Compilação adiada de variável de tabela – melhora a qualidade do plano e a performance geral para consultas que fazem referência a variáveis de tabela.
+ Performance inteligente:
  + `OPTIMIZE_FOR_SEQUENTIAL_KEY`Opção de índice – melhora a taxa de transferência para inserções de alta simultaneidade em índices.
  + Maior escalabilidade de pontos de verificação indiretos – ajuda os bancos de dados com workloads DML pesadas.
  + Atualizações simultâneas de espaço livre de página (PFS) – permite o manuseio como uma trava compartilhada em vez de uma trinca exclusiva.
+ Monitorar melhorias:
  + `WAIT_ON_SYNC_STATISTICS_REFRESH`Tipo de espera – mostra o tempo acumulado no nível da instância gasto em operações de atualização de estatísticas síncronas.
  + Configurações com escopo de banco de dados – Incluem `LIGHTWEIGHT_QUERY_PROFILING` e `LAST_QUERY_PLAN_STATS`.
  + Funções de gerenciamento dinâmicas (DMFs) – incluem `sys.dm_exec_query_plan_stats` e `sys.dm_db_page_info`.
+ Avisos de truncamento detalhados – a mensagem de erro de truncamento de dados usa como padrão a inclusão de nomes de tabela e de coluna e o valor truncado.
+ Criação de índice on-line retomável – no SQL Server 2017, há suporte somente à recriação de índice on-line retomável.

Para obter a lista completa de recursos do SQL Server 2019, consulte [Novidades no SQL Server 2019 (15.x)](https://docs.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-server-ver15) na documentação da Microsoft.

Para ver uma lista de recursos não compatíveis, consulte [Recursos não compatíveis e recursos com suporte limitado](SQLServer.Concepts.General.FeatureNonSupport.md). 

## Recursos do Microsoft SQL Server 2017
<a name="SQLServer.Concepts.General.FeatureSupport.2017"></a>

O SQL Server 2017 inclui muitos recursos novos, como os seguintes: 
+ Processamento de consulta adaptável
+ Correção automática do plano (um recurso de ajuste automático)
+ GraphDB
+ Recompilações de índice resumível

Para obter a lista completa de recursos do SQL Server 2017, consulte [Novidades no SQL Server 2017](https://docs.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-server-2017) na documentação da Microsoft.

Para ver uma lista de recursos não compatíveis, consulte [Recursos não compatíveis e recursos com suporte limitado](SQLServer.Concepts.General.FeatureNonSupport.md). 

## Recursos do Microsoft SQL Server 2016
<a name="SQLServer.Concepts.General.FeatureSupport.2016"></a>

O Amazon RDS é compatível com os seguintes recursos do SQL Server 2016:
+ Sempre criptografado
+ Suporte para JSON
+ Análise operacional
+ Armazenamento de consultas
+ Tabelas temporais

Para obter a lista completa de recursos do SQL Server 2016, consulte [Novidades no SQL Server 2016](https://docs.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-server-2016) na documentação da Microsoft.

## Fim do suporte ao Microsoft SQL Server 2014 no Amazon RDS
<a name="SQLServer.Concepts.General.FeatureSupport.2014"></a>

Não há mais suporte ao SQL Server 2014 no Amazon RDS.

O RDS está atualizando todas as instâncias de banco de dados existentes que ainda estão usando o SQL Server 2014 para a versão secundária mais recente do SQL Server 2016. Para obter mais informações, consulte [Gerenciamento de versão no Amazon RDS](SQLServer.Concepts.General.VersionSupport.md#SQLServer.Concepts.General.Version-Management).

## Fim do suporte ao Microsoft SQL Server 2012 no Amazon RDS
<a name="SQLServer.Concepts.General.FeatureSupport.2012"></a>

Não há mais suporte ao SQL Server 2012 no Amazon RDS.

O RDS está atualizando todas as instâncias de banco de dados existentes que ainda estão usando o SQL Server 2012 para a versão secundária mais recente do SQL Server 2016. Para obter mais informações, consulte [Gerenciamento de versão no Amazon RDS](SQLServer.Concepts.General.VersionSupport.md#SQLServer.Concepts.General.Version-Management).

## Fim do suporte ao Microsoft SQL Server 2008 R2 no Amazon RDS
<a name="SQLServer.Concepts.General.FeatureSupport.2008"></a>

Não há mais suporte ao SQL Server 2008 R2 no Amazon RDS.

O RDS está atualizando todas as instâncias de banco de dados existentes que ainda estão usando o SQL Server 2008 R2 para a versão secundária mais recente do SQL Server 2012. Para obter mais informações, consulte [Gerenciamento de versão no Amazon RDS](SQLServer.Concepts.General.VersionSupport.md#SQLServer.Concepts.General.Version-Management).

# Compatibilidade entre captura de dados de alteração e instâncias de banco de dados do Microsoft SQL Server
<a name="SQLServer.Concepts.General.CDC"></a>

O Amazon RDS comporta captura de dados de alteração (CDC) em instâncias de banco de dados que estejam executando o Microsoft SQL Server. A CDC captura alterações feitas nos dados de suas tabelas e armazena metadados sobre cada alteração que podem ser acessados posteriormente. Para obter mais informações, consulte [Captura de dados de alteração](https://docs.microsoft.com/en-us/sql/relational-databases/track-changes/track-data-changes-sql-server#Capture) na documentação da Microsoft. 

O Amazon RDS comporta captura de dados de alteração (CDC) nas seguintes edições e versões do SQL Server:
+ Microsoft SQL Server Enterprise Edition (Todas as versões) 
+ Microsoft SQL Server Standard Edition: 
  + 2022
  + 2019
  + 2017
  + 2016 versão 13.00.4422.0 SP1 CU2 e posterior

Para usar a CDC com instâncias de banco de dados do Amazon RDS, primeiro ative ou desative a CDC no nível de banco de dados usando os procedimentos armazenados fornecidos pelo RDS. Depois disso, qualquer usuário com a função `db_owner` para esse banco de dados pode usar os procedimentos armazenados nativos da Microsoft para controlar a CDC nesse banco de dados. Para obter mais informações, consulte [Usar a captura de dados de alteração para o Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.CDC.md). 

Você pode usar a CDC e o AWS Database Migration Service para ativar a replicação contínua de instâncias de banco de dados do SQL Server. 

# Recursos não compatíveis e recursos com suporte limitado
<a name="SQLServer.Concepts.General.FeatureNonSupport"></a>

Os recursos do Microsoft SQL Server a seguir não são compatíveis com o Amazon RDS: 
+ Fazer backup no armazenamento de Blobs do Microsoft Azure
+ Extensão do grupo de buffer
+ Gerenciar políticas de senha 
+ Data Quality Services
+ Envio de logs de banco de dados
+ Snapshots de banco de dados (o Amazon RDS aceita somente snapshots de instância de banco de dados)
+ Procedimentos armazenados estendidos, incluindo xp\$1cmdshell
+ Suporte a FILESTREAM
+ Tabelas de arquivos
+ Serviços de Machine Learning e R (requer acesso ao SO para instalar)
+ Planos de manutenção
+ Coletor de dados de performance
+ Gerenciamento baseado em políticas
+ PolyBase
+ Replicação
+ Triggers no nível do servidor
+ Endpoints do Service Broker
+ Stretch database
+ Propriedade de banco de dados TRUSTWORTHY (requer a função sysadmin)
+ Endpoints T-SQL (todas as operações que usam CREATE ENDPOINT não estão disponíveis)
+ WCF Data Services

Os seguintes recursos do Microsoft SQL Server têm suporte limitado no Amazon RDS:
+ Consultas distribuídas/servidores vinculados. Para obter mais informações, consulte: [Implement linked servers with Amazon RDS para Microsoft SQL Server (Implementar servidores vinculados com o Amazon RDS para Microsoft SQL Server)](https://aws.amazon.com/blogs/database/implement-linked-servers-with-amazon-rds-for-microsoft-sql-server/).
+ Tempo de execução de linguagem comum (CLR). No RDS for SQL Server 2016 e versões inferiores, há suporte para CLR no modo `SAFE` e usando apenas bits de montagem. Não há suporte para CLR no RDS for SQL Server 2017 e versões posteriores. Para obter mais informações, consulte [Integração de tempo de execução de linguagem comum](https://docs.microsoft.com/en-us/sql/relational-databases/clr-integration/common-language-runtime-integration-overview) na documentação da Microsoft.
+ Servidores vinculados ao Oracle OLEDB no Amazon RDS para SQL Server. Para obter mais informações, consulte [Suporte para servidores vinculados ao Oracle OLEDB no Amazon RDS para SQL Server](Appendix.SQLServer.Options.LinkedServers_Oracle_OLEDB.md).

Os seguintes recursos não são aceitos no Amazon RDS com o SQL Server 2022:
+ Suspender banco de dados para snapshot
+ Fonte de dados externa
+ Backup e restauração para armazenamento de objetos compatível com o S3
+ Integração com armazenamento de objetos
+ TLS 1.3 e MS-TDS 8.0
+ Descarregamento de compactação de backup com QAT
+ SQL Server Analysis Services (SSAS)
+ Espelhamento de banco de dados com implantações multi-AZ. O SQL Server Always On é o único método compatível com implantações multi-AZ.

## Implantações multi-AZ usando o espelhamento de banco de dados ou os grupos de disponibilidade Always On do Microsoft SQL Server
<a name="SQLServer.Concepts.General.Mirroring"></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. As implantações multi-AZ oferecem maior disponibilidade, durabilidade de dados e tolerância a falhas para instâncias de banco de dados. No caso de uma manutenção planejada do banco de dados ou de uma interrupção do serviço não planejada, o Amazon RDS faz failover automático para a réplica secundária atualizada. Dessa maneira, as operações do banco de dados podem ser retomadas rapidamente sem intervenção manual. As instâncias primária e secundária usam o mesmo endpoint, cujo endereço de rede física faz a transição para a réplica secundária passiva como parte do processo de failover. Não é necessário reconfigurar seu aplicativo quando ocorre um failover. 

O Amazon RDS gerencia o failover monitorando ativamente sua implantação multi-AZ e iniciando um failover quando ocorre um problema com o primário. O failover não ocorrerá, a menos que o modo em espera e o primário estejam totalmente sincronizados. O Amazon RDS mantém ativamente a implantação multi-AZ reparando automaticamente instâncias de banco de dados não íntegras e restabelecendo a replicação síncrona. Você não precisa gerenciar tudo. O Amazon RDS processa as instâncias primária, testemunha e em espera para você. Quando você configura o SQL Server multi-AZ, o RDS define instâncias secundárias passivas para todos os bancos de dados na instância. 

Para obter mais informações, consulte [Implantações multi-AZ para o Amazon RDS for Microsoft SQL Server](USER_SQLServerMultiAZ.md). 

## Uso da criptografia de dados transparente para criptografar dados em repouso
<a name="SQLServer.Concepts.General.Options"></a>

O Amazon RDS oferece suporte a criptografia de dados transparente (TDE) do Microsoft SQL Server, que codifica de forma transparente os dados armazenados. O Amazon RDS usa grupos de opções para habilitar e configurar esses recursos. Para mais informações sobre as opções da TDE, consulte [Suporte para criptografia de dados transparente no SQL Server](Appendix.SQLServer.Options.TDE.md). 

# Funções e procedimentos armazenados do Amazon RDS para Microsoft SQL Server
<a name="SQLServer.Concepts.General.StoredProcedures"></a>

A seguir, há uma lista das funções e dos procedimentos armazenados do Amazon RDS que ajudam a automatizar tarefas do SQL Server. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/SQLServer.Concepts.General.StoredProcedures.html)

# Fuso horário local para instâncias de banco de dados do Microsoft SQL Server
<a name="SQLServer.Concepts.General.TimeZone"></a>

O fuso horário de uma instância de banco de dados do Amazon RDS que executa o Microsoft SQL Server é definida por padrão. O padrão atual é Universal Coordinated Time (UTC). Você pode definir o fuso horário de sua instância de banco de dados como um fuso horário local, para combinar o fuso horário de seus aplicativos.

Você define o fuso horário ao criar sua instância de banco de dados. É possível criar a instância de banco de dados usando o [Console de gerenciamento da AWS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html), a ação [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html.html) da API do Amazon RDS ou o comando [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) da AWS CLI.

Se a sua instância de banco de dados fizer parte de uma implantação multi-AZ (usando o recurso DBM ou AG do SQL Server), durante o failover, seu fuso horário permanecerá como o fuso horário local que você configurou. Para obter mais informações, consulte [Implantações multi-AZ usando o espelhamento de banco de dados ou os grupos de disponibilidade Always On do Microsoft SQL Server](CHAP_SQLServer.md#SQLServer.Concepts.General.Mirroring).

Ao solicitar uma restauração point-in-time, especifique a hora da restauração. A hora é mostrada no fuso horário local. Para obter mais informações, consulte [Restaurar uma instância de banco de dados para um momento especificado no Amazon RDS](USER_PIT.md). 

As limitações a seguir se aplicam ao definir o fuso horário local em sua instância de banco de dados:
+ Não é possível modificar o fuso horário de uma instância de banco de dados existente do SQL Server. 
+ Não é possível restaurar um snapshot de uma instância de banco de dados em um fuso horário para uma instância de banco de dados em um fuso horário diferente. 
+ Recomendamos que não restaure um arquivo de backup de um fuso horário em um fuso horário diferente. Se você restaurar um arquivo de backup a partir de um fuso horário para um fuso horário diferente, é preciso auditar as consultas e aplicativos quanto à alteração de fuso horário. Para obter mais informações, consulte [Importar e exportar bancos de dados do SQL Server usando backup e restauração nativos](SQLServer.Procedural.Importing.md). 

## Fusos horários compatíveis
<a name="SQLServer.Concepts.General.TimeZone.Zones"></a>

Você pode definir seu fuso horário local como um dos valores listados na seguinte tabela.


| Fuso horário | Compensação de tempo padrão | Descrição | Observações | 
| --- | --- | --- | --- | 
| Hora Padrão do Afeganistão | (UTC\$104:30) | Kabul | Este fuso horário não observa o horário de verão. | 
| Hora Padrão do Alasca | (UTC–09:00) | Alasca |  | 
| Hora Padrão Aleutiano | (UTC–10:00) | Ilhas Aleutas |  | 
| Hora Padrão de Altai | (UTC\$107:00) | Barnaul, Gorno-Altaysk |  | 
| Hora Padrão Árabe | (UTC\$103:00) | Kuwait, Riade | Este fuso horário não observa o horário de verão. | 
| Hora Padrão da Arábia | (UTC\$104:00) | Abu Dhabi, Muscat |  | 
| Hora Padrão Árabe | (UTC\$103:00) | Bagdá | Este fuso horário não observa o horário de verão. | 
| Hora Padrão da Argentina | (UTC–03:00) | Cidade de Buenos Aires | Este fuso horário não observa o horário de verão. | 
| Hora Padrão de Astracã | (UTC\$104:00) | Astracã, Ulianovsk |  | 
| Hora Padrão do Atlântico | (UTC–04:00) | Horário do Atlântico (Canadá) |  | 
| Hora Padrão Central da Austrália | (UTC\$109:30) | Darwin | Este fuso horário não observa o horário de verão. | 
| Hora Padrão Central da Austrália | (UTC\$1 08:45) | Eucla |  | 
| Hora Padrão do Leste da Austrália | (UTC\$110:00) | Canberra, Melbourne, Sydney |  | 
| Hora Padrão do Azerbaijão | (UTC\$104:00) | Bacu |  | 
| Hora Padrão dos Açores | (UTC–01:00) | Açores |  | 
| Hora Padrão da Bahia | (UTC–03:00) | Salvador |  | 
| Hora Padrão de Bangladesh | (UTC\$106:00) | Daca | Este fuso horário não observa o horário de verão. | 
| Hora Padrão da Bielorrússia | (UTC\$103:00) | Minsk | Este fuso horário não observa o horário de verão. | 
| Fuso hora padrão de Bougainville | (UTC\$111:00) | Ilha de Bougainville |  | 
| Hora Padrão Central do Canadá | (UTC–06:00) | Saskatchewan | Este fuso horário não observa o horário de verão. | 
| Hora Padrão de Cabo Verde | (UTC–01:00) | Ilhas de Cabo Verde | Este fuso horário não observa o horário de verão. | 
| Hora Padrão do Cáucaso | (UTC\$104:00) | Erevan |  | 
| Hora Padrão da Austrália Central | (UTC\$109:30) | Adelaide |  | 
| Hora Padrão da América Central | (UTC–06:00) | América Central | Este fuso horário não observa o horário de verão. | 
| Hora Padrão da Ásia Central | (UTC\$106:00) | Astana | Este fuso horário não observa o horário de verão. | 
| Hora Padrão Central do Brasil | (UTC–04:00) | Cuiabá |  | 
| Hora Padrão Central da Europa | (UTC\$101:00) | Belgrado, Bratislava, Budapeste, Ljubljana, Praga |  | 
| Hora Oficial da Europa Central | (UTC\$101:00) | Sarajevo, Skopje, Varsóvia, Zagreb |  | 
| Hora Padrão Central do Pacífico | (UTC\$111:00) | Ilhas Salomão, Nova Caledônia | Este fuso horário não observa o horário de verão. | 
| Hora Padrão Central | (UTC–06:00) | Horário Central (EUA e Canadá) |  | 
| Hora Padrão Central (México) | (UTC–06:00) | Guadalajara, Cidade do México, Monterrey |  | 
| Fuso horário padrão das Ilhas Chatham | (UTC\$1 12:45) | Ilhas Chatham |  | 
| Hora Padrão da China | (UTC\$108:00) | Pequim, Chongqing, Hong Kong, Urumqi | Este fuso horário não observa o horário de verão. | 
| Hora Padrão de Cuba | (UTC–05:00) | Havana |  | 
| Hora Padrão da Linha de Data | (UTC–12:00) | Linha Internacional de Data Oeste | Este fuso horário não observa o horário de verão. | 
| Horário padrão da África Oriental | (UTC\$103:00) | Nairóbi | Este fuso horário não observa o horário de verão. | 
| Horário padrão da Austrália Oriental | (UTC\$110:00) | Brisbane | Este fuso horário não observa o horário de verão. | 
| Horário padrão da Europa Oriental | (UTC\$102:00) | Chisinau |  | 
| Horário padrão da América do Sul Oriental | (UTC–03:00) | Brasília |  | 
| Hora Padrão da Ilha de Páscoa | (UTC–06:00) | Ilha de Páscoa |  | 
| Hora Oficial do Leste dos EUA | (UTC–05:00) | Hora do Leste (EUA e Canadá) |  | 
| Hora Padrão do Leste (México) | (UTC–05:00) | Chetumal |  | 
| Hora Padrão do Egito | (UTC\$102:00) | Cairo |  | 
| Hora Padrão de Ekaterinburg | (UTC\$1 05:00) | Ekaterinburg |  | 
| Hora Padrão de Fiji | (UTC\$112:00) | Fiji |  | 
| Hora Padrão de FLE | (UTC\$102:00) | Helsinki, Kiev, Riga, Sofia, Talin, Vilnius |  | 
| Hora Oficial da Geórgia | (UTC\$104:00) | Tbilisi | Este fuso horário não observa o horário de verão. | 
| Hora Padrão de Greenwich | (UTC) | Dublin, Edimburgo, Lisboa, Londres |  Esse fuso horário não é igual ao Horário do Meridiano de Greenwich. Esse fuso horário segue o horário de verão. | 
| Hora Oficial da Groenlândia | (UTC–03:00) | Groenlândia |  | 
| Hora Oficial de Greenwich | (UTC) | Monróvia, Reykjavik | Este fuso horário não observa o horário de verão. | 
| Hora Oficial GTB | (UTC\$102:00) | Atenas, Bucareste |  | 
| Hora Padrão do Haiti | (UTC–05:00) | Haiti |  | 
| Hora Oficial do Havaí | (UTC–10:00) | Havaí |  | 
| Hora Oficial da Índia | (UTC\$105:30) | Chennai, Kolkata, Mumbai, Nova Deli | Este fuso horário não observa o horário de verão. | 
| Hora Padrão do Irã | (UTC\$1 03:30) | Teerão |  | 
| Hora Padrão de Israel | (UTC\$102:00) | Jerusalém |  | 
| Hora Padrão da Jordânia | (UTC\$102:00) | Amã |  | 
| Hora Padrão de Kaliningrado | (UTC\$102:00) | Kaliningrado |  | 
| Hora Padrão de Kamchatka | (UTC\$112:00) | Petropavlovsk-Kamchatsky – antigo |  | 
| Hora Padrão da Coreia | (UTC\$109:00) | Seul | Este fuso horário não observa o horário de verão. | 
| Hora Padrão da Líbia | (UTC\$102:00) | Trípoli |  | 
| Hora Padrão das Ilhas Line | (UTC\$1 14:00) | Ilha Kiritimati |  | 
| Hora Padrão de Lord Howe | (UTC\$1 10:30) | Ilha de Lord Howe |  | 
| Hora Padrão de Magadan | (UTC\$111:00) | Magadan | Este fuso horário não observa o horário de verão. | 
| Hora Padrão de Magallanes | (UTC–03:00) | Punta Arenas |  | 
| Hora Padrão do Marquesas | (UTC–09:30) | Ilhas Marquesas |  | 
| Hora Padrão das Ilhas Maurício | (UTC\$104:00) | Port Louis | Este fuso horário não observa o horário de verão. | 
| Hora Padrão do Oriente Médio | (UTC\$102:00) | Beirute |  | 
| Hora Padrão de Montevidéu | (UTC–03:00) | Montevidéu |  | 
| Hora Padrão de Marrocos | (UTC\$101:00) | Casablanca |  | 
| Hora Oficial das Montanhas | (UTC–07:00) | Horário das Montanhas (EUA e Canadá) |  | 
| Hora Oficial das Montanhas (México) | (UTC–07:00) | Chihuahua, La Paz, Mazatlan |  | 
| Hora Padrão de Mianmar | (UTC\$1 06:30) | Rangum (Rangum) | Este fuso horário não observa o horário de verão. | 
| Horário padrão do Norte da Ásia do Central | (UTC\$107:00) | Novosibirsk |  | 
| Hora Padrão da Namíbia | (UTC\$102:00) | Windhoek |  | 
| Hora Padrão do Nepal | (UTC\$1 05:45) | Katmandu | Este fuso horário não observa o horário de verão. | 
| Hora Oficial da Nova Zelândia | (UTC\$112:00) | Auckland, Wellington |  | 
| Hora Oficial de Newfoundland | (UTC–03:30) | Newfoundland |  | 
| Hora Padrão de Norfolk | (UTC\$111:00) | Ilha Norfolk |  | 
| Hora Padrão do Nordeste da Ásia | (UTC\$108:00) | Irkutsk |  | 
| Hora Padrão do Norte da Ásia | (UTC\$107:00) | Krasnoyarsk |  | 
| Hora Padrão da Coreia do Norte | (UTC\$109:00) | Pyongyang |  | 
| Hora Padrão de Omsk | (UTC\$106:00) | Omsk |  | 
| Hora Padrão do Pacífico SA | (UTC–03:00) | Santiago |  | 
| Hora Oficial do Pacífico | (UTC–08:00) | Horário do Pacífico (EUA e Canadá) |  | 
| Hora Padrão Pacífico (México) | (UTC–08:00) | Baixa Califórnia |  | 
| Hora Padrão do Paquistão | (UTC\$1 05:00) | Islamabad | Este fuso horário não observa o horário de verão. | 
| Hora Padrão do Paraguai | (UTC–04:00) | Assunção |  | 
| Hora Padrão de Romance | (UTC\$101:00) | Bruxelas, Copenhagen, Madri, Paris |  | 
| Fuso Horário da Rússia 10 | (UTC\$111:00) | Chokurdakh |  | 
| Fuso Horário da Rússia 11 | (UTC\$112:00) | Anadyr, Petropavlovsk-Kamchatsky |  | 
| Fuso Horário da Rússia 3 | (UTC\$104:00) | Izhevsk, Samara |  | 
| Hora Padrão da Rússia | (UTC\$103:00) | Moscou, São Petersburgo, Volgogrado | Este fuso horário não observa o horário de verão. | 
| Hora Padrão do Leste de SA | (UTC–03:00) | Cayenne, Fortaleza | Este fuso horário não observa o horário de verão. | 
| Hora Padrão do Pacífico na América do Sul | (UTC–05:00) | Bogotá, Lima, Quito, Rio Branco |  Este fuso horário não observa o horário de verão. | 
| Hora Padrão de SA Ocidental | (UTC–04:00) | Georgetown, La Paz, Manaus, San Juan | Este fuso horário não observa o horário de verão. | 
| Hora Padrão de Saint Pierre | (UTC–03:00) | Saint Pierre e Miquelon |  | 
| Hora Padrão de Sacalina | (UTC\$111:00) | Sacalina |  | 
| Hora Padrão de Samoa | (UTC\$1 13:00) | Samoa |  | 
| Hora Padrão de São Tomé | (UTC\$101:00) | São Tomé |  | 
| Hora Padrão de Saratov | (UTC\$104:00) | Saratov |  | 
| Hora Padrão do Sudeste da Ásia | (UTC\$107:00) | Bangkok, Hanoi, Jakarta | Este fuso horário não observa o horário de verão. | 
| Hora Padrão de Cingapura | (UTC\$108:00) | Kuala Lumpur, Cingapura | Este fuso horário não observa o horário de verão. | 
| Hora Padrão da África do Sul | (UTC\$102:00) | Harare, Pretória | Este fuso horário não observa o horário de verão. | 
| Hora Padrão do Sri Lanka | (UTC\$105:30) | Sri Jayawardenepura | Este fuso horário não observa o horário de verão. | 
| Hora Padrão do Sudão | (UTC\$102:00) | Cartum |  | 
| Hora Padrão da Síria | (UTC\$102:00) | Damasco |  | 
| Hora padrão de Taipei | (UTC\$108:00) | Taipei | Este fuso horário não observa o horário de verão. | 
| Hora Padrão da Tasmânia | (UTC\$110:00) | Hobart |  | 
| Hora Padrão do Tocantins | (UTC–03:00) | Araguaina |  | 
| Hora Padrão de Tóquio | (UTC\$109:00) | Osaka, Sapporo, Tóquio | Este fuso horário não observa o horário de verão. | 
| Hora Padrão de Tomsk | (UTC\$107:00) | Tomsk |  | 
| Hora Padrão de Tonga | (UTC\$1 13:00) | Nuku'alofa | Este fuso horário não observa o horário de verão. | 
| Hora Padrão do Transbaikal | (UTC\$109:00) | Chita |  | 
| Hora Padrão da Turquia | (UTC\$103:00) | Istambul |  | 
| Hora Padrão de Turks e Caicos | (UTC–05:00) | Turks e Caicos |  | 
| Hora Padrão de Ulaanbaatar | (UTC\$108:00) | Ulaanbaatar | Este fuso horário não observa o horário de verão. | 
| Hora Padrão do Leste dos EUA | (UTC–05:00) | Indiana (Leste) |  | 
| Hora Oficial das Montanhas (EUA) | (UTC–07:00) | Arizona | Este fuso horário não observa o horário de verão. | 
| UTC | UTC | Tempo Universal Coordenado | Este fuso horário não observa o horário de verão. | 
| UTC–02 | (UTC–02:00) | Tempo Universal Coordenado–02 | Este fuso horário não observa o horário de verão. | 
| UTC–08 | (UTC–08:00) | Tempo Universal Coordenado–08 |  | 
| UTC–09 | (UTC–09:00) | Tempo Universal Coordenado–09 |  | 
| UTC–11 | (UTC–11:00) | Tempo Universal Coordenado–11 | Este fuso horário não observa o horário de verão. | 
| UTC\$112 | (UTC\$112:00) | Tempo Universal Coordenado\$112 | Este fuso horário não observa o horário de verão. | 
| UTC\$113 | (UTC\$1 13:00) | Tempo Universal Coordenado\$113 |  | 
| Hora Padrão da Venezuela | (UTC–04:00) | Caracas | Este fuso horário não observa o horário de verão. | 
| Hora Padrão de Vladivostok | (UTC\$110:00) | Vladivostok |  | 
| Hora Padrão de Volgogrado | (UTC\$104:00) | Volgogrado |  | 
| Horário padrão da Austrália Ocidental Ocidental | (UTC\$108:00) | Perth | Este fuso horário não observa o horário de verão. | 
| Horário padrão da África Central Ocidental | (UTC\$101:00) | Centro-oeste da África | Este fuso horário não observa o horário de verão. | 
| Horário padrão da Europa Ocidental | (UTC\$101:00) | Amsterdã, Berlim, Berna, Roma, Estocolmo, Viena |  | 
| Horário Padrão da Mongólia Ocidental | (UTC\$107:00) | Hovd |  | 
| Hora Padrão do Oeste da Ásia | (UTC\$1 05:00) | Ashgabat, Tashkent | Este fuso horário não observa o horário de verão. | 
| Hora Padrão da Cisjordânia | (UTC\$102:00) | Gaza, Hebron |  | 
| Hora Padrão do Oeste do Pacífico | (UTC\$110:00) | Guam, Porto Moresby | Este fuso horário não observa o horário de verão. | 
| Hora Padrão de Yakutsk | (UTC\$109:00) | Yakutsk |  | 

# Licenciar o Microsoft SQL Server no Amazon RDS
<a name="SQLServer.Concepts.General.Licensing"></a>

Quando você configura uma instância de banco de dados do Amazon RDS para o Microsoft SQL Server, a licença do software é incluída. 

Isso significa que você não precisará adquirir licenças do SQL Server separadamente. A AWS detém a licença para o software de banco de dados SQL Server. O preço do Amazon RDS inclui a licença do software, os recursos de hardware subjacentes e os recursos de gerenciamento do Amazon RDS. 

Amazon RDS oferece suporte às seguintes edições do Microsoft SQL Server: 
+ Enterprise
+ Padrão
+ Web
+ Express

**nota**  
O SQL Server Web Edition foi projetado para provedores de hospedagem e VAPs da Web para hospedar páginas da Web, sites, aplicações e serviços da Web públicos e acessíveis pela Internet. Esse nível de suporte é necessário para garantir a conformidade com os direitos de uso da Microsoft. Para obter mais informações, consulte os [Termos de serviço da AWS](https://aws.amazon.com/serviceterms). 

O Amazon RDS aceita 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 (AGs) e replicação em nível de bloco para o SQL Server Web Edition. Não há requisitos adicionais de licenciamento para implantações Multi-AZ. Para obter mais informações, consulte [Implantações multi-AZ para o Amazon RDS for Microsoft SQL Server](USER_SQLServerMultiAZ.md). 

## Restaurar instâncias de banco de dados com licenças encerradas
<a name="SQLServer.Concepts.General.Licensing.Restoring"></a>

O Amazon RDS faz snapshots de instâncias de banco de dados com licenças encerradas. Se sua instância for encerrada devido a problemas de licenciamento, você poderá restaurá-la a partir do snapshot para uma nova instância de base de dados. As novas instâncias de banco já têm licença inclusa.

Para obter mais informações, consulte [Restaurar instâncias de banco de dados com licenças encerradas no Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.RestoreLTI.md). 

## Desenvolvimento e testes
<a name="SQLServer.Concepts.General.Licensing.Development"></a>

Em cenários de desenvolvimento e teste, é possível usar a Express Edition para desenvolvimento, teste e outras necessidades não relacionadas a produção. Também é possível usar a Developer Edition, que inclui todos os recursos do SQL Server Enterprise Edition, mas é licenciada somente para uso que não seja em produção. O SQL Server Developer Edition pode ser baixado e instalado no RDS para SQL Server. Para ter mais informações, consulte [Trabalhar com o SQL Server Developer Edition no RDS para SQL Server](sqlserver-dev-edition.md) usando uma versão de mecanismo personalizada (CEV) com BYOM (traga sua própria mídia). Você também pode baixar e instalar o SQL Server Developer Edition no RDS Custom para SQL Server usando a mesma abordagem. Para obter mais informações, consulte [Preparar uma CEV usando o modelo BYOM (traga sua própria mídia)](custom-cev-sqlserver.preparing.md#custom-cev-sqlserver.preparing.byom). Para ter mais informações sobre a diferença entre as edições do SQL Server, consulte [Editions and supported features of SQL Server 2019](https://learn.microsoft.com/en-us/sql/sql-server/editions-and-components-of-sql-server-2019?view=sql-server-ver15) na documentação da Microsoft.

# Conectar-se à instância de banco de dados do Microsoft SQL Server
<a name="USER_ConnectToMicrosoftSQLServerInstance"></a>

Depois que o Amazon RDS provisiona a sua instância de banco de dados, você pode usar qualquer aplicativo cliente padrão SQL para se conectar à instância de banco de dados. Neste tópico, você se conecta à sua instância de banco de dados usando o Microsoft SQL Server Management Studio (SSMS) ou o SQL Workbench/J.

Consulte e veja um exemplo do processo de criação e conexão com uma instância de banco de dados de amostr [Criar uma instância de banco de dados do Microsoft SQL Server e conectar-se a ela](CHAP_GettingStarted.CreatingConnecting.SQLServer.md). 

## Antes de se conectar
<a name="sqlserver-before-connect"></a>

Antes que você possa se conectar à sua instância de banco de dados, ela precisa estar disponível e acessível.

1. Certifique-se de que seu status seja `available`. Você pode verificar isso na página de detalhes da instância no Console de gerenciamento da AWS ou usando o comando da AWS CLI [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html).  
![\[Verifique se a instância de banco de dados está disponível\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/sqlserver-available.png)

1. Certifique-se de que esteja acessível à sua origem. Dependendo do seu cenário, talvez não precise ser acessível ao público. Para obter mais informações, consulte [Amazon VPC e Amazon RDS](USER_VPC.md).

1. Certifique-se de que as regras de entrada do grupo de segurança da VPC permitam acesso à sua instância de banco de dados. Para obter mais informações, consulte [Não é possível conectar-se à instância de banco de dados do Amazon RDS](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting).

## Localizando o endpoint e o número da porta da instância de banco de dados
<a name="sqlserver-endpoint"></a>

Você precisará do endpoint e do número da porta para conectar-se à instância de banco de dados.

**Para encontrar o endpoint e a porta**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No canto superior direito do console do Amazon RDS, escolha a região da AWS da instância de banco de dados.

1. Localize o nome (endpoint) do Sistema de Nomes de Domínio (DNS) e o número da porta da instância de banco de dados:

   1. Abra o console do RDS e escolha **Databases (Bancos de dados)** para exibir uma lista das instâncias de banco de dados.

   1. Escolha o nome da instância de banco de dados do SQL Server para exibir os detalhes.

   1. Na guia **Connectivity & security (Conectividade e segurança)**, copie o endpoint.  
![\[Localizar o endpoint e a porta da instância de banco de dados\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/SQL-Connect-Endpoint.png)

   1. Anote o número da porta.

# Conectar-se à sua instância de banco de dados com o Microsoft SQL Server Management Studio
<a name="USER_ConnectToMicrosoftSQLServerInstance.SSMS"></a>

Neste procedimento, você se conecta à instância de banco de dados de exemplo usando o Microsoft SQL Server Management Studio (SSMS). Para fazer download de uma versão autônoma desse utilitário, consulte [Download do SQL Server Management Studio (SSMS)](https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms) na documentação da Microsoft.

**Como se conectar a uma instância de banco de dados usando o SSMS**

1. Inicie o SQL Server Management Studio.

   A caixa de diálogo **Connect to Server (Conectar-se ao servidor)** é exibida.  
![\[Caixa de diálogo de conexão ao servidor\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/RDSMSFTSQLConnect01.png)

1. Forneça as informações da instância de banco de dados:

   1. Para **Server type (Tipo de servidor)**, escolha **Database Engine (Mecanismo do banco de dados)**. 

   1. Em **Server name** (Nome do servidor), digite o nome (endpoint) DNS e o número da porta da instância de banco de dados separados por vírgula. 
**Importante**  
Substitua o caractere de dois-pontos entre o endpoint e o número da porta por uma vírgula. 

      O nome do servidor deve ser semelhante ao seguinte exemplo:

      ```
      database-2.cg034itsfake.us-east-1.rds.amazonaws.com,1433
      ```

   1. Para **Authentication (Autenticação)**, escolha **SQL Server Authentication (Autenticação do SQL Server)**. 

   1. Em **Login**, digite o nome do usuário mestre da instância de banco de dados. 

   1. Em **Password (Senha)**, digite a senha da instância de banco de dados. 

1. Selecione **Conectar**. 

   Depois de alguns momentos, o SSMS conecta-se à sua instância de banco de dados.

   Se não conseguir se conectar à sua instância de banco de dados, consulte [Considerações sobre os grupos de segurança](USER_ConnectToMicrosoftSQLServerInstance.Security.md) e [Solução de problemas de conexões com a instância de banco de dados do SQL Server](USER_ConnectToMicrosoftSQLServerInstance.Troubleshooting.md). 

1. A instância de banco de dados SQL Server vem com bancos de dados de sistema integrados padrão do SQL Server (`master`, `model`, `msdb` e `tempdb`). Para explorar os bancos de dados do sistema, faça o seguinte:

   1. Em SSMS, no menu **View (Exibir)**, escolha **Object Explorer (Navegador de objetos)**.

   1. Expanda a instância de banco de dados, expanda **Bancos de dados** e **Bancos de dados do sistema**.  
![\[Navegador de objetos exibindo os bancos de dados do sistema\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/SQL-SSMS-SystemDBs.png)

1. Sua instância de banco de dados do SQL Server também conta com um banco de dados chamado `rdsadmin`. O Amazon RDS usa esse banco de dados para armazenar os objetos usados para gerenciar o banco de dados. O banco de dados `rdsadmin` também inclui procedimentos armazenados que você pode executar para realizar tarefas avançadas. Para obter mais informações, consulte [Tarefas comuns de DBA no Amazon RDS para Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.md).

1. Agora, você pode começar a criar seus próprios bancos de dados e executar consultas em instâncias de banco de dados e bancos de dados como de costume. Para executar uma consulta de teste na sua instância de banco de dados, faça o seguinte:

   1. No SSMS, no menu **File (Arquivo)**, aponte para **New (Novo)** e escolha **Query with Current Connection (Consultar com a conexão atual)**.

   1. Digite a consulta SQL a seguir.

      ```
      select @@VERSION
      ```

   1. Execute a consulta. O SSMS retorna a versão do SQL Server da sua instância de banco de dados do Amazon RDS.  
![\[Janela da consulta SQL\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/SQL-Connect-Query.png)

# Conectar-se à sua instância de banco de dados com o SQL Workbench/J
<a name="USER_ConnectToMicrosoftSQLServerInstance.JDBC"></a>

Este exemplo mostra como se conectar a uma instância de banco de dados executando o mecanismo de banco de dados do Microsoft SQL Server usando a ferramenta de banco de dados SQL Workbench/J. Para fazer download do SQL Workbench/J, consulte [SQL Workbench/J](http://www.sql-workbench.net/). 

O SQL Workbench/J usa o JDBC para se conectar à sua instância de banco de dados. Você também precisa do driver JDBC para o SQL Server. Para baixar esse driver, acesse [Baixe o Microsoft JDBC Driver para SQL Server](https://learn.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver16). 

**Como conectar-se a uma instância de banco de dados usando o SQL Workbench**

1. Open SQL Workbench/J. A caixa de diálogo **Select Connection Profile** (Selecionar perfil de conexão) é exibida, conforme mostrado a seguir.  
![\[Caixa de diálogo para seleção do perfil de conexão\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/workbench_profile.png)

1. Na primeira caixa na parte superior da caixa de diálogo, insira um nome para o perfil. 

1. Em **Driver**, escolha **SQL JDBC 4.0**. 

1. Em **URL**, digite **jdbc:sqlserver://** e o endpoint da instância de banco de dados. Por exemplo, o valor do URL pode ser este.

   ```
   jdbc:sqlserver://sqlsvr-pdz.abcd12340.us-west-2.rds.amazonaws.com:1433
   ```

1. Em **Username (Nome de usuário)**, digite o nome do usuário mestre da instância de banco de dados. 

1. Em **Password (Senha)**, digite a senha do usuário mestre. 

1. Escolha o ícone de gravação na barra de ferramentas da caixa de diálogo, conforme mostrado a seguir.  
![\[Salvar o perfil\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/save_example.png)

1. Escolha **OK**. Depois de alguns momentos, o SQL Workbench/J conecta-se à sua instância de banco de dados. Se não conseguir se conectar à sua instância de banco de dados, consulte [Considerações sobre os grupos de segurança](USER_ConnectToMicrosoftSQLServerInstance.Security.md) e [Solução de problemas de conexões com a instância de banco de dados do SQL Server](USER_ConnectToMicrosoftSQLServerInstance.Troubleshooting.md). 

1. No painel de consultas, digite a consulta SQL a seguir.

   ```
   select @@VERSION
   ```

1. Escolha o ícone `Execute` na barra de ferramentas, conforme mostrado a seguir.  
![\[Execute a consulta\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/execute_example.png)

   A consulta retorna as informações de versão da instância de banco de dados, semelhante às informações a seguir.

   ```
   Microsoft SQL Server 2017 (RTM-CU22) (KB4577467) - 14.0.3356.20 (X64)
   ```

# Considerações sobre os grupos de segurança
<a name="USER_ConnectToMicrosoftSQLServerInstance.Security"></a>

Para se conectar à sua instância de banco de dados, ela deve estar associada a um grupo de segurança. Esse grupo de segurança contém os endereços IP e a configuração de rede usada para acessar a instância de banco de dados. Talvez você tenha associado sua instância de banco de dados a um grupo de segurança apropriado quando a criou. Se você atribuiu um grupo de segurança padrão não configurado quando criou sua instância de banco de dados, o firewall dessa instância impedirá conexões.

Em alguns casos, talvez seja necessário criar um grupo de segurança para possibilitar o acesso. Para obter instruções sobre como criar um novo security group, consulte [Controlar acesso com grupos de segurança](Overview.RDSSecurityGroups.md). Para obter um tópico que fornece orientação pelo processo de configuração de regras para seu grupo de segurança da VPC, consulte [Tutorial: Criar uma VPC para usar com uma instância de banco de dados (somente IPv4)](CHAP_Tutorials.WebServerDB.CreateVPC.md).

Depois de criar o novo grupo de segurança, modifique sua instância de banco de dados para associá-la a esse grupo de segurança. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md). 

Você pode aprimorar a segurança usando o SSL para criptografar conexões com sua a instância de banco de dados. Para ter mais informações, consulte [Uso do SSL com uma instância de banco de dados do Microsoft SQL Server](SQLServer.Concepts.General.SSL.Using.md). 

# Solução de problemas de conexões com a instância de banco de dados do SQL Server
<a name="USER_ConnectToMicrosoftSQLServerInstance.Troubleshooting"></a>

A tabela a seguir mostra mensagens de erro que você pode encontrar quando tenta se conectar à sua instância de banco de dados do SQL Server.


****  
<a name="rds-sql-server-connection-troubleshooting-guidance"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/USER_ConnectToMicrosoftSQLServerInstance.Troubleshooting.html)

**nota**  
Para ter mais informações sobre problemas de conexão, consulte [Não é possível conectar-se à instância de banco de dados do Amazon RDS](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting).

# Trabalhar com o SQL Server Developer Edition no RDS para SQL Server
<a name="sqlserver-dev-edition"></a>

O RDS para SQL Server comporta o SQL Server Developer Edition. A Developer Edition inclui todos os recursos do SQL Server Enterprise Edition, mas é licenciada somente para uso não produtivo. Você pode criar instâncias do RDS para SQL Server Developer Edition usando sua própria mídia de instalação por meio do recurso de versão personalizada do mecanismo (CEV).

## Benefícios
<a name="sqlserver-dev-edition.benefits"></a>

Você pode usar o RDS para SQL Server Developer Edition para:
+ Reduzir os custos em ambientes de desenvolvimento e teste e, ao mesmo tempo, manter a paridade de recursos com os bancos de dados de produção.
+ Acessar os recursos da Enterprise Edition em ambientes que não sejam de produção sem taxas de licenciamento corporativo.
+ Usar os recursos de gerenciamento automatizado do Amazon RDS, incluindo backups, aplicação de patches e monitoramento.

**nota**  
O SQL Server Developer Edition é licenciado somente para fins de desenvolvimento e teste e não pode ser usado em ambientes de produção.

## Disponibilidade de regiões
<a name="sqlserver-dev-edition.regions"></a>

O RDS para SQL Server Developer Edition está disponível nas seguintes regiões da AWS:
+ Leste dos EUA (Norte da Virgínia)
+ Leste dos EUA (Ohio)
+ Oeste dos EUA (Oregon)
+ Oeste dos EUA (N. da Califórnia)
+ Ásia-Pacífico (Mumbai)
+ Ásia-Pacífico (Seul)
+ Ásia-Pacífico (Singapura)
+ Ásia-Pacífico (Osaka)
+ Ásia-Pacífico (Sydney)
+ Ásia-Pacífico (Tóquio)
+ Europa (Irlanda)
+ Europa (Frankfurt)
+ Europa (Londres)
+ Europa (Estocolmo)
+ Europa (Paris)
+ Canadá (Central)
+ América do Sul (São Paulo)
+ África (Cidade do Cabo)

## Licenciamento e uso
<a name="sqlserver-dev-edition.licensing"></a>

O SQL Server Developer Edition é licenciado pela Microsoft somente para ambientes de desenvolvimento e teste. Você não pode usar a Developer Edition como servidor de produção. Ao usar o SQL Server Developer Edition no Amazon RDS, você é responsável por cumprir os termos de licenciamento do SQL Server Developer Edition da Microsoft. Você paga somente pelos custos de infraestrutura da AWS: não há taxa adicional de licenciamento do SQL Server. Para acessar detalhes sobre preço, consulte [Preço do Amazon RDS para SQL Server](https://aws.amazon.com/rds/sqlserver/pricing/).

## Pré-requisitos
<a name="sqlserver-dev-edition.prerequisites"></a>

Antes de usar o SQL Server Developer Edition no RDS para SQL Server, verifique se você tem os seguintes requisitos:
+ Você deve acessar os binários de instalação diretamente da Microsoft e garantir a conformidade com os respectivos termos de licenciamento.
+ Você deve ter acesso para usar os seguintes recursos a fim de criar uma instância de banco de dados Developer Edition:
  + Conta da AWS com as permissões `AmazonRDSFullAccess` e `s3:GetObject`.
+ Um bucket do Amazon S3 é necessário para armazenar a mídia de instalação. Você precisará de um arquivo ISO e de atualização cumulativa para fazer upload no bucket do Amazon S3 como parte da criação da CEV. Para acessar mais informações, consulte [Fazer upload da mídia de instalação para um bucket do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html).
+ Todos os arquivos de mídia de instalação devem residir no mesmo bucket que o Amazon S3 e no mesmo caminho de pasta dentro desse bucket do Amazon S3 na mesma região em que a versão personalizada do mecanismo foi criada.

### Versões compatíveis
<a name="sqlserver-dev-edition.supported-versions"></a>

A Developer Edition no RDS para SQL Server comporta as seguintes versões:
+ SQL Server 2022 CU 21 (16.00.4215.2)
+ SQL Server 2019 CU 32 GDR (15.00.4455.2)

Para listar todas as versões de mecanismo aceitas para a criação de CEV do Developer Edition, execute o seguinte comando AWS CLI:

```
aws rds describe-db-engine-versions --engine sqlserver-dev-ee --output json --query "{DBEngineVersions: DBEngineVersions[?Status=='requires-custom-engine-version'].{Engine: Engine, EngineVersion: EngineVersion, Status: Status, DBEngineVersionDescription: DBEngineVersionDescription}}"
```

O comando exibirá uma saída semelhante ao seguinte exemplo:

```
{
    "DBEngineVersions": [
        {
            "Engine": "sqlserver-dev-ee",
            "EngineVersion": "16.00.4215.2.v1",
            "Status": "requires-custom-engine-version",
            "DBEngineDescription": "Microsoft SQL Server Enterprise Developer Edition",
            "DBEngineVersionDescription": "SQL Server 2022 16.00.4215.2.v1"
        }
    ]
}
```

O status da versão do mecanismo como `requires_custom_engine_version` identifica as versões do mecanismo de modelo que são aceitas. Esses modelos mostram quais versões do SQL Server você pode importar.

## Limitações
<a name="sqlserver-dev-edition.limitations"></a>

As seguintes limitações se aplicam ao SQL Server Developer Edition no Amazon RDS:
+ Atualmente, só é compatível com as classes de instância M6i e R6i.
+ As implantações multi-AZ e as réplicas de leitura não são aceitas.
+ Você deve fornecer e gerenciar sua própria mídia de instalação do SQL Server.
+ As versões personalizadas do mecanismo para o SQL Server Developer Edition (sqlserver-dev-ee) não podem ser compartilhadas entre regiões ou entre contas.

# Preparar uma CEV para RDS para SQL Server
<a name="sqlserver-dev-edition.preparing"></a>

## Pré-requisitos
<a name="sqlserver-dev-prerequisites"></a>

Antes de criar uma versão personalizada do mecanismo, certifique-se de ter cumprido os seguintes pré-requisitos:

### Preparar a mídia de instalação do SQL Server Developer Edition
<a name="sqlserver-dev-prepare-media"></a>

Você deve ter a mídia de instalação do SQL Server Developer Edition da Microsoft e prepará-la para fazer upload dela para o S3.

**Como baixar a mídia de instalação da Microsoft**

1. **Opção A:** use sua [assinatura do Visual Studio](https://visualstudio.microsoft.com/subscriptions/) para baixar a ISO do Developer Edition. Somente a versão em inglês é aceita.

1. **Opção B: use o instalador do SQL Server**

   1. Baixe o [instalador do SQL Server Developer Edition](https://download.microsoft.com/download/c/c/9/cc9c6797-383c-4b24-8920-dc057c1de9d3/SQL2022-SSEI-Dev.exe).

   1. Execute o instalador e escolha **Baixar mídia** para baixar o ISO completo.

   1. Escolha o **inglês** como idioma preferido.

   1. Escolha **ISO** como o tipo de mídia.

   1. Escolha **Baixar**.

**Como baixar atualizações cumulativas**

1. Acesse a página [Microsoft Catalog Update](https://www.catalog.update.microsoft.com/Home.aspx).

1. Encontre um SQL Server Developer Edition compatível com o RDS para SQL Server, por exemplo, “Atualização cumulativa do SQL Server 2022”.

1. Baixe o arquivo executável CU mais recente aceito e salve-o em sua máquina.

1. Arquivos de exemplo: `SQLServer2022-KB5065865-x64.exe` (CU21 para SQL Server 2022)

**Importante**  
O RDS para SQL Server é compatível somente com versões específicas de atualização cumulativa (CU). É necessário usar a versão exata listada na tabela abaixo. Não use versões mais recentes de CU, mesmo que estejam disponíveis na Microsoft, pois elas podem não ser compatíveis com o RDS.

Também é possível baixar o arquivo de atualização cumulativa (CU) necessário diretamente.

A seguinte tabela lista a versão compatível do SQL Server Developer Edition e a atualização cumulativa correspondente para uso com o RDS:


| Versão do SQL Server | CU compatível | Artigo da base de conhecimento | Nome do arquivo de download | 
| --- | --- | --- | --- | 
|  SQL Server 2022  |  `CU21`  |  [KB5065865](https://learn.microsoft.com/en-us/troubleshoot/sql/releases/sqlserver-2022/cumulativeupdate21)  |  `SQLServer2022-KB5065865-x64.exe`  | 
|  SQL Server 2019  |  `CU32 GDR`  |  [KB5068404](https://support.microsoft.com/en-us/topic/kb5068404-description-of-the-security-update-for-sql-server-2019-cu32-november-11-2025-c203bfbf-036e-46d2-bc10-6c01200dc48a)  |  `SQLServer2019-KB5068404-x64.exe`  | 

# Criar uma versão de mecanismo personalizada para RDS para SQL Server
<a name="sqlserver-dev-edition.creating-cev"></a>

Uma versão de mecanismo personalizada (CEV) para o RDS para SQL Server consiste na mídia de instalação do SQL Server Developer Edition importada para o Amazon RDS. É necessário fazer upload do instalador ISO básico e dos arquivos de atualização cumulativa (.exe) em seu bucket do Amazon S3. Depois de fazer upload, você deve fornecer a localização do Amazon S3 ao RDS para que ele baixe, valide e, posteriormente, crie a CEV.

## Limitações de nomenclatura
<a name="sqlserver-dev-edition.create-cev.naming-limitations"></a>

Ao criar uma CEV, você deve seguir convenções de nomenclatura específicas:
+ O nome da CEV deve seguir o padrão `major-version.minor-version.customized-string`.
+ `customized-string` pode conter de 1 a 50 caracteres alfanuméricos, sublinhados, travessões e pontos. Por exemplo: `16.00.4215.2.my-dev-cev` para SQL Server 2022.

Para listar todas as versões do mecanismo disponíveis, use o seguinte comando:

```
aws rds describe-db-engine-versions --engine sqlserver-dev-ee --output json --query "{DBEngineVersions: DBEngineVersions[?Status=='requires-custom-engine-version'].{Engine: Engine, EngineVersion: EngineVersion, Status: Status, DBEngineVersionDescription: DBEngineVersionDescription}}" 

{
    "DBEngineVersions": [
        {
            "Engine": "sqlserver-dev-ee",
            "EngineVersion": "16.00.4215.2.v1",
            "Status": "requires-custom-engine-version",
            "DBEngineDescription": "Microsoft SQL Server Enterprise Developer Edition",
            "DBEngineVersionDescription": "SQL Server 2022 16.00.4215.2.v1"
        }
    ]
}
```

## AWS CLI
<a name="sqlserver-dev-edition.create-cev.CLI"></a>

**Como criar a versão do mecanismo personalizado**
+ Use o comando [create-custom-db-engine-version](https://docs.aws.amazon.com/cli/latest/reference/rds/create-custom-db-engine-version.html).

  São necessárias as seguintes opções:
  + `--engine`
  + `--engine-version`
  + `--database-installation-files-s3-bucket-name`
  + `--database-installation-files`
  + `--region`

  Também é possível especificar as seguintes opções:
  + `--database-installation-files-s3-prefix`
  + `--description`
  + `--tags`

  ```
  aws rds create-custom-db-engine-version \
  --engine sqlserver-dev-ee \
  --engine-version 16.00.4215.2.cev-dev-ss2022-cu21 \
  --region us-west-2 \
  --database-installation-files-s3-bucket-name my-s3-installation-media-bucket \
  --database-installation-files-s3-prefix sqlserver-dev-media \
  --database-installation-files "SQLServer2022-x64-ENU-Dev.iso" "SQLServer2022-KB5065865-x64.exe"
  ```

A criação da CEV normalmente leva de 15 a 30 minutos. Para monitorar o andamento da criação da CEV, use o seguinte comando:

```
# Check CEV status
aws rds describe-db-engine-versions \
--engine sqlserver-dev-ee \
--engine-version 16.00.4215.2.my-dev-cev \
--region us-west-2
```

## Ciclo de vida de uma CEV do RDS para SQL Server
<a name="sqlserver-dev-cev-lifecycle"></a>

Ao trabalhar com o SQL Server Developer Edition no RDS para SQL Server, suas versões do mecanismo personalizado passam por vários estados do ciclo de vida.


| Estado do ciclo de vida | Descrição | Quando ocorre | Ações disponíveis | 
| --- | --- | --- | --- | 
|  pending-validation  |  Estado inicial quando a CEV é criada.  |  Esse é o estado inicial após a criação com o comando `create-custom-db-engine-version`.  |  Monitorar o status via `describe-db-engine-version`.  | 
|  validar  |  Status da validação da CEV  |  O Amazon RDS está validando a versão personalizada do mecanismo (CEV). Esse processo assíncrono pode levar algum tempo para ser concluído.  |  Monitore o status até que a validação seja concluída.  | 
|  available  |  A validação da versão do mecanismo personalizada (CEV) foi concluída com êxito.  |  A versão personalizada do mecanismo (CEV) já está disponível. O Amazon RDS validou com êxito seus arquivos de atualização cumulativa e ISO do SQL Server. Agora é possível criar instâncias de banco de dados usando essa CEV.  |  Criar instâncias de banco de dados usando essa CEV.  | 
|  falha  |  O RDS para SQL Server não pode criar a versão personalizada do mecanismo (CEV) porque a verificação de validação falhou.  |  Falha na validação de ISO e mídia cumulativa.   |  Falha na validação do ISO. Confira o motivo da falha em `describe-db-engine-version`, corrija qualquer problema de arquivo, como incompatibilidade de hash ou conteúdo corrompido, e recrie sua versão personalizada do mecanismo (CEV).  | 
|  excluindo  |  A versão personalizada do mecanismo (CEV) é excluída  |  Depois que o cliente chama `delete-custom-db-engine-version` até a conclusão do fluxo de trabalho de exclusão.  |  Monitorar o status via `describe-db-engine-version`.  | 
|  incompatible-installation-media  |  O Amazon RDS não conseguiu validar a mídia de instalação fornecida para a versão personalizada do mecanismo (CEV).  |  A validação da versão personalizada do mecanismo (CEV) falhou. Este é um estado terminal.  |  Consulte failureReason via `describe-db-engine-versions` para acessar informações sobre por que a validação falhou; exclua a CEV.  | 

### Descrever o status da CEV.
<a name="sqlserver-dev-cev-status-check"></a>

É possível ver o status das suas CEVs usando o AWS CLI:

```
1. aws rds describe-db-engine-versions \
2. --engine sqlserver-dev-ee \
3. --engine-version 16.00.4215.2.my-dev-cev \
4. --region us-west-2 \
5. --query 'DBEngineVersions[0].{Version:EngineVersion,Status:Status}'
```

Exemplo de resultado

```
| DescribeDBEngineVersions                     |
+------------+---------------------------------+
| Status | Version                             |
+------------+---------------------------------+
| available | 16.00.4215.2.cev-dev-ss2022-cu21    |
+------------+---------------------------------+
```

Quando uma CEV mostra o status `failed`, você pode determinar o motivo usando o seguinte comando:

```
1. aws rds describe-db-engine-versions \
2. --engine sqlserver-dev-ee \
3. --engine-version 16.00.4215.2.my-dev-cev \
4. --region us-west-2 \
5. --query 'DBEngineVersions[0].{Version:EngineVersion,Status:Status,FailureReason:FailureReason}'
```

# Criar uma instância de banco de dados do RDS para SQL Server Developer Edition
<a name="sqlserver-dev-edition.creating-instance"></a>

O lançamento da instância do Developer Edition no RDS para SQL Server segue um processo de duas etapas: primeiro crie uma CEV com `create-custom-db-engine-version`. Quando sua versão personalizada do mecanismo estiver disponível, você poderá criar instâncias de banco de dados do Amazon RDS usando a CEV.

**Principais diferenças na criação de instâncias do Developer Edition**


| Parâmetro | Developer Edition | 
| --- | --- | 
|  `--engine`  |  sqlserver-dev-ee  | 
|  `--engine-version`  |  Versão personalizada do mecanismo (por exemplo, 16.00.4215.2.cev-dev-ss2022-cu21)  | 
|  `--license-model`  |  bring-your-own-license  | 

## AWS CLI
<a name="sqlserver-dev-edition.creating-instance.CLI"></a>

Para criar uma instância de banco de dados do SQL Server Developer Edition, utilize o comando [create-db-instance](https://docs.aws.amazon.com//cli/latest/reference/rds/create-db-instance.html) com os seguintes parâmetros:

São necessárias as seguintes opções:
+ `--db-instance-identifier` 
+ `--db-instance-class` 
+ `--engine` – `sqlserver-dev-ee`
+ `--region`

**Examples:**

Para Linux, macOS ou Unix:

```
aws rds create-db-instance \
--db-instance-identifier my-dev-sqlserver \
--db-instance-class db.m6i.xlarge \
--engine sqlserver-dev-ee \
--engine-version 16.00.4215.2.my-dev-cev \
--allocated-storage 200 \
--master-username admin \
--master-user-password changeThisPassword \
--license-model bring-your-own-license \
--no-multi-az \
--vpc-security-group-ids sg-xxxxxxxxx \
--db-subnet-group-name my-db-subnet-group \
--backup-retention-period 7 \
--region us-west-2
```

Para Windows:

```
aws rds create-db-instance ^
--db-instance-identifier my-dev-sqlserver ^
--db-instance-class db.m6i.xlarge ^
--engine sqlserver-dev-ee ^
--engine-version 16.00.4215.2.cev-dev-ss2022-cu21 ^
--allocated-storage 200 ^
--master-username admin ^
--master-user-password master_user_password ^
--license-model bring-your-own-license ^
--no-multi-az ^
--vpc-security-group-ids sg-xxxxxxxxx ^
--db-subnet-group-name my-db-subnet-group ^
--backup-retention-period 7 ^
--region us-west-2
```

Consulte [Criar uma instância de banco de dados](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html#USER_CreateDBInstance.Creating) para criar usando o console da AWS.

# Aplicar atualizações de versões secundárias do banco de dados
<a name="sqlserver-dev-edition.minor-version-upgrades"></a>

O RDS para SQL Server Developer Edition requer a criação de uma versão de mecanismo personalizada (CEV) com a atualização cumulativa mais recente para aplicar a atualização da versão secundária do banco de dados. As atualizações de versões secundárias do banco de dados para o SQL Server Developer Edition envolvem as seguintes etapas:

1. Antes da atualização, verifique a versão atual do mecanismo na instância e identifique a versão do mecanismo de banco de dados de destino a partir das versões aceitas pelo Amazon RDS. Para obter informações sobre quais versões do SQL Server estão disponíveis no Amazon RDS, consulte [Trabalhar com o SQL Server Developer Edition no RDS para SQL Server](sqlserver-dev-edition.md).

1. Acesse e faça upload da mídia de instalação (ISO e CU) e, depois, [crie uma versão personalizada do mecanismo](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/sqlserver-dev-edition.creating-cev.html).

1. Aplique a atualização da versão secundária do banco de dados usando o Amazon RDS [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) com a nova CEV.

   ```
   aws rds modify-db-instance \
   --db-instance-identifier <instance-id> \
   --engine-version <new-cev-version> \
   --no-apply-immediately ## use --apply-immediately for immediate update
   ```
**nota**  
`--no-apply-immediately` (o padrão) para aplicar as alterações durante a próxima janela de manutenção.

# Visualizar e gerenciar versões personalizadas do mecanismo
<a name="sqlserver-dev-edition.managing"></a>

Para visualizar todas as CEVs do RDS para SQL Server Developer Edition, use o comando `describe-db-engine-versions` com a entrada `--engine` como `sqlserver-dev-ee`.

```
aws rds describe-db-engine-versions \
--engine sqlserver-dev-ee \
--include-all \
--region us-west-2
```

Para visualizar os detalhes de uma CEV específica, utilize o seguinte comando:

```
aws rds describe-db-engine-versions \
--engine sqlserver-dev-ee \
--engine-version 16.00.4215.2.cev-dev-ss2022-cu21 \
--region us-west-2
```

**nota**  
Esse comando exibe somente CEVs com o status `available`. Para ver as CEVs na validação ou em outros estados, inclua o sinalizador `--include-all`.

## Excluir versões personalizadas do mecanismo
<a name="sqlserver-dev-deleting-cevs"></a>

Antes de excluir uma CEV, verifique se ela não está em uso por nenhum dos seguintes procedimentos:
+ Uma instância do banco de dados do Amazon RDS
+ Um snapshot de uma instância de banco de dados do Amazon RDS
+ Um backup automatizado de uma instância de banco de dados do Amazon RDS

**nota**  
Você não poderá excluir uma CEV se houver recursos associados a ela.

Para excluir uma versão personalizada do mecanismo, use o comando [delete-custom-db-engine-version](https://docs.aws.amazon.com//cli/latest/reference/rds/delete-custom-db-engine-version.html).
+ `--engine`: especifique `sqlserver-dev-ee` para Developer Edition.
+ `--engine-version`: o identificador exato da versão da CEV a ser excluída.
+ `--region`: Região da AWS em que a CEV existe.

```
aws rds delete-custom-db-engine-version \
--engine sqlserver-dev-ee \
--engine-version 16.00.4215.2.my-dev-cev \
--region us-west-2
```

Para monitorar o processo de exclusão da CEV, use o comando `describe-db-engine-versions` e especifique sua versão do mecanismo da CEV do RDS para SQL Server.

```
aws rds describe-db-engine-versions \
--engine sqlserver-dev-ee \
--engine-version 16.00.4215.2.my-dev-cev \
--region us-west-2
```

Valores do status:
+ `deleting`: exclusão da CEV em andamento.
+ Nenhum resultado exibido: CEV excluída com êxito.

# Solução de problemas do SQL Server Developer Edition para o RDS para SQL Server
<a name="sqlserver-dev-edition.troubleshooting"></a>

A tabela a seguir lista alguns erros comuns e as soluções correspondentes ao trabalhar com o SQL Server Developer Edition para RDS para SQL Server


**Erros e soluções comuns**  

| Código de erro | Descrição | Solução | 
| --- | --- | --- | 
| InvalidParameterValue | Parâmetros da CEV ou referências de arquivo inválidos | Verificar nomes de arquivos, caminhos e sintaxe de parâmetros | 
| DBSubnetGroupNotFound | O grupo de sub-redes não existe. | Criar um grupo de sub-redes ou verificar o nome | 
| InvalidVPCNetworkState | Problemas de configuração da VPC | Verificar a VPC, as sub-redes e as tabelas de roteamento | 
| InvalidEngineVersion | A CEV não está disponível ou é inválida. | Verificar o status e o nome da CEV | 
| InvalidDBInstanceClass | Classe de instâncias não aceita | Escolher uma classe de instância aceita | 
| CustomDBEngineVersionQuotaExceededFault | Você atingiu o número máximo de versões personalizadas do mecanismo. | Se necessário, aumente a cota de serviço. Como alternativa, exclua as CEVs não utilizadas, se necessário. | 
| CreateCustomDBEngineVersionFault | O Amazon RDS não conseguiu acessar o arquivo do instalador especificado no bucket do Amazon S3. | O Amazon RDS não pode acessar os arquivos de instalação do SQL Server no local especificado do Amazon S3. Conceda à entidade principal do serviço do Amazon RDS (rds.amazonaws.com) a permissão s3:GetObject em sua política de bucket do Amazon S3. Verifique se a região do bucket do Amazon S3 é a mesma região em que você está criando a CEV. | 

# Trabalhar com o Active Directory com o RDS para SQL Server
<a name="User.SQLServer.ActiveDirectoryWindowsAuth"></a>

Você pode unir uma instância de banco de dados do RDS para SQL Server a um domínio do Microsoft Active Directory (AD). Seu domínio AD pode ser hospedado no AD gerenciado pela AWS dentro da AWS ou em um AD autogerenciado em um local de sua escolha, incluindo em seus data centers corporativos, no AWS EC2 ou em outros provedores de nuvem.

Você pode autenticar usuários do domínio utilizando as autenticações NTLM e Kerberos com um Active Directory autogerenciado e AWS Managed Microsoft AD.

Nas seções a seguir, você pode encontrar informações sobre como trabalhar com um Active Directory autogerenciado e com o Active Directory gerenciado pela AWS para Microsoft SQL Server no Amazon RDS.

**Topics**
+ [Trabalhar com um Active Directory autogerenciado com uma instância de banco de dados do Amazon RDS para SQL Server](USER_SQLServer_SelfManagedActiveDirectory.md)
+ [Trabalhar com o AWS Managed Active Directory com o RDS para SQL Server](USER_SQLServerWinAuth.md)

# Trabalhar com um Active Directory autogerenciado com uma instância de banco de dados do Amazon RDS para SQL Server
<a name="USER_SQLServer_SelfManagedActiveDirectory"></a>

O Amazon RDS para SQL Server se integra perfeitamente ao seu domínio Active Directory (AD) autogerenciado, independentemente de onde seu AD esteja hospedado, seja no data center, no Amazon EC2 ou em outros provedores de nuvem. Essa integração permite a autenticação direta do usuário por meio dos protocolos NTLM ou Kerberos, eliminando a necessidade de domínios intermediários complexos ou relacionamentos de confiança na floresta. Quando você se conecta à sua instância de banco de dados do SQL Server do RDS, as solicitações de autenticação são encaminhadas com segurança para seu domínio AD designado, mantendo sua estrutura de gerenciamento de identidade existente e utilizando os recursos de banco de dados gerenciado do Amazon RDS.

**Topics**
+ [Disponibilidade de regiões e versões](#USER_SQLServer_SelfManagedActiveDirectory.RegionVersionAvailability)
+ [Requisitos](USER_SQLServer_SelfManagedActiveDirectory.Requirements.md)
+ [Considerações](#USER_SQLServer_SelfManagedActiveDirectory.Limitations)
+ [Configurar um Active Directory autogerenciado](USER_SQLServer_SelfManagedActiveDirectory.SettingUp.md)
+ [Associar a instância de banco de dados ao Active Directory autogerenciado](USER_SQLServer_SelfManagedActiveDirectory.Joining.md)
+ [Gerenciar uma instância de banco de dados em um domínio de Active Directory autogerenciado](USER_SQLServer_SelfManagedActiveDirectory.Managing.md)
+ [Entender a associação a um domínio de Active Directory autogerenciado](#USER_SQLServer_SelfManagedActiveDirectory.Understanding)
+ [Solução de problemas de Active Directory autogerenciado](USER_SQLServer_SelfManagedActiveDirectory.TroubleshootingSelfManagedActiveDirectory.md)
+ [Restaurar uma instância de banco de dados do SQL Server e adicioná-la a um domínio de Active Directory autogerenciado](#USER_SQLServer_SelfManagedActiveDirectory.Restore)

## Disponibilidade de regiões e versões
<a name="USER_SQLServer_SelfManagedActiveDirectory.RegionVersionAvailability"></a>

O Amazon RDS comporta o AD autogerenciado para SQL Server usando NTLM e Kerberos em todas as Regiões da AWS e AWS GovCloud (US) Regions comerciais.

# Requisitos
<a name="USER_SQLServer_SelfManagedActiveDirectory.Requirements"></a>

Verifique se você atendeu aos seguintes requisitos antes de unir uma instância de banco de dados do RDS para SQL Server ao seu domínio de AD autogerenciado.

**Topics**
+ [Configurar um AD on-premises](#USER_SQLServer_SelfManagedActiveDirectory.Requirements.OnPremConfig)
+ [Configurar sua conectividade de rede](#USER_SQLServer_SelfManagedActiveDirectory.Requirements.NetworkConfig)
+ [Configurar uma conta de serviço do domínio de AD](#USER_SQLServer_SelfManagedActiveDirectory.Requirements.DomainAccountConfig)
+ [Configurar a comunicação segura via LDAPS](#USER_SQLServer_SelfManagedActiveDirectory.Requirements.LDAPS)

## Configurar um AD on-premises
<a name="USER_SQLServer_SelfManagedActiveDirectory.Requirements.OnPremConfig"></a>

Você precisa ter um Microsoft AD on-premises ou autogerenciado ao qual possa associar a instância do Amazon RDS para SQL Server. O AD on-premises deve ter a seguinte configuração:
+ Se você tiver sites do AD definidos, verifique se as sub-redes na VPC associada à sua instância de banco de dados do RDS para SQL Server estão definidas em seu site do AD. Confirme se não há nenhum conflito entre as sub-redes em sua VPC e as sub-redes em seus outros sites do AD.
+ Seu controlador de domínios de AD tem um nível funcional de domínio do Windows Server 2008 R2 ou posterior.
+ Seu nome de domínio de AD não pode estar no formato de domínio de rótulo único (SLD). O RDS para SQL Server não oferece suporte a domínios SLD.
+ O nome de domínio totalmente qualificado (FQDN) do AD não pode exceder 47 caracteres.

## Configurar sua conectividade de rede
<a name="USER_SQLServer_SelfManagedActiveDirectory.Requirements.NetworkConfig"></a>

Você precisa atender às seguintes configurações de rede:
+ Configure a conectividade entre a Amazon VPC na qual deseja criar a instância de banco de dados do RDS para SQL Server e o AD autogerenciado. Você pode configurar a conectividade usando o AWS Direct Connect, o AWS VPN, o emparelhamento de VPC ou o AWS Transit Gateway.
+ Para grupos de segurança de VPC, o grupo de segurança padrão para sua Amazon VPC padrão já está adicionado à sua instância de banco de dados do RDS para SQL Server no console. Verifique se o grupo de segurança e as ACLs de rede da VPC para as sub-redes em que você vai criar a instância de banco de dados do RDS para SQL Server permitem tráfego nas portas e nas direções mostradas no diagrama a seguir.  
![\[Regras de portas para configuração de rede de um AD autogerenciado.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/SQLServer_SelfManagedActiveDirectory_Requirements_NetworkConfig.png)

  A tabela a seguir identifica o perfil de cada porta.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/USER_SQLServer_SelfManagedActiveDirectory.Requirements.html)
+ Em geral, os servidores DNS do domínio estão localizados nos controladores do domínio de AD. Você não precisa configurar o conjunto de opções DHCP da VCP para usar esse atributo. Para obter mais informações, consulte [Conjuntos de opções DHCP](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html) no *Guia do usuário do Amazon VPC*.

**Importante**  
Se você estiver usando ACLs de rede de VPC, também deverá permitir tráfego de saída em portas dinâmicas (49152-65535) da sua instância de banco de dados do RDS para SQL Server. Confira se essas regras de tráfego também são refletidas nos firewalls que se aplicam a cada um dos controladores do domínio de AD, servidores DNS e instâncias de banco de dados do RDS para SQL Server.  
Embora os grupos de segurança de VPC exijam que as portas sejam abertas somente na direção em que o tráfego de rede é iniciado, a maioria dos firewalls do Windows e das ACLs da rede de VPC exigem que as portas sejam abertas nas duas direções.

## Configurar uma conta de serviço do domínio de AD
<a name="USER_SQLServer_SelfManagedActiveDirectory.Requirements.DomainAccountConfig"></a>

Verifique se você atendeu aos seguintes requisitos para uma conta de serviço do domínio de AD:
+ Confira se você tem uma conta de serviço em seu domínio AD autogerenciado com permissões delegadas para associar computadores ao domínio. Uma conta de serviço de domínio é uma conta de usuário em seu AD autogerenciado à qual foi delegada permissão para realizar determinadas tarefas.
+ É necessário delegar à conta de serviço de domínio as seguintes permissões na unidade organizacional (OU) à qual você está associando a instância de banco de dados do RDS para SQL Server:
  + Capacidade validada para gravar no nome do host DNS
  + Capacidade validada para gravar no nome da entidade principal de serviço
  + Criar e excluir objetos de computador

  Essas permissões representam o conjunto mínimo de permissões necessárias para associar objetos de computador ao AD autogerenciado. Para obter mais informações, consulte [Erros ao tentar associar computadores a um domínio](https://learn.microsoft.com/en-US/troubleshoot/windows-server/identity/access-denied-when-joining-computers) na documentação do Microsoft Windows Server.
+ Para usar a autenticação Kerberos, você precisa fornecer nomes de entidades principais de serviço (SPNs) e permissões de DNS à sua conta de serviço de domínio AD:
  + **Gravar SPN**: delegue a permissão **Gravar SPN** à conta de serviço de domínio AD na UO à qual você precisa associar a instância de banco de dados do RDS para SQL Server. Essas permissões são diferentes do SPN de gravação validado.
  + **Permissões de DNS**: forneça as seguintes permissões para a conta de serviço de domínio AD no gerenciador de DNS em nível de servidor para seu controlador de domínio:
    + Listar conteúdo
    + Ler todas as propriedades
    + Permissões de leitura

**Importante**  
Não mova objetos de computador criados pelo RDS para SQL Server na unidade organizacional depois da criação da instância de banco de dados. Mover os objetos associados fará com que sua instância de banco de dados do RDS para SQL Server fique malconfigurada. Se você precisar mover os objetos de computador criados pelo Amazon RDS, use a operação de API [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) do RDS para modificar os parâmetros do domínio com a localização desejada dos objetos de computador.

## Configurar a comunicação segura via LDAPS
<a name="USER_SQLServer_SelfManagedActiveDirectory.Requirements.LDAPS"></a>

A comunicação via LDAPS é recomendada para que o RDS consulte e acesse objetos de computador, bem como SPNs no controlador de domínio. Para usar o LDAP seguro, use um certificado SSL válido em seu controlador de domínio que atenda aos requisitos de LDAPS seguro. Se não existir um certificado SSL válido no controlador de domínio, a instância de banco de dados do RDS para SQL Server usará como padrão o LDAP. Para acessar mais informações sobre a validade do certificado, consulte [Requirements for an LDAPS certificate](https://learn.microsoft.com/en-us/troubleshoot/windows-server/active-directory/enable-ldap-over-ssl-3rd-certification-authority#requirements-for-an-ldaps-certificate).

## Considerações
<a name="USER_SQLServer_SelfManagedActiveDirectory.Limitations"></a>

Ao adicionar uma instância de banco de dados do RDS para SQL Server a um AD autogerenciado, pense no seguinte:
+ Suas instâncias de banco de dados são sincronizadas com o serviço NTP da AWS e não com o servidor de horário do domínio AD. Em relação a conexões de banco de dados entre instâncias vinculadas do SQL Server em seu domínio AD, você pode usar somente a autenticação SQL e não a autenticação do Windows.
+ As configurações de Objeto de Política de Grupo do seu domínio do AD autogerenciado não são propagadas em suas instâncias do RDS para SQL Server.

# Configurar um Active Directory autogerenciado
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp"></a>

Para configurar um AD autogerenciado, siga as etapas abaixo.

**Topics**
+ [Etapa 1: Criar uma unidade organizacional no AD](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateOU)
+ [Etapa 2: criar uma conta de serviço de domínio AD em seu AD](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateADuser)
+ [Etapa 3: delegar controle à conta de serviço de domínio AD](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.DelegateControl)
+ [Etapa 4: Criar uma chave do AWS KMS](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateKMSkey)
+ [Etapa 5: Criar um segredo da AWS](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateSecret)

## Etapa 1: Criar uma unidade organizacional no AD
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateOU"></a>

**Importante**  
 Recomendamos criar uma OU e uma credencial de serviço dedicadas com escopo para essa OU para todas as contas da AWS que tenham uma instância de banco de dados do RDS para SQL Server associada ao seu domínio de AD autogerenciado. Ao dedicar uma OU e uma credencial de serviço, você pode evitar permissões conflitantes e seguir o princípio de privilégio mínimo. 

**Como criar uma OU no AD**

1. Conecte-se ao seu domínio de AD como administrador do domínio.

1. Abra **Usuários e computadores do Active Directory** e selecione o domínio em que deseja criar a OU.

1. Clique com o botão direito do mouse no domínio, escolha **Novo** e selecione **Unidade organizacional**.

1. Insira um nome para a OU.

1. Mantenha a caixa **Proteger o contêiner contra exclusão acidental** selecionada.

1. Clique em **OK**. A nova OU será exibida em seu domínio.

## Etapa 2: criar uma conta de serviço de domínio AD em seu AD
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateADuser"></a>

As credenciais da conta de serviço de domínio serão usadas para o segredo no AWS Secrets Manager.

**Como criar uma conta de serviço de domínio AD em seu AD**

1. Abra **Usuários e computadores do Active Directory** e selecione o domínio e a OU em que deseja criar o usuário.

1. Clique com o botão direito do mouse no objeto **Usuários**, escolha **Novo** e selecione **Usuário**.

1. Insira um nome, sobrenome e nome de login para o usuário. Clique em **Next**.

1. Insira uma senha para o usuário. Não selecione a opção **“O usuário deve alterar a senha no próximo login”**. Não selecione a opção **“A conta está desabilitada”**. Clique em **Next**.

1. Clique em **OK**. O novo usuário será exibido em seu domínio.

## Etapa 3: delegar controle à conta de serviço de domínio AD
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.DelegateControl"></a>

**Como delegar controle à conta de serviço de domínio AD em seu domínio**

1. Abra o snap-in do MMC **Usuários e computadores do Active Directory** e selecione o domínio em que deseja criar o usuário.

1. Clique com o botão direito do mouse na OU criada anteriormente e escolha **Delegar controle**.

1. No **Assistente de delegação de controle**, clique em **Próximo**.

1. Na seção **Usuários ou grupos**, clique em **Adicionar**.

1. Na seção **Selecionar usuários, computadores ou grupos**, insira a conta de serviço de domínio AD que você criou e clique em **Conferir nomes**. Se a verificação de sua conta de serviço de domínio AD for bem-sucedida, clique em **OK**.

1. Na seção **Usuários ou grupos**, confirme se seu serviço de domínio AD foi adicionado e clique em **Próximo**.

1. Na página **Tarefas para delegar**, selecione **Criar uma tarefa personalizada para delegar** e escolha **Próximo**.

1. Na seção **Tipo de objeto do Active Directory**:

   1. Selecione **Somente os objetos a seguir na pasta**.

   1. Selecione **Objetos do computador**.

   1. Selecione **Criar objetos selecionados nesta pasta**.

   1. Selecione **Excluir objetos selecionados nesta pasta** e clique em **Próximo**.

1. Na seção **Permissões**:

   1. Mantenha a opção **Geral** selecionada.

   1. Selecione **Gravação validada no nome do host DNS**.

   1. Selecione **Gravação validada no nome da entidade principal de serviço** e clique em **Próximo**.

   1. Para habilitar a autenticação Kerberos, mantenha a opção **Específico da propriedade** selecionada e escolha **Gravar servicePrincipalName** na lista.

1. Em **Concluir o assistente de delegação de controle**, revise e confirme as configurações e clique em **Concluir**.

1. Para a autenticação Kerberos, abra o Gerenciador DNS e abra as propriedades do **servidor**.

   1. Na caixa de diálogo do Windows, digite `dnsmgmt.msc`.

   1. Inclua a conta do serviço de domínio AD na guia **Segurança**.

   1. Selecione a permissão de **leitura** e aplique suas alterações.

## Etapa 4: Criar uma chave do AWS KMS
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateKMSkey"></a>

A chave do KMS é usada para criptografar o segredo da AWS.

**Para criar uma chave do AWS KMS**
**nota**  
 Em **Chave de criptografia**, não use a chave do KMS padrão da AWS. Crie a chave do AWS KMS na mesma conta da AWS que contém a instância de banco de dados do RDS para SQL Server que você deseja associar ao AD autogerenciado. 

1. No console do AWS KMS, escolha **Criar chave**.

1. Em **Tipo de chave**, escolha **Simétrica**.

1. Em **Uso da chave**, escolha **Criptografar e descriptografar**.

1. Em **Advanced options (Opções avançadas)**:

   1. Em **Origem do material de chaves**, escolha **Externa**.

   1. Em **Regionalidade**, escolha **Chave de região única** e clique em **Próximo**.

1. Em **Alias**, forneça um nome para a chave do KMS.

1. (Opcional) Em **Descrição**, forneça uma descrição da chave do KMS.

1. (Opcional) Em **Etiquetas**, forneça uma etiqueta da chave do KMS e clique em **Próximo**.

1. Em **Administradores de chaves**, forneça o nome de um usuário do IAM e selecione-o.

1. Em **Exclusão de chaves**, mantenha a caixa **Permitir que administradores de chaves excluam esta chave** selecionada e clique em **Próximo**.

1. Em **Usuários de chaves**, informe o mesmo usuário do IAM da etapa anterior e selecione-o. Clique em **Next**.

1. Revise a configuração.

1. Em **Política de chave**, inclua o seguinte na **Instrução** da política:

   ```
   {
       "Sid": "Allow use of the KMS key on behalf of RDS",
       "Effect": "Allow",
       "Principal": {
           "Service": [
               "rds.amazonaws.com"
           ]
       },
       "Action": "kms:Decrypt",
       "Resource": "*"
   }
   ```

1. Clique em **Finish (Concluir)**.

## Etapa 5: Criar um segredo da AWS
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateSecret"></a>

**Como criar um segredo**
**nota**  
 Crie o segredo na mesma conta da AWS que contém a instância de banco de dados do RDS para SQL Server que você deseja associar ao AD autogerenciado. 

1. No AWS Secrets Manager, escolha **Armazenar um novo segredo**.

1. Em **Tipo de segredo**, escolha **Outro tipo de segredo**.

1. Em **Pares de chave/valor**, adicione suas duas chaves:

   1. Para a primeira chave, insira `SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME`.

   1. Para o valor da primeira chave, insira somente o nome de usuário (sem o prefixo do domínio) do usuário do AD. Não inclua o nome do domínio, pois isso faz com que a criação da instância falhe.

   1. Para a segunda chave, insira `SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD`.

   1. Para o valor da segunda chave, insira a senha que você criou para o usuário do AD no domínio.

1. Em **Chave de criptografia**, insira a chave do KMS que você criou em uma etapa anterior e clique em **Próximo**.

1. Em **Nome do secreto**, insira um nome descritivo que ajude você a encontrar o segredo posteriormente.

1. (Opcional) Em **Descrição**, insira uma descrição para o nome do segredo.

1. Em **Permissão de recurso**, clique em **Editar**.

1. Adicione a política a seguir à política de permissões:
**nota**  
Recomendamos que você use as condições `aws:sourceAccount` e `aws:sourceArn` na política para evitar o problema de *representante confuso*. Use sua Conta da AWS em `aws:sourceAccount` e o ARN da instância de banco de dados do RDS para SQL Server em `aws:sourceArn`. Para obter mais informações, consulte [Prevenção do problema do substituto confuso entre serviços](cross-service-confused-deputy-prevention.md).

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement":
       [
           {
               "Effect": "Allow",
               "Principal":
               {
                   "Service": "rds.amazonaws.com"
               },
               "Action": "secretsmanager:GetSecretValue",
               "Resource": "*",
               "Condition":
               {
                   "StringEquals":
                   {
                       "aws:sourceAccount": "123456789012"
                   },
                   "ArnLike":
                   {
                       "aws:sourceArn": "arn:aws:rds:us-west-2:123456789012:db:*"
                   }
               }
           }
       ]
   }
   ```

------

1. Clique em **Salvar**, depois em **Próximo**.

1. Em **Definir configurações de rotação**, mantenha os valores padrão e escolha **Próximo**.

1. Revise as configurações do segredo e clique em **Armazenar**.

1. Escolha o segredo que você criou e copie o valor do **ARN do segredo**. Isso será usado na próxima etapa para configurar o Active Directory autogerenciado.

# Associar a instância de banco de dados ao Active Directory autogerenciado
<a name="USER_SQLServer_SelfManagedActiveDirectory.Joining"></a>

Para associar a instância de banco de dados do RDS para SQL Server ao seu AD autogerenciado, siga estas etapas:

## Etapa 1: Criar ou modificar a instância de banco de dados do SQL Server
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateModify"></a>

Você pode usar o console, a CLI ou a API do RDS para associar uma instância de banco de dados do RDS para SQL Server a um domínio de AD autogerenciado. Você pode fazer isso por meio de uma das seguintes maneiras:
+ Crie uma instância de banco de dados do SQL Server usando o console, o comando [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) da CLI ou a operação da API [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) do RDS.

  Para obter instruções, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).
+ Modifique uma instância de banco de dados existente do SQL Server usando o console, o comando [ modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) da CLI ou a operação da API [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) do RDS.

  Para obter instruções, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).
+ Restaure uma instância de banco de dados do SQL Server de um snapshot de banco de dados usando o console, o comando [ restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) da CLI ou a operação da API [ RestoreDBInstanceFromDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html) do RDS.

  Para obter instruções, consulte [Restaurar uma instância de banco de dados](USER_RestoreFromSnapshot.md).
+ Restaure uma instância de banco de dados SQL Server em um determinado momento usando o console, o comando [ restore-db-instance-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) da CLI ou a operação da API [ RestoreDBInstanceToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) do RDS.

  Para obter instruções, consulte [Restaurar uma instância de banco de dados para um momento especificado no Amazon RDS](USER_PIT.md).

Quando você usa a AWS CLI, são necessários os seguintes parâmetros para que a instância de banco de dados possa usar o domínio AD autogerenciado que você criou:
+ Em relação ao parâmetro `--domain-fqdn`, use o nome de domínio totalmente qualificado (FQDN) do seu AD autogerenciado.
+ Para o parâmetro `--domain-ou`, use a OU criada em seu AD autogerenciado.
+ Para o parâmetro `--domain-auth-secret-arn`, use o valor do **ARN do segredo** criado em uma etapa anterior.
+ Para o parâmetro `--domain-dns-ips`, use os endereços IPv4 primário e secundário dos servidores DNS para seu AD autogerenciado. Se você não tiver um endereço IP de servidor DNS secundário, insira o endereço IP principal duas vezes.

O exemplo a seguir de comandos da CLI mostra como criar, modificar e remover uma instância de banco de dados do RDS para SQL Server com um domínio de AD autogerenciado.

**Importante**  
Se você modificar uma instância de banco de dados para associá-la ou removê-la de um domínio de AD autogerenciado, será necessária uma reinicialização da instância de banco de dados para que a modificação entre em vigor. Você pode optar por aplicar as alterações imediatamente ou esperar até a próxima janela de manutenção. Escolher a opção **Aplicar imediatamente** causará tempo de inatividade para uma instância de banco de dados single-AZ. Uma instância de banco de dados multi-AZ realizará um failover antes de concluir a reinicialização. Para obter mais informações, consulte [Usar a configuração de programação de modificações](USER_ModifyInstance.ApplyImmediately.md). 

O comando da CLI a seguir cria uma instância de banco de dados do RDS para SQL Server e a associa a um domínio de AD autogerenciado.

Para Linux, macOS ou Unix:

```
aws rds create-db-instance \
    --db-instance-identifier my-DB-instance \
    --db-instance-class db.m5.xlarge \
    --allocated-storage 50 \
    --engine sqlserver-se \
    --engine-version 15.00.4043.16.v1 \
    --license-model license-included \
    --master-username my-master-username \
    --master-user-password my-master-password \
    --domain-fqdn my_AD_domain.my_AD.my_domain \
    --domain-ou OU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain \
    --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:my-AD-test-secret-123456" \
    --domain-dns-ips "10.11.12.13" "10.11.12.14"
```

Para Windows:

```
aws rds create-db-instance ^
    --db-instance-identifier my-DB-instance ^
    --db-instance-class db.m5.xlarge ^
    --allocated-storage 50 ^
    --engine sqlserver-se ^
    --engine-version 15.00.4043.16.v1 ^
    --license-model license-included ^
    --master-username my-master-username ^
    --master-user-password my-master-password ^
    --domain-fqdn my-AD-test.my-AD.mydomain ^
    --domain-ou OU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain ^
    --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:my-AD-test-secret-123456" \ ^
    --domain-dns-ips "10.11.12.13" "10.11.12.14"
```

O comando da CLI a seguir modifica uma instância de banco de dados do RDS para SQL Server existente para usar um domínio AD autogerenciado.

Para Linux, macOS ou Unix:

```
aws rds modify-db-instance \
    --db-instance-identifier my-DB-instance \
    --domain-fqdn my_AD_domain.my_AD.my_domain \
    --domain-ou OU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain \
    --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:my-AD-test-secret-123456" \ 
    --domain-dns-ips "10.11.12.13" "10.11.12.14"
```

Para Windows:

```
aws rds modify-db-instance ^
    --db-instance-identifier my-DBinstance ^
    --domain-fqdn my_AD_domain.my_AD.my_domain ^
    --domain-ou OU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain ^
    --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:my-AD-test-secret-123456" ^ 
    --domain-dns-ips "10.11.12.13" "10.11.12.14"
```

O comando da CLI a seguir remove uma instância de banco de dados do RDS para SQL Server de um domínio AD autogerenciado.

Para Linux, macOS ou Unix:

```
aws rds modify-db-instance \
    --db-instance-identifier my-DB-instance \
    --disable-domain
```

Para Windows:

```
aws rds modify-db-instance ^
    --db-instance-identifier my-DB-instance ^
    --disable-domain
```

## Etapa 2: usar a autenticação do Kerberos ou NTLM
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.KerbNTLM"></a>

### Autenticações NTLM
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.KerbNTLM.NTLM"></a>

Cada instância de banco de dados do Amazon RDS tem um endpoint, e cada endpoint tem um nome de DNS e um número de porta para a instância de banco de dados. Para se conectar à sua instância de banco de dados usando um aplicativo cliente SQL, você precisa do nome DNS e do número da porta para sua instância de banco de dados. Para se autenticar usando o NTLM, é necessário se conectar ao endpoint do RDS ou ao endpoint do receptor se estiver usando uma implantação multi-AZ.

Durante uma manutenção planejada do banco de dados ou de uma interrupção do serviço não planejada, o Amazon RDS faz failover automático para o banco de dados secundário atualizado. Dessa maneira, as operações podem ser retomadas rapidamente sem intervenção manual. As instâncias primária e secundária usam o mesmo endpoint, cujo endereço de rede física faz a transição para a secundária como parte do processo de failover. Não é necessário reconfigurar seu aplicativo quando ocorre um failover.

### Autenticação de Kerberos
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.Kerb"></a>

A autenticação baseada em Kerberos para o RDS para SQL Server exige que as conexões sejam feitas com um nome de entidade principal de serviço (SPN) específico. No entanto, após um evento de failover, a aplicação pode não estar ciente do novo SPN. Para resolver isso, o RDS para SQL Server oferece um endpoint baseado em Kerberos.

O endpoint baseado em Kerberos segue um formato específico. Caso o endpoint do RDS seja `rds-instance-name.account-region-hash.aws-region.rds.amazonaws.com`, o endpoint correspondente baseado em Kerberos será `rds-instance-name.account-region-hash.aws-region.awsrds.fully qualified domain name (FQDN)`.

Por exemplo, se o endpoint do RDS for `ad-test.cocv6zwtircu.us-east-1.rds.amazonaws.com` e o nome do domínio for `corp-ad.company.com`, o endpoint baseado em Kerberos será `ad-test.cocv6zwtircu.us-east-1.awsrds.corp-ad.company.com`.

Esse endpoint baseado em Kerberos pode ser usado para se autenticar na instância do SQL Server usando o Kerberos, mesmo após um evento de failover, pois o endpoint é atualizado automaticamente para apontar para o novo SPN da instância primária do SQL Server.

### Encontrar o CNAME
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CNAME"></a>

Para encontrar o CNAME, conecte-se ao controlador de domínio e abra o **Gerenciador de DNS**. Acesse **Forward Lookup Zones** e o FQDN.

Navegue por **awsrds**, **aws-region** e **hash específico de conta e região**.

![\[Modificar a quantidade de armazenamento para uma instância de banco de dados\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/kerb-endpoint-selfManagedAD-RDSMS.png)


Se uma conexão do NTLM for retornada depois que você conectar o CNAME por meio do cliente remoto, confira se as portas necessárias estão na lista de permissões.

Para conferir se a conexão está usando o Kerberos, realize a seguinte consulta:

```
SELECT net_transport, auth_scheme
    FROM sys.dm_exec_connections
    WHERE session_id = @@SSPID;
```

Se sua instância exibir uma conexão NTLM quando você se conectar a um endpoint Kerberos, verifique sua configuração de rede e as configurações do usuário. Consulte [Configurar sua conectividade de rede](USER_SQLServer_SelfManagedActiveDirectory.Requirements.md#USER_SQLServer_SelfManagedActiveDirectory.Requirements.NetworkConfig).

## Etapa 3: Criar logins do SQL Server de Autenticação do Windows
<a name="USER_SQLServer_SelfManagedActiveDirectory.CreateLogins"></a>

Use as credenciais de usuário mestre do Amazon RDS para se conectar à instância de banco de dados do SQL Server como você faria para qualquer outra instância de banco de dados. Como a instância de banco de dados é associada ao domínio de AD autogerenciado, você pode provisionar logins e usuários do SQL Server. Você faz isso usando o utilitário de usuários e grupos de AD em seu domínio de AD autogerenciado. As permissões de banco de dados são gerenciadas por meio de permissões padrão do SQL Server concedidas e revogadas a esses logins do Windows.

Para que uma conta de serviço de domínio AD autogerenciado seja autenticada com o SQL Server, deve existir um login do Windows para SQL Server para a conta em questão ou um grupo do AD autogerenciado do qual o usuário seja membro. O controle de acesso refinado é gerenciado por meio da concessão e revogação de permissões nesses logins do SQL Server. Uma conta de serviço de domínio AD autogerenciado que não tenha um login do SQL Server ou que não pertença a um grupo do AD autogerenciado com esse login não consegue acessar a instância de banco de dados do SQL Server.

A permissão ALTER ANY LOGIN é necessária para criar um login de AD autogerenciado do SQL Server. Se você ainda não criou logins com essa permissão, conecte-se como o usuário mestre da instância de banco de dados usando a autenticação do SQL Server e crie logins de AD autogerenciado do SQL Server no contexto do usuário principal.

Você pode executar um comando de linguagem de definição de dados (DDL) como o seguinte para criar um login do SQL Server para um grupo uma conta de serviço de domínio AD autogerenciado.

**nota**  
Especifique usuários e grupos que usam o nome de login anterior ao Windows 2000 no formato `my_AD_domain\my_AD_domain_user`. Não é possível usar um User Principal Name (UPN – Nome de usuário principal) no formato *`my_AD_domain_user`*`@`*`my_AD_domain`*.

```
USE [master]
GO
CREATE LOGIN [my_AD_domain\my_AD_domain_user] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english];
GO
```

Para obter mais informações, consulte [CREATE LOGIN (Transact-SQL)](https://msdn.microsoft.com/en-us/library/ms189751.aspx) na documentação da Microsoft Developer Network.

Os usuários (humanos e aplicações) do seu domínio agora podem se conectar à instância do RDS para SQL Server por meio de uma máquina cliente associada ao domínio de AD autogerenciado usando a autenticação do Windows.

# Gerenciar uma instância de banco de dados em um domínio de Active Directory autogerenciado
<a name="USER_SQLServer_SelfManagedActiveDirectory.Managing"></a>

 É possível usar o console, a AWS CLI ou a API do Amazon RDS para gerenciar a instância de banco de dados e a respectiva relação com o domínio de AD autogerenciado. Por exemplo, é possível mover a instância de banco de dados para dentro, para fora, de e entre os domínios. 

 Por exemplo, usando a API do Amazon RDS, você pode fazer o seguinte: 
+ Para tentar novamente uma associação a um domínio de AD autogerenciado em caso de falha, use a operação de API [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) e especifique o mesmo conjunto de parâmetros:
  + `--domain-fqdn`
  + `--domain-dns-ips`
  + `--domain-ou`
  + `--domain-auth-secret-arn`
+ Para remover uma instância de banco de dados de um domínio autogerenciado, use a operação de API `ModifyDBInstance` e especifique `--disable-domain` como parâmetro do domínio.
+ Para mover uma instância de banco de dados de um domínio autogerenciado para outro, use a operação de API `ModifyDBInstance` e especifique os parâmetros do novo domínio:
  + `--domain-fqdn`
  + `--domain-dns-ips`
  + `--domain-ou`
  + `--domain-auth-secret-arn`
+ Para listar a associação de cada instância de banco de dados ao domínio de AD autogerenciado, use a operação de API [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/DescribeDBInstances.html).

## Entender a associação a um domínio de Active Directory autogerenciado
<a name="USER_SQLServer_SelfManagedActiveDirectory.Understanding"></a>

Depois de criar ou modificar uma instância de banco de dados, ela se tornará um membro do domínio AD autogerenciado. O console da AWS indica o status da associação ao domínio de AD autogerenciado para a instância de banco de dados. O status da instância de banco de dados pode ser um dos seguintes: 
+  **joined**: a instância é membro do domínio de AD.
+  **joining**: a instância está em processo de se tornar membro do domínio de AD.
+  **pending-join** – a associação da instância está pendente.
+  **pending-maintenance-join**: a AWS tentará tornar a instância um membro do domínio de AD durante a próxima janela de manutenção agendada.
+  **pending-removal**: a remoção da instância do domínio de AD está pendente.
+  **pending-maintenance-removal**: a AWS tentará remover a instância do domínio de AD durante a próxima janela de manutenção agendada.
+  **failed**: um problema de configuração impediu que a instância se associasse ao domínio de AD. Verifique e corrija sua configuração antes de emitir novamente o comando de modificação da instância.
+  **removing**: a instância está sendo removida do domínio de AD.

**Importante**  
Uma solicitação para se tornar um membro de um domínio de AD autogerenciado pode falhar devido a um problema de conectividade de rede. Por exemplo, você pode conseguir criar uma instância de banco de dados ou modificar uma instância existente, mas não conseguir transformar a instância de banco de dados em um membro de um domínio de AD autogerenciado. Nesse caso, execute novamente o comando para criar ou modificar a instância de banco de dados ou modifique a instância recém-criada para associá-la ao domínio de AD autogerenciado.

# Solução de problemas de Active Directory autogerenciado
<a name="USER_SQLServer_SelfManagedActiveDirectory.TroubleshootingSelfManagedActiveDirectory"></a>

Veja a seguir alguns problemas que você pode encontrar ao configurar ou modificar um AD autogerenciado.


****  

| Código de erro | Descrição | Causas comuns | Sugestões de solução de problemas | 
| --- | --- | --- | --- | 
| Erro 2 / 0x2 | O sistema não conseguiu encontrar o arquivo especificado. | O formato ou a localização da unidade organizacional (OU) especificada com o parâmetro `—domain-ou` é inválido. A conta de serviço do domínio especificada por meio do AWS Secrets Manager não tem as permissões necessárias para se associar à OU. | Revise o parâmetro `—domain-ou`. Certifique-se de que a conta de serviço do domínio tenha as permissões corretas para a OU. Para obter mais informações, consulte [Configurar uma conta de serviço do domínio de AD](USER_SQLServer_SelfManagedActiveDirectory.Requirements.md#USER_SQLServer_SelfManagedActiveDirectory.Requirements.DomainAccountConfig).  | 
| Erro 5 / 0x5 | Acesso negado. | Permissões configuradas incorretamente para a conta de serviço do domínio, ou a conta de computador já existe no domínio. | Revise as permissões da conta de serviço no domínio e verifique se a conta de computador do RDS não está duplicada no domínio. Você pode verificar o nome da conta de computador do RDS executando `SELECT @@SERVERNAME` em sua instância de banco de dados do RDS para SQL Server. Se você estiver usando multi-AZ, tente reinicializar com failover, depois verifique a conta de computador do RDS novamente. Para obter mais informações, consulte [Reinicializar uma instância de banco de dados](USER_RebootInstance.md). | 
| Erro 87 / 0x57 | O parâmetro está incorreto. | A conta de serviço do domínio especificada por meio do AWS Secrets Manager não tem as permissões corretas. O perfil do usuário também pode estar corrompido. | Revise os requisitos da conta de serviço do domínio. Para obter mais informações, consulte [Configurar uma conta de serviço do domínio de AD](USER_SQLServer_SelfManagedActiveDirectory.Requirements.md#USER_SQLServer_SelfManagedActiveDirectory.Requirements.DomainAccountConfig).  | 
| Erro 234 / 0xEA | A unidade organizacional (OU) especificada não existe. | A OU especificada com o parâmetro `—domain-ou` não existe em seu AD autogerenciado. | Revise o parâmetro `—domain-ou` e verifique se a OU especificada existe em seu AD autogerenciado. | 
| Erro 1326 / 0x52E | O nome de usuário ou a senha estão incorretos. | As credenciais da conta de serviço do domínio fornecidas no AWS Secrets Manager contêm um nome de usuário desconhecido ou uma senha incorreta. A conta de domínio também pode estar desabilitada em seu AD autogerenciado. | Verifique se as credenciais fornecidas no AWS Secrets Manager estão corretas e se a conta de domínio está habilitada no AD autogerenciado. | 
| Erro 1355 / 0x54B | O domínio especificado não existe ou não foi possível estabelecer conexão. | O domínio está inativo, o conjunto especificado de IPs DNS está inacessível ou o FQDN especificado está inacessível. | Revise os parâmetros `—domain-dns-ips` e `—domain-fqdn` para garantir que estejam corretos. Revise a configuração de rede da sua instância de banco de dados do RDS para SQL Server e garanta que seu AD autogerenciado esteja acessível. Para obter mais informações, consulte [Configurar sua conectividade de rede](USER_SQLServer_SelfManagedActiveDirectory.Requirements.md#USER_SQLServer_SelfManagedActiveDirectory.Requirements.NetworkConfig).  | 
| Erro 1722 / 0x6BA | O servidor RPC não está disponível. | Houve um problema ao acessar o serviço RPC do domínio de AD. Isso pode ser devido a um problema de serviço ou rede. | Valide se o serviço RPC está sendo executado nos controladores de domínio e se as portas TCP `135` e `49152-65535` em seu domínio podem ser acessadas por sua instância de banco de dados do RDS para SQL Server. | 
|  Erro 1727/0x6BF  |  A chamada do procedimento remoto falhou e não foi executada.  |  Problema de conectividade de rede ou restrição de firewall que bloqueia a comunicação RPC com o controlador de domínio.  |  Se estiver usando a união de domínios VPC cruzados, verifique se a comunicação entre a VPC está configurada corretamente com o emparelhamento de VPC ou o Transit Gateway. Garanta que portas TCP altas `49152-65535` em seu domínio possam ser acessadas por sua instância de banco de dados do RDS para SQL Server, incluindo possíveis restrições de firewall.  | 
| Erro 2224 / 0x8B0 | A conta de usuário já existe. | A conta de computador que está tentando ser adicionada ao AD autogerenciado já existe. | Identifique a conta de computador executando `SELECT @@SERVERNAME` em sua instância de banco de dados do RDS para SQL Server, depois remova-a cuidadosamente do AD autogerenciado. | 
| Erro 2242 / 0x8c2 | A senha deste usuário expirou. | A senha da conta de serviço do domínio especificada por meio do AWS Secrets Manager expirou. | Atualize a senha da conta de serviço do domínio usada para associar a instância de banco de dados do RDS para SQL Server ao seu AD autogerenciado. | 

Depois de unir sua instância de banco de dados a um domínio Active Directory autogerenciado, você pode receber eventos do RDS relacionados à integridade do seu domínio.

```
Unhealthy domain state detected while attempt to verify or 
configure your Kerberos endpoint in your domain on 
node node_n. message
```

Para instâncias multi-AZ, você pode observar o relatório de erros para node1 e node2, o que indica que a configuração do Kerberos da sua instância não está pronta para failover. No caso de um failover, você pode ter dificuldades de autenticação usando o Kerberos. Resolva os problemas de configuração para garantir que a configuração do Kerberos seja válida e atualizada. Para instâncias multi-AZ, nenhuma ação é necessária para usar a autenticação do Kerberos no novo host primário, já que todas as configurações de rede e permissão estão em vigor.

Em relação a instâncias Single-AZ, o node1 é o nó primário. Se sua autenticação Kerberos não estiver funcionando conforme o esperado, confira os eventos da instância e resolva os problemas de configuração para garantir que a configuração do Kerberos seja válida e atualizada.

## Restaurar uma instância de banco de dados do SQL Server e adicioná-la a um domínio de Active Directory autogerenciado
<a name="USER_SQLServer_SelfManagedActiveDirectory.Restore"></a>

Você pode restaurar um snapshot de banco de dados ou fazer uma recuperação para um ponto no tempo (PITR) de uma instância de banco de dados do SQL Server e adicioná-la a um domínio de Active Directory autogerenciado. Depois que a instância de banco de dados tiver sido restaurada, modifique-a usando o processo explicado em [Etapa 1: Criar ou modificar a instância de banco de dados do SQL Server](USER_SQLServer_SelfManagedActiveDirectory.Joining.md#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateModify) para adicioná-la a um domínio de AD autogerenciado.

# Trabalhar com o AWS Managed Active Directory com o RDS para SQL Server
<a name="USER_SQLServerWinAuth"></a>

Você pode usar AWS Managed Microsoft AD com a autenticação do Windows para autenticar usuários quando se conectam à instância de banco de dados do RDS para SQL Server. A instância de banco de dados funciona com AWS Directory Service for Microsoft Active Directory, também chamado de AWS Managed Microsoft AD, para habilitar a Autenticação do Windows. Quando os usuários se autenticam com uma instância de banco de dados do SQL Server unida ao domínio confiável, as solicitações de autenticação são encaminhadas para o diretório de domínio que você criou com o Directory Service. 

## Disponibilidade de região e versão
<a name="USER_SQLServerWinAuth.RegionVersionAvailability"></a>

O RDS só aceita o uso de AWS Managed Microsoft AD para autenticação do Windows. O RDS não oferece suporte ao uso de AD Connector. Para saber mais, consulte:
+ [Política de compatibilidade de aplicações do AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_app_compatibility.html)
+ [Política de compatibilidade de aplicações do AD Connector](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ad_connector_app_compatibility.html)

Para obter informações sobre a disponibilidade de versões e regiões, consulte Autenticação de Kerberos com RDS para PostgreSQL.

## Visão geral da configuração de autenticação do Windows
<a name="USER_SQLServerWinAuth.overview"></a>

O Amazon RDS usa o modo misto para a autenticação do Windows. Essa abordagem significa que o *usuário mestre* (o nome e a senha usados para criar sua instância de banco de dados do SQL Server) usa a autenticação do SQL. Como a conta de usuário mestre é uma credencial privilegiada, você deve restringir o acesso a essa conta.

Para obter a autenticação do Windows usando um Microsoft Active Directory no local ou auto-hospedado, crie uma confiança de floresta. A confiança pode ser unidirecional ou bidirecional. Para obter mais informações sobre como configurar confianças de floresta usando o Directory Service, consulte [Quando criar um relacionamento de confiança](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_setup_trust.html) no *Guia de administração do AWS Directory Service*.

Para configurar a autenticação do Windows para uma instância de banco de dados do SQL Server, realize as seguintes etapas, explicadas mais detalhadamente em [Configuração da autenticação do Windows para instâncias de banco de dados do SQL Server](USER_SQLServerWinAuth.SettingUp.md):

1. Use AWS Managed Microsoft AD, seja no Console de gerenciamento da AWS ou na API do Directory Service, para criar um diretório AWS Managed Microsoft AD. 

1. Se você usar a AWS CLI ou a API do Amazon RDS para criar a instância de banco de dados do SQL Server, crie uma função do IAM (AWS Identity and Access Management). Essa função usa a política gerenciada do IAM `AmazonRDSDirectoryServiceAccess` e permite que o Amazon RDS realize chamadas para o diretório. Se você usa o console para criar a instância de banco de dados do SQL Server, a AWS cria a função do IAM para você. 

   Para a função permitir o acesso, o endpoint do AWS Security Token Service (AWS STS) deve estar ativado na região da AWS da sua conta da AWS. Os endpoints do AWS STS são ativados por padrão em todas as regiões da AWS e você pode usá-los sem ter que tomar medidas adicionais. Para ter mais informações, consulte [Gerenciar o AWS STS em uma Região da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) no *Guia do usuário do IAM*.

1. Crie e configure usuários e grupos no diretório do AWS Managed Microsoft AD usando as ferramentas do Microsoft Active Directory. Para obter mais informações sobre como criar usuários e grupos no Active Directory, consulte [Gerenciar usuários e grupos no AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups.html) no *Guia de administração do AWS Directory Service*.

1. Se você planeja localizar o diretório e a instância de banco de dados em VPCs diferentes, habilite o tráfego entre VPCs.

1. Use o Amazon RDS para criar uma instância de banco de dados do SQL Server a partir do console, da AWS CLI ou da API do Amazon RDS. Na solicitação de criação, forneça o identificador de domínio (identificador "`d-*`") que foi gerado quando você criou seu diretório e o nome da função que você criou. Também é possível modificar uma instância de banco de dados do SQL Server para usar a Autenticação do Windows definindo o domínio e os parâmetros da função do IAM para a instância de banco de dados.

1. Use as credenciais de usuário mestre do Amazon RDS para se conectar à instância de banco de dados do SQL Server como você faria com qualquer outra instância de banco de dados. Como a instância de banco de dados é unida ao domínio do AWS Managed Microsoft AD, você pode provisionar logins e usuários do SQL Server dos usuários e grupos do Active Directory em seu domínio. (Conhecidos como logins “Windows” do SQL Server.) As permissões de banco de dados são gerenciadas por meio de permissões padrão do SQL Server concedidas e revogadas a esses logins do Windows. 

Quando você cria uma instância de banco de dados RDS para SQL Server conectada ao domínio usando o console do Amazon RDS, a AWS cria automaticamente o perfil do IAM `rds-directoryservice-access-role`. Esse perfil é essencial para gerenciar instâncias conectadas ao domínio e é necessário para as seguintes operações:
+ Fazer alterações de configuração em instâncias do SQL Server conectadas ao domínio
+ Gerenciar configurações de integração do Active Directory
+ Executar operações de manutenção em instâncias associadas ao domínio

**Importante**  
Se você excluir o perfil do IAM `rds-directoryservice-access-role`, não poderá fazer alterações na instância do SQL Server conectada ao domínio por meio do console ou da API do Amazon RDS. A tentativa de modificar a instância resulta em uma mensagem de erro informando: You don't have permission to iam:CreateRole. To request access, copy the following text and send it to your AWS administrator.  
Esse erro ocorre porque o Amazon RDS precisa recriar o perfil para gerenciar a conexão do domínio, mas não tem as permissões necessárias. Além disso, esse erro não está registrado em log no CloudTrail, o que pode dificultar a solução de problemas.

Se você excluir acidentalmente o `rds-directoryservice-access-role`, só poderá fazer quaisquer alterações na instância do SQL Server conectada ao domínio se tiver permissões `iam:CreateRole` para recriá-lo. Para recriar o perfil manualmente, ele deve ter a política gerenciada `AmazonRDSDirectoryServiceAccess` anexada e a relação de confiança apropriada que permita que o serviço RDS assuma o perfil.

# Criar o endpoint para autenticação do Kerberos
<a name="USER_SQLServerWinAuth.KerberosEndpoint"></a>

A autenticação baseada em Kerberos exige que o endpoint seja o nome do host especificado pelo cliente, um ponto e o nome de domínio totalmente qualificado (FQDN). Por exemplo, o exemplo a seguir mostra um endpoint que você pode usar com a autenticação baseada em Kerberos. Neste exemplo, o nome do host da instância de banco de dados do SQL Server é `ad-test` e o nome de domínio é `corp-ad.company.com`: 

```
ad-test.corp-ad.company.com
```

Se você deseja verificar se sua conexão está usando o Kerberos, execute a seguinte consulta: 

```
1. SELECT net_transport, auth_scheme 
2.   FROM sys.dm_exec_connections 
3.  WHERE session_id = @@SPID;
```

# Configuração da autenticação do Windows para instâncias de banco de dados do SQL Server
<a name="USER_SQLServerWinAuth.SettingUp"></a>

Use o AWS Directory Service for Microsoft Active Directory, também chamado de AWS Managed Microsoft AD, para configurar a Autenticação do Windows para uma instância de banco de dados do SQL Server. Para configurar a Autenticação do Windows, execute as seguintes etapas: 

## Etapa 1: Criar um diretório usando o AWS Directory Service for Microsoft Active Directory
<a name="USER_SQLServerWinAuth.SettingUp.CreateDirectory"></a>

O Directory Service cria um Microsoft Active Directory totalmente gerenciado na Nuvem AWS. Ao criar um diretório do AWS Managed Microsoft AD, o Directory Service cria dois controladores de domínio e servidores do Domain Name Service (DNS) em seu nome. Os servidores do diretório são criados em duas sub-redes em duas zonas de disponibilidade diferentes com uma VPC. Essa redundância ajuda a garantir que o diretório permaneça acessível mesmo se ocorrer uma falha.

 Ao criar um diretório do AWS Managed Microsoft AD, o Directory Service executa as seguintes tarefas em seu nome: 
+ Configura um Microsoft Active Directory dentro da VPC. 
+ Cria uma conta de administrador do diretório com o nome de usuário Admin e a senha especificada. Use essa conta para gerenciar seu diretório.
+ Cria um grupo de segurança para os controladores do diretório.

Quando um AWS Directory Service for Microsoft Active Directory é iniciado, a AWS cria uma Unidade Organizacional (UO) que contém todos os objetos do diretório. Essa OU, que tem o nome de NetBIOS que você digitou quando criou seu diretório, está localizada na raiz do domínio. A raiz do domínio é controlada e de propriedade da AWS. 

 A conta *admin* que foi criada com o diretório do AWS Managed Microsoft AD tem permissões para as atividades administrativas mais comuns de sua OU: 
+ Criar atualização ou excluir usuários, grupos e computadores. 
+ Adicione recursos ao seu domínio, como servidores de arquivos ou de impressão e atribua permissões para esses recursos a usuários e grupos em sua OU. 
+ Criar OUs adicionais e contêineres.
+ Delegar autoridade. 
+ Criar e vincular políticas de grupo. 
+ Restaurar objetos excluídos da Lixeira do Active Directory. 
+ Execute os módulos AD e DNS do Windows PowerShell no Active Directory Web Service. 

A conta admin também possui direitos para executar as seguintes atividades de domínio: 
+ Gerenciar configurações de DNS (adicionar, remover ou atualizar registros, zonas e encaminhadores). 
+ Visualizar logs de eventos de DNS. 
+ Visualizar logs de eventos de segurança. 

**Como criar um diretório com AWS Managed Microsoft AD**

1. No painel de navegação do [console do Directory Service](https://console.aws.amazon.com/directoryservicev2/), escolha **Directories (Diretórios)** e selecione **Set up directory (Configurar diretório)**.

1. Selecione **AWS Managed Microsoft AD**. Essa é a única opção compatível atualmente para uso com o Amazon RDS.

1. Escolha **Next (Próximo)**.

1. Na página **Enter directory information (Inserir informações do diretório)**, forneça as seguintes informações:   
**Edição**  
 Escolha a edição que atenda às suas necessidades.  
**Nome do DNS do diretório**  
O nome completo do diretório, como `corp.example.com`. Nomes com mais de 47 caracteres não são compatíveis com o SQL Server.  
**Nome de NetBIOS do diretório**  
O nome curto opcional do diretório, como `CORP`.   
**Descrição do diretório**  
Uma descrição opcional do diretório.   
**Senha do Admin**  
A senha do administrador do diretório. O processo de criação do diretório cria uma conta de administrador com o nome de usuário Admin e essa senha.   
A senha do administrador do diretório não pode incluir a palavra `admin`. A senha diferencia letras maiúsculas de minúsculas e deve ter entre 8 e 64 caracteres. Ela também precisa conter pelo menos um caractere de três das quatro categorias a seguir:   
   + Letras minúsculas (a-z)
   + Letras maiúsculas (A-Z)
   + Números (0-9)
   + Caracteres não alfanuméricos (\$1\$1@\$1\$1%^&\$1\$1-\$1=`\$1\$1()\$1\$1[]:;"'<>,.?/)   
**Confirmar senha**  
Digite a senha do administrador novamente. 

1. Escolha **Next (Próximo)**.

1. Na página **Choose VPC and subnets (Selecionar VPC e sub-redes)**, forneça as seguintes informações:  
**VPC**  
Escolha a VPC do diretório.  
É possível localizar o diretório e a instância de banco de dados em VPCs diferentes, mas se o fizer, certifique-se de habilitar o tráfego entre VPCs. Para obter mais informações, consulte [Etapa 4: Ativar o tráfego entre VPCs entre o diretório e a instância de banco de dados](#USER_SQLServerWinAuth.SettingUp.VPC-Peering).  
**Sub-redes**  
Escolha as sub-redes para os servidores do diretório. As duas sub-redes deve estar em diferentes zonas de disponibilidade.

1. Escolha **Next (Próximo)**.

1. Analise as informações do diretório. Se alterações forem necessárias, escolha **Previous (Anterior)**. Quando as informações estiverem corretas, selecione **Create directory (Criar diretório)**.   
![\[Revisar e criar a página\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/WinAuth2.png)

A criação do diretório leva vários minutos. Depois que o diretório tiver sido criado com sucesso, o valor de **Status** muda para **Active (Ativo)**.

Para visualizar informações sobre o diretório, selecione o ID do diretório na listagem de diretórios. Anote o **Directory ID (ID do diretório)**. Esse valor será necessário ao criar ou modificar sua instância de banco de dados do SQL Server.

![\[Página de detalhes do diretório\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/WinAuth3.png)


## Etapa 2: Criar a função do IAM para ser usada pelo Amazon RDS
<a name="USER_SQLServerWinAuth.SettingUp.CreateIAMRole"></a>

Se usar o console para criar sua instância de banco de dados do SQL Server, você pode pular esta etapa. Se você usar a CLI ou a API do RDS para criar sua instância de banco de dados do SQL Server, você deverá criar uma função do IAM que use a política `AmazonRDSDirectoryServiceAccess` gerenciada do IAM. Esta função permite que o Amazon RDS faça chamadas ao Directory Service para você. 

Se você estiver usando uma política personalizada para ingressar em um domínio, em vez de usar a política AWS-managed `AmazonRDSDirectoryServiceAccess` gerenciada, permita a ação `ds:GetAuthorizedApplicationDetails`. Esse requisito entrará em vigor a partir de julho de 2019, devido a uma alteração na API do Directory Service.

A seguinte política `AmazonRDSDirectoryServiceAccess` do IAM, fornece acesso ao Directory Service.

**Example Política do IAM para fornecer acesso a Directory Service**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
            "ds:DescribeDirectories", 
            "ds:AuthorizeApplication", 
            "ds:UnauthorizeApplication",
            "ds:GetAuthorizedApplicationDetails"
        ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```

Recomendamos usar as chaves de contexto de condição global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) e [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) em relações baseadas em recursos para limitar as permissões do serviço a um recurso específico. Essa é a maneira mais eficiente de se proteger contra o [problema "confused deputy"](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html).

Você pode usar as duas chaves de contexto de condição global e fazer com que o valor `aws:SourceArn` contenha o ID da conta. Nesses casos, verifique se o valor `aws:SourceAccount` e a conta no `aws:SourceArn` usa o mesmo ID de conta quando eles são usados na mesma instrução.
+ Use `aws:SourceArn` se quiser acesso entre serviços para um único recurso.
+ Use `aws:SourceAccount` se você quiser permitir que qualquer recurso nessa conta seja associado ao uso entre serviços.

Na relação de confiança, certifique-se de usar a chave de contexto de condição global `aws:SourceArn` com o nome do recurso da Amazon (ARN) completo dos recursos que acessam a função. Para Windows Authentication, certifique-se de incluir as instâncias de banco de dados conforme mostrado no exemplo a seguir.

**Example relação de confiança com a chave de contexto de condição global para Windows Authentication**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "rds.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": [
                        "arn:aws:rds:Region:my_account_ID:db:db_instance_identifier"
                    ]
                }
            }
        }
    ]
}
```

Crie uma função do IAM usando esta política do IAM e relacionamento de confiança. Para obter mais informações sobre como criar funções do IAM, consulte [Criação de políticas gerenciadas pelo cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#create-managed-policy-console) no *Guia do usuário do IAM*.

## Etapa 3: Criar e configurar usuários e grupos
<a name="USER_SQLServerWinAuth.SettingUp.CreateUsers"></a>

É possível criar usuários e grupos com a ferramenta Usuários e computadores do Active Directory. Essa ferramenta é uma das ferramentas do Active Directory Domain Services e do Active Directory Lightweight Directory Services. Os usuários representam pessoas ou entidades individuais que têm acesso ao seu diretório. Os grupos são muito úteis para conceder ou negar privilégios a grupos de usuários, em vez de ter que aplicar esses privilégios a cada usuário individual.

Para criar usuários e grupos em um diretório do Directory Service, é necessário estar conectado a uma instância do EC2 do Windows que sejam membro do diretório do Directory Service. Também é necessário estar conectado como um usuário com privilégios para criar usuários e grupos. Para obter mais informações, consulte [Adicionar usuários e grupos (Simple AD e AWS Managed Microsoft AD)](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/creating_ad_users_and_groups.html) no *Guia de administração do AWS Directory Service*.

## Etapa 4: Ativar o tráfego entre VPCs entre o diretório e a instância de banco de dados
<a name="USER_SQLServerWinAuth.SettingUp.VPC-Peering"></a>

Se você planeja localizar o diretório e a instância de banco de dados na mesma VPC, ignore esta etapa e prossiga para [Etapa 5: Criar ou modificar a instância de banco de dados do SQL Server](#USER_SQLServerWinAuth.SettingUp.CreateModify).

Se você planejar localizar o diretório e a instância de Bancos de Dados em VPCs diferentes, configure o tráfego entre VPCs usando o emparelhamento de VPCs ou o [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html).

O procedimento a seguir habilita o tráfego entre VPCs usando o emparelhamento de VPCs. Siga as instruções em [O que é o emparelhamento de VPCs?](https://docs.aws.amazon.com/vpc/latest/peering/Welcome.html) no *Guia de emparelhamento do Amazon Virtual Private Cloud*.

**Como habilitar o tráfego entre VPCs usando o emparelhamento de VPCs**

1. Configure regras apropriadas de roteamento de VPC para garantir que o tráfego de rede possa fluir em ambos os sentidos.

1. Certifique-se de que o grupo de segurança da instância de banco de dados possa receber o tráfego de entrada do grupo de segurança do diretório.

1. Garanta que não há nenhuma regra na lista de controle de acesso (ACL) de rede para bloquear o tráfego.

Se uma conta diferente da AWS for proprietária do diretório, é necessário compartilhá-lo.

**Como compartilhar o diretório entre contas da AWS.**

1. Inicie o compartilhamento do diretório com a conta da AWS na qual a instância de banco de dados será criada seguindo as instruções em [Tutorial: Compartilhar o diretório AWS Managed Microsoft AD para ingresso perfeito no domínio do EC2 ](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_tutorial_directory_sharing.html) no *Directory ServiceGuia de administração*.

1. Faça login no console do Directory Service usando a conta para a instância de banco de dados e garanta que o domínio tenha o status `SHARED` antes de prosseguir.

1. Enquanto estiver conectado ao console do Directory Service usando a conta da instância de banco de dados, observe o valor do **Directory ID (ID do diretório)**. Use esse ID do diretório para associar a instância de banco de dados ao domínio.

## Etapa 5: Criar ou modificar a instância de banco de dados do SQL Server
<a name="USER_SQLServerWinAuth.SettingUp.CreateModify"></a>

Crie ou modifique uma instância de banco de dados do SQL Server para usar com o diretório. É possível usar o console, a CLI ou a API do RDS para associar uma instância de banco de dados a um diretório. Você pode fazer isso por meio de uma das seguintes maneiras:
+ Crie uma instância de banco de dados do SQL Server usando o console, o comando [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) da CLI ou a operação da API [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) do RDS.

  Para obter instruções, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).
+ Modifique uma instância de banco de dados existente do SQL Server usando o console, o comando [ modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) da CLI ou a operação da API [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) do RDS.

  Para obter instruções, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).
+ Restaure uma instância de banco de dados do SQL Server de um snapshot de banco de dados usando o console, o comando [ restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) da CLI ou a operação da API [ RestoreDBInstanceFromDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html) do RDS.

  Para obter instruções, consulte [Restaurar uma instância de banco de dados](USER_RestoreFromSnapshot.md).
+ Restaure uma instância de banco de dados SQL Server em um determinado momento usando o console, o comando [ restore-db-instance-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) da CLI ou a operação da API [ RestoreDBInstanceToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) do RDS.

  Para obter instruções, consulte [Restaurar uma instância de banco de dados para um momento especificado no Amazon RDS](USER_PIT.md).

 A Autenticação do Windows é compatível somente com instâncias de banco de dados do SQL Server em uma VPC. 

 Para que a instância de banco de dados possa usar o diretório do domínio criado, o seguinte é necessário: 
+  Para **Directory (Diretório)**, escolha o identificador de domínio (`d-ID`) gerado ao criar o diretório.
+  Verifique se o grupo de segurança da VPC tem uma regra de saída que permite que a instância de banco de dados se comunique com o diretório.

![\[Diretório de autenticação Windows do Microsoft SQL Server\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/WinAuth1.png)


Quando você usa a AWS CLI, são necessários os seguintes parâmetros para que a instância de banco de dados possa usar o diretório criado:
+ Para o parâmetro `--domain`, use o identificador de domínio (identificador "`d-ID`") gerado quando o diretório foi criado.
+ Para o parâmetro `--domain-iam-role-name`, use a função criada que usa a política gerenciada `AmazonRDSDirectoryServiceAccess` do IAM.

Por exemplo, o comando da CLI a seguir modifica uma instância de banco de dados para usar um diretório.

Para Linux, macOS ou Unix:

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --domain d-ID \
    --domain-iam-role-name role-name
```

Para Windows:

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --domain d-ID ^
    --domain-iam-role-name role-name
```

**Importante**  
Se você modificar uma instância de banco de dados para permitir a autenticação Kerberos, reinicialize a instância de banco de dados após fazer a alteração.

## Etapa 6: Criar logins do SQL Server de Autenticação do Windows
<a name="USER_SQLServerWinAuth.CreateLogins"></a>

Use as credenciais de usuário mestre do Amazon RDS para se conectar à instância de banco de dados do SQL Server como você faria com qualquer outra instância de banco de dados. Como a instância de banco de dados é associada ao domínio AWS Managed Microsoft AD, você pode provisionar logins e usuários do SQL Server. É possível fazer isso a partir de usuários e grupos do Active Directory no domínio. As permissões de banco de dados são gerenciadas por meio de permissões padrão do SQL Server concedidas e revogadas a esses logins do Windows.

Para que um usuário do Active Directory faça a autenticação com o SQL Server, deve existir um login Windows do SQL Server para o usuário ou um grupo do qual o usuário é membro. O controle de acesso refinado é gerenciado por meio da concessão e revogação de permissões nesses logins do SQL Server. Um usuário que não tem um login do SQL Server ou pertence a um grupo ao qual um login não consegue obter acesso à instância de banco de dados do SQL Server.

A permissão ALTER ANY LOGIN é necessária para criar um login do Active Directory SQL Server. Se você ainda não criou logins com essa permissão, conecte-se como o usuário mestre da instância de banco de dados usando a autenticação do SQL Server.

Execute um comando de Data Definition Language (DDL – Linguagem de definição de dados) para criar um login do SQL Server para um usuário ou grupo do Active Directory.

**nota**  
Especifique usuários e grupos que usam o nome de login anterior ao Windows 2000 no formato `domainName\login_name`. Não é possível usar um User Principal Name (UPN – Nome de usuário principal) no formato *`login_name`*`@`*`DomainName`*.  
Você só pode criar um login de autenticação do Windows em uma instância do RDS para SQL Server usando instruções T-SQL. Não é possível usar o SQL Server Management Studio para criar um login de autenticação do Windows.

```
USE [master]
GO
CREATE LOGIN [mydomain\myuser] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english];
GO
```

Para obter mais informações, consulte [CREATE LOGIN (Transact-SQL)](https://msdn.microsoft.com/en-us/library/ms189751.aspx) na documentação da Microsoft Developer Network.

Os usuários (humanos e aplicações) do seu domínio agora podem se conectar à instância do RDS for SQL Server a partir de uma máquina cliente conectada ao domínio usando a Autenticação do Windows.

# Gerenciamento de uma instância de banco de dados em um domínio
<a name="USER_SQLServerWinAuth.Managing"></a>

 É possível usar o console, a AWS CLI ou a API do Amazon RDS para gerenciar a instância de banco de dados e a respectiva relação no domínio. Por exemplo, é possível mover a instância de banco de dados para dentro, para fora, de e entre os domínios. 

 Por exemplo, usando a API do Amazon RDS, você pode fazer o seguinte: 
+  Para tentar uma união de domínio novamente cuja associação falhou, use a operação [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) da API e especifique o ID do diretório da associação atual. 
+  Para atualizar o nome da função do IAM para a associação, use a operação `ModifyDBInstance` da API e especifique o ID do diretório da associação atual e a nova função do IAM. 
+  Para remover uma instância de banco de dados de um domínio, use a operação `ModifyDBInstance` da API e especifique `none` como o parâmetro do domínio. 
+  Para mover uma instância de banco de dados de um domínio para outro, use a operação `ModifyDBInstance` da API e especifique o identificador do novo domínio como o parâmetro do domínio. 
+  Para listar a associação de cada instância de banco de dados, use a operação [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/DescribeDBInstances.html) da API. 

## Compreensão da associação de domínio
<a name="USER_SQLServerWinAuth.Understanding"></a>

 Após criar ou modificar sua instância de banco de dados, a instância se tornará um membro do domínio. O console da AWS indica o status da associação de domínio para a instância de banco de dados. O status da instância de banco de dados pode ser um dos seguintes: 
+  **joined** – a instância é membro do domínio.
+  **joining** – a instância está em processo de se tornar membro do domínio.
+  **pending-join** – a associação da instância está pendente.
+  **pending-maintenance-join**: a AWS tentará tornar a instância um membro do domínio durante a próxima janela de manutenção agendada.
+  **pending-removal** – a remoção da instância do domínio está pendente.
+  **pending-maintenance-removal**: a AWS tentará remover a instância do domínio durante a próxima janela de manutenção programada.
+  **failed** – um problema de configuração impediu que a instância se associasse ao domínio. Verifique e corrija sua configuração antes de emitir novamente o comando de modificação da instância.
+  **removing** – a instância está sendo removida do domínio.

Uma solicitação para se tornar um membro de um domínio pode falhar devido a um problema de conectividade de rede ou a uma função do IAM incorreta. Por exemplo, é possível criar uma instância de banco de dados ou modificar uma instância existente e não conseguir transformar a instância de banco de dados em um membro de um domínio. Nesse caso, reexecute o comando para criar ou modificar a instância de banco de dados ou modifique a instância recém-criada para ingressar no domínio.

# Conexão ao SQL Server com autenticação do Windows
<a name="USER_SQLServerWinAuth.Connecting"></a>

Para se conectar ao SQL Server com Autenticação do Windows, você deve estar conectado em um computador pertencente ao domínio como um usuário de domínio. Após iniciar o SQL Server Management Studio, escolha **Autenticação do Windows** como o tipo de autenticação, conforme mostrado a seguir.

![\[Conexão ao SQL Server usando autenticação do Windows\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/WinAuth4.png)


## Restauração de uma instância de banco de dados do SQL Server e adição posterior a um domínio
<a name="USER_SQLServerWinAuth.Restore"></a>

Você pode restaurar um snapshot de banco de dados ou fazer uma Point-In-Time Restore (PITR – Restauração de ponto no tempo) de uma instância de banco de dados do SQL Server e adicioná-la a um domínio. Depois que a instância de banco de dados tiver sido restaurada, modifique a instância usando o processo explicado em [Etapa 5: Criar ou modificar a instância de banco de dados do SQL Server](USER_SQLServerWinAuth.SettingUp.md#USER_SQLServerWinAuth.SettingUp.CreateModify) para adicionar a instância de banco de dados a um domínio.

# 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. 

# Trabalhar com armazenamento no RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.DatabaseStorage"></a>

Com o RDS para SQL Server, você pode anexar até três volumes adicionais à sua instância do RDS para SQL Server, cada um associado a uma letra de unidade exclusiva do Windows. Isso permite que você distribua arquivos de banco de dados em vários volumes além da unidade `D:` padrão. Ao adicionar um volume de armazenamento, você ganha maior flexibilidade para gerenciamento de arquivos de banco de dados e otimização do armazenamento.

Os benefícios são:
+ **Distribuição flexível de arquivos**: distribua arquivos de dados do banco de dados e arquivos de log em vários volumes para melhorar a performance de E/S.
+ **Otimização do armazenamento**: use diferentes tipos e configurações de armazenamento para diferentes requisitos de workload.
+ **Escalabilidade**: adicione capacidade de armazenamento sem modificar os volumes existentes.

**Topics**
+ [Considerações sobre o uso de volumes de armazenamento adicionais com o RDS para SQL Server](#SQLServer.ASV.Considerations)
+ [Adicionar, remover ou modificar volumes de armazenamento com o RDS para SQL Server](#SQLServer.ASV.Management)
+ [Operações de restauração para volumes de armazenamento adicionais com o RDS para SQL Server](#SQLServer.ASV.Restore)
+ [Casos de uso para volumes de armazenamento adicionais com o RDS para SQL Server](#SQLServer.ASV.UseCases)

## Considerações sobre o uso de volumes de armazenamento adicionais com o RDS para SQL Server
<a name="SQLServer.ASV.Considerations"></a>

Observe os seguintes recursos e limitações ao usar volumes de armazenamento adicionais com o RDS para SQL Server:
+ É possível incluir volumes de armazenamento somente no SQL Server Standard Edition (SE), Enterprise Edition (EE) e Developer Edition (DEV-EE).
+ É possível adicionar até três volumes de armazenamento adicionais por instância.
+ Os nomes dos volumes são associados automaticamente às letras das unidades do Windows da seguinte forma:
  + `rdsdbdata2`: unidade `H:`.
  + `rdsdbdata3`: unidade `I:`.
  + `rdsdbdata4`: unidade `J:`.
+ Os arquivos TempDB continuam usando a unidade `T:` ao usar o armazenamento de instância NVMe. Os arquivos de auditoria do SQL Server e os arquivos do Microsoft Business Intelligence (MSBI) permanecem na unidade `D:`.
+ Você só pode usar os tipos de armazenamento SSD de uso geral (gp3) e o armazenamento em SSD de IOPS provisionadas.
+ O tamanho mínimo de armazenamento dos volumes de armazenamento adicionais é igual ao limite definido para a unidade `D:` padrão. O tamanho máximo de armazenamento para sua instância de banco de dados é de 256 TiB no total em todos os volumes.
+ A adição de volumes de armazenamento a instâncias com réplicas de leitura ou a instâncias de réplica de leitura não é aceita.
+ A inclusão de volumes de armazenamento nas instâncias habilitadas para backup automatizado entre regiões não é aceita.
+ Não é possível configurar volumes de armazenamento para ajuste de escala automático do armazenamento.
+ A movimentação de arquivos entre volumes após a criação não é aceita.
+ Você não pode excluir o volume `D:`, mas pode excluir outros volumes de armazenamento, desde que estejam vazios.
+ A modificação do tamanho dos volumes existentes durante a restauração de snapshots ou recuperação para um ponto no tempo (PITR) não é aceita. No entanto, você pode adicionar novos volumes de armazenamento durante as operações de restauração.

## Adicionar, remover ou modificar volumes de armazenamento com o RDS para SQL Server
<a name="SQLServer.ASV.Management"></a>

Você pode adicionar, modificar e remover volumes de armazenamento adicionais usando a AWS CLI ou o Console de gerenciamento da AWS. Todas as operações usam a operação de API `modify-db-instance` com o parâmetro `additional-storage-volumes`.

**Importante**  
Adicionar ou remover volumes de armazenamento adicionais cria uma ação pendente de backup e uma janela de bloqueio de restauração pontual. Essa janela é fechada quando o fluxo de trabalho de backup é concluído.

**Topics**
+ [Adicionar volumes de armazenamento](#SQLServer.ASV.Adding)
+ [Escalar volumes de armazenamento adicionais](#SQLServer.ASV.Scaling)
+ [Remover volumes de armazenamento adicionais](#SQLServer.ASV.Removing)

### Adicionar volumes de armazenamento
<a name="SQLServer.ASV.Adding"></a>

É possível adicionar até três volumes de armazenamento além da unidade `D:` padrão. Para adicionar um novo volume de armazenamento à sua instância do RDS para SQL Server, use o comando `modify-db-instance` com o parâmetro `additional-storage-volumes`.

O exemplo a seguir adiciona um novo volume de SSD de uso geral de 4 mil GiB (gp3) chamado `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
```

### Escalar volumes de armazenamento adicionais
<a name="SQLServer.ASV.Scaling"></a>

Você pode modificar qualquer configuração de armazenamento para seus volumes adicionais, exceto o tamanho do armazenamento. O exemplo a seguir modifica a configuração de IOPS do volume `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
```

### Remover volumes de armazenamento adicionais
<a name="SQLServer.ASV.Removing"></a>

Você não pode excluir o volume `D:`, mas pode excluir outros volumes de armazenamento quando estão vazios.

**Atenção**  
Antes de remover um volume de armazenamento adicional, garanta que nenhum arquivo de banco de dados esteja armazenado no volume.

O exemplo a seguir remove o volume `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
```

## Operações de restauração para volumes de armazenamento adicionais com o RDS para SQL Server
<a name="SQLServer.ASV.Restore"></a>

Quando você restaura seu banco de dados, pode adicionar volumes de armazenamento. Também é possível modificar as configurações de armazenamento dos volumes existentes.

**Topics**
+ [Restauração por snapshot](#SQLServer.ASV.SnapshotRestore)
+ [Recuperação para um ponto no tempo](#SQLServer.ASV.PITR)
+ [Restauração de banco de dados nativo](#SQLServer.ASV.NativeRestore)

### Restauração por snapshot
<a name="SQLServer.ASV.SnapshotRestore"></a>

Quando você restaura por meio de um snapshot, pode adicionar outros volumes de armazenamento ou modificar as configurações de IOPS, throughput e tipo de armazenamento dos volumes existentes.

O seguinte exemplo restaura uma instância de banco de dados por meio de um snapshot e modifica a configuração de IOPS para o volume `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}]'
```

### Recuperação para um ponto no tempo
<a name="SQLServer.ASV.PITR"></a>

Durante a recuperação para um ponto no tempo (PITR), é possível adicionar novos volumes de armazenamento com configurações personalizadas.

O seguinte exemplo realiza PITR e adiciona um novo volume de SSD de uso geral de 5 mil GiB (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}]'
```

### Restauração de banco de dados nativo
<a name="SQLServer.ASV.NativeRestore"></a>

Você pode usar o procedimento armazenado `rds_restore_database` para restaurar bancos de dados em volumes de armazenamento adicionais específicos. Dois novos parâmetros aceitam a seleção de volume:

**`data_file_volume`**  
Especifica a letra da unidade para arquivos de dados do banco de dados.

**`log_file_volume`**  
Especifica a letra da unidade para arquivos de log do banco de dados.

O exemplo a seguir restaura um banco de dados com arquivos de dados na unidade `H:` e arquivos de log na unidade `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:';
```

Se você não especificar parâmetros de volume nem especificar a unidade `D:` para ambos os parâmetros, os arquivos do banco de dados serão restaurados para a unidade `D:` padrão:

```
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 volumes de armazenamento adicionais com o RDS para SQL Server
<a name="SQLServer.ASV.UseCases"></a>

Volumes de armazenamento adicionais comportam vários cenários de gerenciamento de banco de dados. As seções a seguir descrevem casos de uso comuns e abordagens de implementação.

**Topics**
+ [Criar bancos de dados em volumes de armazenamento adicionais](#SQLServer.ASV.NewDatabase)
+ [Ampliar a capacidade de armazenamento](#SQLServer.ASV.ExtendStorage)
+ [Mover bancos de dados entre volumes](#SQLServer.ASV.MoveDatabase)
+ [Arquivar dados em um armazenamento econômico](#SQLServer.ASV.ArchiveData)

### Criar bancos de dados em volumes de armazenamento adicionais
<a name="SQLServer.ASV.NewDatabase"></a>

É possível criar bancos de dados diretamente em volumes de armazenamento adicionais utilizando instruções `CREATE DATABASE` padrão do SQL Server.

O seguinte exemplo cria um banco de dados com arquivos de dados na unidade `H:` e arquivos de log na unidade `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%
);
```

### Ampliar a capacidade de armazenamento
<a name="SQLServer.ASV.ExtendStorage"></a>

Quando a unidade `D:` padrão atinge sua capacidade máxima, você pode adicionar outros volumes de armazenamento, escalar volumes existentes e criar arquivos de dados ou arquivos de log nos novos volumes.

**Como ampliar a capacidade de armazenamento**

1. Adicione um volume de armazenamento à sua instância usando o comando `modify-db-instance`.

1. Adicione um novo arquivo de dados ao volume de armazenamento adicional:

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

### Mover bancos de dados entre volumes
<a name="SQLServer.ASV.MoveDatabase"></a>

Para mover um banco de dados para um volume diferente, use a abordagem de backup e restauração com os procedimentos armazenados `rds_backup_database` e `rds_restore_database`. Para obter mais informações, consulte [Usar o backup e restauração nativos](SQLServer.Procedural.Importing.Native.Using.md).

**Como mover um banco de dados para outro volume**

1. Faça backup do bancos de dados usando `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 o banco de dados no volume de destino:

   ```
   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. Remova o banco de dados da sua unidade antiga para liberar espaço. Para obter mais informações, consulte [Eliminar um banco de dados em uma instância de banco de dados do Amazon RDS para Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.DropMirrorDB.md).

### Arquivar dados em um armazenamento econômico
<a name="SQLServer.ASV.ArchiveData"></a>

Para tabelas particionadas, você pode arquivar dados antigos em volumes de armazenamento adicionais com características de performance diferentes.

**Como arquivar dados particionados**

1. Adicione um volume de armazenamento com o tipo e a capacidade de armazenamento adequados.

1. Crie um grupo de arquivos no volume de armazenamento 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. Mova as partições para o novo grupo de arquivos usando os comandos de gerenciamento de partições do SQL Server.

# Importar e exportar bancos de dados do SQL Server usando backup e restauração nativos
<a name="SQLServer.Procedural.Importing"></a>

O Amazon RDS suporta backup e restauração nativos para bancos de dados do Microsoft SQL Server usando arquivos de backup completo (arquivos .bak). Ao usar o RDS, acesse arquivos armazenados no Amazon S3, em vez de usar o sistema de arquivos local no servidor de banco de dados.

Por exemplo, crie um backup completo no servidor local, armazene-o no S3 e o restaure em uma instância de banco de dados do Amazon RDS existente. Também faça backups do RDS, armazene-os no S3 e os restaure sempre que quiser.

O backup e a restauração nativos estão disponíveis em todas as regiões da AWS para as instâncias de banco de dados Mono-AZ e multi-AZ, incluindo instâncias de banco de dados multi-AZ com réplicas de leitura. O backup e a restauração nativos estão disponíveis para todas as edições do Microsoft SQL Server compatíveis com o Amazon RDS.

O diagrama a seguir mostra os cenários compatíveis.

![\[Arquitetura de backup e restauração nativos\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/SQL-bak-file.png)


Usar arquivos .bak nativos para fazer backup e restaurar bancos de dados costuma ser a maneira mais rápida de se fazer backup e restauração de bancos de dados. Há muitas vantagens adicionais em se usar o backup e a restauração nativos. Por exemplo, você pode fazer o seguinte:
+ Migrar bancos de dados para ou de Amazon RDS.
+ Movimentação de bancos de dados entre instâncias de banco de dados do RDS for SQL Server.
+ Migrar dados, esquemas, procedimentos armazenados, disparadores e outros códigos de banco de dados dentro de um arquivo .bak.
+ Fazer backup e restauração de bancos de dados únicos, em vez de instâncias de banco de dados inteiras.
+ Criar cópias de bancos de dados para desenvolvimento, testes, treinamento e demonstrações.
+ Armazenar e transferir arquivos de backup com o Amazon S3, para uma camada adicional de proteção para recuperação de desastres.
+ Crie backups nativos de bancos de dados com Transparent Data Encryption (TDE) ativada e restaure esses backups em bancos de dados on-premises. Para obter mais informações, consulte [Suporte para criptografia de dados transparente no SQL Server](Appendix.SQLServer.Options.TDE.md).
+ Restaure backups nativos de bancos de dados on-premises que têm o TDE ativado para instâncias de banco de dados do RDS para SQL Server. Para obter mais informações, consulte [Suporte para criptografia de dados transparente no SQL Server](Appendix.SQLServer.Options.TDE.md).

**Contents**
+ [Limitações e recomendações](#SQLServer.Procedural.Importing.Native.Limitations)
+ [Configurar o backup e a restauração nativos](SQLServer.Procedural.Importing.Native.Enabling.md)
  + [Criar manualmente uma função do IAM para backup e restauração nativos](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM)
+ [Usar o backup e restauração nativos](SQLServer.Procedural.Importing.Native.Using.md)
  + [Realização de backup de um banco de dados](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Backup)
    + [Usage](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Backup.Syntax)
    + [Exemplos](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Backup.Examples)
  + [Restaurar um banco de dados](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Restore)
    + [Usage](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Syntax)
    + [Exemplos](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Examples)
  + [Restaurar um log](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Log)
    + [Usage](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Log.Syntax)
    + [Exemplos](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Log.Examples)
  + [Concluir uma restauração de banco de dados](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Finish.Restore)
    + [Usage](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Finish.Restore.Syntax)
  + [Como trabalhar com bancos de dados parcialmente restaurados](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Partially.Restored)
    + [Descartando um banco de dados parcialmente restaurado](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Drop.Partially.Restored)
    + [Restauração de snapshot e comportamento de recuperação em um ponto anterior no tempo para bancos de dados parcialmente restaurados](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Snapshot.Restore)
  + [Cancelar uma tarefa](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Cancel)
    + [Usage](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Cancel.Syntax)
  + [Acompanhar o status de tarefas](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Tracking)
    + [Usage](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Tracking.Syntax)
    + [Exemplos](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Tracking.Examples)
    + [Resposta](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Tracking.Response)
+ [Compactar arquivos de backup](SQLServer.Procedural.Importing.Native.Compression.md)
+ [Solução de problemas](SQLServer.Procedural.Importing.Native.Troubleshooting.md)
+ [Importar e exportar dados do SQL Server usando outros métodos](SQLServer.Procedural.Importing.Snapshots.md)
  + [Importar dados para o RDS para SQL Server usando um snapshot](SQLServer.Procedural.Importing.Snapshots.md#SQLServer.Procedural.Importing.Procedure)
    + [Importar os dados](SQLServer.Procedural.Importing.Snapshots.md#ImportData.SQLServer.Import)
      + [Assistente para gerar e publicar scripts](SQLServer.Procedural.Importing.Snapshots.md#ImportData.SQLServer.MgmtStudio.ScriptWizard)
      + [Assistente de importação e exportação](SQLServer.Procedural.Importing.Snapshots.md#ImportData.SQLServer.MgmtStudio.ImportExportWizard)
      + [Cópia em massa](SQLServer.Procedural.Importing.Snapshots.md#ImportData.SQLServer.MgmtStudio.BulkCopy)
  + [Exportar dados do RDS para SQL Server](SQLServer.Procedural.Importing.Snapshots.md#SQLServer.Procedural.Exporting)
    + [Assistente de importação e exportação do SQL Server](SQLServer.Procedural.Importing.Snapshots.md#SQLServer.Procedural.Exporting.SSIEW)
    + [Utilitário bcp e Assistente para gerar e publicar scripts do SQL Server](SQLServer.Procedural.Importing.Snapshots.md#SQLServer.Procedural.Exporting.SSGPSW)
+ [Usar o utilitário BCP do Linux para importar e exportar dados](SQLServer.Procedural.Importing.BCP.Linux.md)
  + [Pré-requisitos](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Prerequisites)
  + [Instalar ferramentas de linha de comandos do SQL Server no Linux](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Installing)
  + [Exportar dados do RDS para SQL Server](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Exporting)
    + [Sintaxe básica de exportação](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Exporting.Basic)
    + [Exemplo de exportação](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Exporting.Example)
  + [Importar dados para o RDS para SQL Server](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Importing)
    + [Sintaxe básica de importação](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Importing.Basic)
    + [Exemplo de importação](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Importing.Example)
  + [Opções comuns do BCP](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Options)
  + [Práticas recomendadas e considerações](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.BestPractices)
  + [Solução de problemas comuns do](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Troubleshooting)

## Limitações e recomendações
<a name="SQLServer.Procedural.Importing.Native.Limitations"></a>

A seguir estão algumas limitações para o uso de backup e restauração nativos: 
+ Você não pode fazer backup ou restaurar de um bucket do Amazon S3 em uma região da AWS diferente de sua instância de banco de dados do Amazon RDS.
+ Não é possível restaurar um banco de dados com o mesmo nome de um banco de dados já existente. Os nomes de banco de dados são exclusivos.
+ Recomendamos que não restaure backups de um fuso horário em um fuso horário diferente. Se você restaurar backups de um fuso horário em outro fuso horário, deverá auditar as consultas e aplicativos para verificar os efeitos da alteração do fuso horário.
+ O RDS para Microsoft SQL Server tem um limite de tamanho de 5 TB por arquivo. Para backups nativos de bancos de dados maiores, você pode usar o backup de vários arquivos.
+ O tamanho máximo do banco de dados que pode ser feito backup no S3 depende da memória, CPU, E/S e recursos de rede disponíveis na instância de banco de dados. Quanto maior o banco de dados, mais memória o agente de backup consome.
+ Não é possível fazer backup ou restaurar mais de 10 arquivos de backup ao mesmo tempo.
+ Um backup diferencial baseia-se no último backup completo. Para que os backups diferenciais funcionem, você não pode obter um snapshot entre o último backup completo e o backup diferencial. Se desejar um backup diferencial, mas houver um snapshot manual ou automatizado, faça outro backup completo antes de continuar com o backup diferencial.
+ Restaurações diferenciais e de log não são compatíveis com bancos de dados com arquivos que têm seu file\$1guid (identificador exclusivo) definido como `NULL`.
+ Você pode executar até duas tarefas de backup ou restauração ao mesmo tempo.
+ Não é possível executar backups de log nativo do SQL Server no Amazon RDS.
+ O RDS oferece suporte a restaurações nativas de bancos de dados de até 64 TiB. Restaurações nativas de bancos de dados no SQL Server Express Edition estão limitadas a 10 GB.
+ Não é possível fazer backup de um banco de dados durante a janela de manutenção, nem enquanto o Amazon RDS estiver no processo de tirar um snapshot do banco de dados. Se uma tarefa nativa de backup se sobrepor à janela diária de backup do RDS, a tarefa nativa de backup será cancelada.
+ Em instâncias de banco de dados multi-AZ, você só pode restaurar de forma nativa os bancos de dados com backup feito no modelo de recuperação completo.
+ Não há suporte para a chamada dos procedimentos do RDS para backup/restauração dentro de uma transação.
+ Use uma AWS KMS key de criptografia simétrica para criptografar seus backups. O Amazon RDS não oferece suporte para chaves do KMS assimétricas. Para obter mais informações, consulte [Criar chaves do KMS simétricas](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) no *Guia do desenvolvedor da AWS Key Management Service*.
+ Os arquivos de backup nativo são criptografados com a chave do KMS especificada usando o modo de criptografia "Encryption-Only". Ao restaurar arquivos de backup criptografados, saiba que eles foram criptografados com o modo de criptografia "Encryption-Only".
+ Não é possível restaurar um banco de dados que contenha um grupo de arquivos FILESTREAM.
+ A criptografia do lado do servidor do Amazon S3 com o AWS KMS (SSE-KMS) é aceita por meio da configuração de criptografia padrão do bucket do S3 quando você transmite o `@enable_bucket_default_encryption=1` para o procedimento armazenado de backup. Por padrão, a restauração aceita a criptografia do lado do servidor do objeto do S3.

  Quando você fornece uma chave do KMS a um procedimento armazenado, quaisquer restaurações e backups nativos são criptografados e descriptografados no lado do cliente com a chave do KMS. A AWS armazena os backups no bucket do S3 com SSE-S3 quando `@enable_bucket_default_encryption=0` ou com a chave padrão configurada do seu bucket do S3 quando `@enable_bucket_default_encryption=1`.
+ Quando você usa pontos de acesso do S3, o ponto de acesso não pode ser configurado para usar uma VPC interna do RDS.
+ Para obter o melhor desempenho, recomendamos usar buckets de diretório ou pontos de acesso para buckets de diretório, caso estejam disponíveis na sua região.

Se o banco de dados estiver offline enquanto o arquivo de backup for criado, copiado e restaurado, recomendamos que você use o backup e a restauração nativos para migrar seu banco de dados para o RDS. Se o banco de dados on-premises não puder ficar offline, recomendamos que você use o AWS Database Migration Service para migrar seu banco de dados para o Amazon RDS. Para obter mais informações, consulte [O que é o AWS Database Migration Service?](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) 

O backup e a restauração nativos não se destinam a substituir os recursos de recuperação de dados do recurso de cópia de snapshot entre regiões. Recomendamos que você use uma cópia do snapshot para copiar o snapshot do banco de dados em outra região da AWS para recuperação de desastres entre regiões no Amazon RDS. Para obter mais informações, consulte [Copiar um snapshot de banco de dados para o Amazon RDS](USER_CopySnapshot.md).

# Configurar o backup e a restauração nativos
<a name="SQLServer.Procedural.Importing.Native.Enabling"></a>

Para configurar o backup e a restauração nativos, você precisará de três componentes:

1. Um bucket do Amazon S3 para armazenar seus arquivos de backup.

   É necessário ter um bucket do S3 para usar nos arquivos de backup e fazer upload dos backups que deseja migrar para o RDS. Se você já tiver um bucket do Amazon S3, você pode usá-lo. Do contrário, [ crie um bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingaBucket.html). Como alternativa, opte por criar um novo bucket ao adicionar a opção `SQLSERVER_BACKUP_RESTORE` usando o Console de gerenciamento da AWS.

   Para obter informações sobre como usar o S3, consulte o [Guia do usuário do Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/).

1. Uma função do AWS Identity and Access Management (IAM) para acessar o bucket.

   Se você já tiver uma função do IAM, você pode usá-la. Você pode optar por criar uma nova função do IAM ao adicionar a opção `SQLSERVER_BACKUP_RESTORE` usando o Console de gerenciamento da AWS. Você também pode criar uma nova manualmente.

   Se você quiser criar uma nova função do IAM manualmente, siga a abordagem discutida na próxima seção. Faça o mesmo se quiser associar relações de confiança e políticas de permissões a uma função existente do IAM.

1. A opção `SQLSERVER_BACKUP_RESTORE` adicionada a um grupo de opções em sua instância de banco de dados.

   Para habilitar o backup e restauração nativos em sua instância de banco de dados, adicione a opção `SQLSERVER_BACKUP_RESTORE` a um grupo de opções em sua instância de banco de dados. Para mais informações e instruções, consulte [Suporte para backup e restauração nativos no SQL Server](Appendix.SQLServer.Options.BackupRestore.md).

## Criar manualmente uma função do IAM para backup e restauração nativos
<a name="SQLServer.Procedural.Importing.Native.Enabling.IAM"></a>

Se você quiser criar manualmente uma nova função do IAM para usar com backup e restauração nativos, poderá fazê-lo. Nesse caso, você criará uma função para delegar permissões do serviço do Amazon RDS ao seu bucket do Amazon S3. Ao criar uma função do IAM, associe uma relação de fidedignidade e uma política de permissões. A relação de confiança permite que o RDS assuma essa função. A política de permissões define as ações que essa função pode executar. Para obter mais informações sobre como criar a função, consulte [Criar uma função para delegar permissões a um AWSserviço da ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html).

Para o recurso de backup e restauração nativo, use políticas de confiança e permissões semelhantes aos exemplos nesta seção. No exemplo a seguir, usamos o nome principal do serviço `rds.amazonaws.com` como um alias para todas as contas de serviço. Em outros exemplos, especificamos um nome de recurso da Amazon (ARN) para identificar outra conta, usuário ou função para a qual estejamos concedendo acesso na política de confiança.

Recomendamos usar as chaves de contexto de condição global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) e [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) em relações baseadas em recursos para limitar as permissões do serviço a um recurso específico. Essa é a maneira mais eficiente de se proteger contra o [problema "confused deputy"](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html).

Você pode usar as duas chaves de contexto de condição global e fazer com que o valor `aws:SourceArn` contenha o ID da conta. Nesses casos, verifique se o valor `aws:SourceAccount` e a conta no `aws:SourceArn` usa o mesmo ID de conta quando eles são usados na mesma instrução.
+ Use `aws:SourceArn` se quiser acesso entre serviços para um único recurso.
+ Use `aws:SourceAccount` se você quiser permitir que qualquer recurso nessa conta seja associado ao uso entre serviços.

Na relação de confiança, certifique-se de usar a chave de contexto de condição global `aws:SourceArn` com o ARN completo dos recursos que acessam a função. Para backup e restauração nativos, certifique-se de incluir o grupo de opções de banco de dados e as instâncias de banco de dados, conforme mostrado no exemplo a seguir.

**Example de relação de confiança com a chave de contexto de condição global para backup e restauração nativos**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "rds.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": [
                        "arn:aws:rds:Region:0123456789:db:db_instance_identifier",
                        "arn:aws:rds:Region:0123456789:og:option_group_name"
                    ],
                    "aws:SourceAccount": "0123456789"
                }
            }
        }
    ]
}
```

O exemplo a seguir usa um ARN para especificar um recurso. Para obter mais informações sobre como usar ARNs, consulte [Nomes de recurso da Amazon (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). 

**Example de política de permissões para fazer backup e restauração nativos sem suporte de criptografia**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
        "Effect": "Allow",
        "Action":
            [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
        },
        {
        "Effect": "Allow",
        "Action":
            [
                "s3:GetObjectAttributes",
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload"
            ],
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
    ]
}
```

**Example política de permissões para fazer backup e restauração nativos com suporte de criptografia**  
Se quiser criptografar seus arquivos de backup, inclua uma chave de criptografia em sua política de permissões. Para obter mais informações sobre as chaves de criptografia, consulte [Getting started](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html) (Conceitos básicos) no *Guia do desenvolvedor do AWS Key Management Service*.  
É necessário usar uma chave do KMS de criptografia simétrica para criptografar seus backups. O Amazon RDS não oferece suporte para chaves do KMS assimétricas. Para obter mais informações, consulte [Criar chaves do KMS simétricas](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) no *Guia do desenvolvedor da AWS Key Management Service*.  
A função do IAM também deve ser um usuário de chave e administrador de chave para a chave do KMS, ou seja, ela deve ser especificada na política de chaves. Para obter mais informações, consulte [Criar chaves do KMS simétricas](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) no *Guia do desenvolvedor da AWS Key Management Service*.  
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessToKey",
      "Effect": "Allow",
      "Action": [
        "kms:DescribeKey",
        "kms:GenerateDataKey",
        "kms:Encrypt",
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id"
    },
    {
      "Sid": "AllowAccessToS3",
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
    },
    {
      "Sid": "GetS3Info",
      "Effect": "Allow",
      "Action": [
        "s3:GetObjectAttributes",
        "s3:GetObject",
        "s3:PutObject",
        "s3:ListMultipartUploadParts",
        "s3:AbortMultipartUpload"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
    }
  ]
}
```

**Example política de permissões para backup e restauração nativos usando pontos de acesso sem suporte à criptografia**  
As ações necessárias para usar os pontos de acesso do S3 são as mesmas dos buckets do S3. O caminho do recurso é atualizado para corresponder ao padrão do ARN do ponto de acesso do S3.  
Os pontos de acesso devem ser configurados para usar a **origem da rede: Internet**, pois o RDS não publica VPCs privadas. O tráfego do S3 das instâncias do RDS não passa pela Internet pública, pois passa por VPCs privadas.  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
                ],
            "Resource": [
            "arn:aws:s3:us-east-1:111122223333:accesspoint/amzn-s3-demo-ap",
            "arn:aws:s3:::underlying-bucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObjectAttributes",
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload"
                ],
                "Resource": [
                "arn:aws:s3:us-east-1:111122223333:accesspoint/amzn-s3-demo-ap/*",
                    "arn:aws:s3:::underlying-bucket/*"
                    ]
                }
            ]   
}
```

**Example : política de permissões para backup e restauração nativos usando pontos de acesso para buckets de diretório sem suporte a criptografia**  
Como os buckets de diretório usam um [mecanismo de autorização baseado em sessão](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-authenticating-authorizing.html) diferente dos buckets de uso geral, a única permissão necessária para a restauração de backup nativa é a “s3express:CreateSession” em nível de bucket. Para configurar o acesso em nível de objeto, é necessário usar [pontos de acesso para buckets de diretório](https://docs.aws.amazon.com//AmazonS3/latest/userguide/access-points-directory-buckets-policies.html).  
Os pontos de acesso devem ser configurados para usar a **origem da rede: Internet**, pois o RDS não publica VPCs privadas. O tráfego do S3 das instâncias do RDS não passa pela Internet pública, pois passa por VPCs privadas.  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
        "Effect": "Allow",
        "Action": "s3express:CreateSession",
        "Resource": 
            [
                "arn:aws:s3express:us-east-1:111122223333:accesspoint/amzn-s3-demo-accesspoint--use1-az6--xa-s3",
                "arn:aws:s3express:us-east-1:111122223333:bucket/amzn-s3-demo-bucket--use1-az6--x-s3"
            ]
        }
    ]
}
```

# Usar o backup e restauração nativos
<a name="SQLServer.Procedural.Importing.Native.Using"></a>

Depois de habilitar e configurar o backup e a restauração nativos, você pode começar a usá-los. Primeiro, conecte-se ao banco de dados do Microsoft SQL Server e chame um procedimento armazenado do Amazon RDS para fazer o trabalho. Para obter instruções sobre como se conectar ao banco de dados, consulte [Conectar-se à instância de banco de dados do Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md). 

Alguns dos procedimentos armazenados exigem que você forneça um nome de recurso da Amazon (ARN) ao bucket e arquivo do Amazon S3. O formato do ARN é `arn:aws:s3:::bucket_name/file_name.extension`. O Amazon S3 não exige um número de conta ou região da AWS nos ARNs.

Se você também fornecer uma chave do KMS opcional, o formato do ARN da chave será `arn:aws:kms:region:account-id:key/key-id`. Para obter mais informações, consulte [Nomes de recurso da Amazon (ARNs) e namespaces de serviço da AWS](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). É necessário usar uma chave do KMS de criptografia simétrica para criptografar seus backups. O Amazon RDS não oferece suporte para chaves do KMS assimétricas. Para obter mais informações, consulte [Criar chaves do KMS simétricas](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) no *Guia do desenvolvedor da AWS Key Management Service*.

**nota**  
Independentemente de você usar ou não uma chave do KMS, as tarefas nativas de backup e restauração habilitam a criptografia Advanced Encryption Standard (AES) de 256 bits no lado do servidor por padrão por meio da SSE-S3 para arquivos carregados no S3. A transmissão de `@enable_bucket_default_encryption=1` para o procedimento armazenado de backup usa a chave de criptografia padrão configurada do bucket do S3.

Para instruções sobre como chamar cada procedimento armazenado, consulte os tópicos a seguir:
+ [Realização de backup de um banco de dados](#SQLServer.Procedural.Importing.Native.Using.Backup)
+ [Restaurar um banco de dados](#SQLServer.Procedural.Importing.Native.Using.Restore)
+ [Restaurar um log](#SQLServer.Procedural.Importing.Native.Restore.Log)
+ [Concluir uma restauração de banco de dados](#SQLServer.Procedural.Importing.Native.Finish.Restore)
+ [Como trabalhar com bancos de dados parcialmente restaurados](#SQLServer.Procedural.Importing.Native.Partially.Restored)
+ [Cancelar uma tarefa](#SQLServer.Procedural.Importing.Native.Using.Cancel)
+ [Acompanhar o status de tarefas](#SQLServer.Procedural.Importing.Native.Tracking)

## Realização de backup de um banco de dados
<a name="SQLServer.Procedural.Importing.Native.Using.Backup"></a>

Para fazer backup de seu banco de dados, use o procedimento armazenado `rds_backup_database`.

**nota**  
Você não pode fazer backup de um banco de dados durante a janela de manutenção ou enquanto o Amazon RDS está tirando um snapshot. 

### Usage
<a name="SQLServer.Procedural.Importing.Native.Backup.Syntax"></a>

```
exec msdb.dbo.rds_backup_database
	@source_db_name='database_name',
	@s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name.extension',
	[@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'],	
	[@overwrite_s3_backup_file=0|1],
	[@block_size=512|1024|2048|4096|8192|16384|32768|65536],
        [@max_transfer_size=n],
        [@buffer_count=n],
	[@type='DIFFERENTIAL|FULL'],
	[@number_of_files=n],
	[@enable_bucket_default_encryption=0|1];
```

Os seguintes parâmetros são obrigatórios:
+ `@source_db_name` – o nome do banco de dados do qual deve ser feito backup
+ `@s3_arn_to_backup_to`: o ARN que indica o bucket do Amazon S3, o ponto de acesso, o bucket de diretório ou o ponto de acesso para o bucket de diretório a ser usado no backup e o nome do arquivo de backup.

  O arquivo pode ter qualquer extensão, mas a extensão `.bak` costuma ser usada. Observe que os ARNs dos pontos de acesso devem ter o formato`arn:aws:s3:us-east-1:111122223333:access-point-name/object/key`.

Os seguintes parâmetros são opcionais:
+ `@kms_master_key_arn`: o ARN da chave do KMS simétrica a ser usada para criptografar o item.
  + Não é possível usar a chave de criptografia padrão. Se você usar a chave padrão, não será feito backup do banco de dados.
  +  Se você não especificar um identificador de chave KMS, o arquivo de backup não será criptografado. Para ter mais informações, consulte [Criptografar recursos do Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Encryption.html).
  + Quando você especifica uma chave do KMS, é usada a criptografia no lado do cliente.
  + O Amazon RDS não oferece suporte para chaves do KMS assimétricas. Para obter mais informações, consulte [Criar chaves do KMS simétricas](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) no *Guia do desenvolvedor da AWS Key Management Service*.
+ `@overwrite_s3_backup_file` – um valor que indica se deseja substituir um arquivo de backup existente.
  + `0` – não substitui um arquivo existente. Esse valor é o padrão.

    Definir `@overwrite_s3_backup_file` como 0 retornará um erro se o arquivo já existir.
  + `1` – substitui um arquivo existente que tenha o nome especificado, ainda que ele não seja um arquivo de backup.
+ `@type` – o tipo de backup.
  + `DIFFERENTIAL` – faz backup diferencial.
  + `FULL` – faz backup completo. Esse valor é o padrão.

  Um backup diferencial baseia-se no último backup completo. Para que os backups diferenciais funcionem, você não pode obter um snapshot entre o último backup completo e o backup diferencial. Se desejar um backup diferencial, mas houver um snapshot, faça outro backup completo antes de continuar com o backup diferencial.

  É possível procurar o último backup ou snapshot completo usando o seguinte exemplo de consulta SQL:

  ```
  select top 1
  database_name
  , 	backup_start_date
  , 	backup_finish_date
  from    msdb.dbo.backupset
  where   database_name='mydatabase'
  and     type = 'D'
  order by backup_start_date desc;
  ```
+ `@number_of_files` – O número de arquivos em que o backup será dividido (em blocos). O número máximo é 10.
  + O backup de vários arquivos é compatível com backups completos e diferenciais.
  + Se você inserir um valor de 1 ou omitir o parâmetro, um único arquivo de backup será criado.

  Forneça o prefixo que os arquivos têm em comum e depois o sufixo com um asterisco (`*`). O asterisco pode estar em qualquer lugar na parte *file\$1name* do ARN do S3. O asterisco é substituído por uma série de strings alfanuméricas nos arquivos gerados, começando com `1-of-number_of_files`.

  Por exemplo, se os nomes de arquivo no ARN do S3 forem `backup*.bak` e você definir `@number_of_files=4`, os arquivos de backup gerados serão `backup1-of-4.bak`, `backup2-of-4.bak`, `backup3-of-4.bak` e `backup4-of-4.bak`.
  + Se algum dos nomes de arquivo já existir e `@overwrite_s3_backup_file` for 0, um erro será retornado.
  + Os backups de vários arquivos só podem ter um asterisco na parte *file\$1name* do ARN do S3.
  + Os backups de arquivo único podem ter qualquer número de asteriscos na parte *file\$1name* do ARN do S3. Os asteriscos não são removidos do nome do arquivo gerado.
+ `@block_size`: tamanho do bloco (em bytes) especificando o tamanho do bloco físico para operações de backup. Os valores válidos são 512, 1.024, 2.048, 4.096, 8.192, 16.384, 32.768 e 65.536
+ `@max_transfer_size`: o tamanho máximo de transferência indica o limite máximo do volume de dados (em bytes) transmitido por operação de E/S durante o processo de backup. Os valores válidos são múltiplos de 65536 bytes (64 KB) até 4194304 bytes (4 MB). 
+ `@buffer_count`: número total de buffers de E/S a serem usados no processo de backup.
+ `@enable_bucket_default_encryption`: um valor que indica se a configuração de criptografia padrão do bucket do S3 deve ser usada para criptografia do lado do servidor no S3. Os buckets de diretório sempre usam a configuração de criptografia padrão do bucket, independentemente dessa configuração.
  + `0`: a criptografia do lado do servidor usa o Advanced Encryption Standard (AES) de 256 bits por meio da SSE-S3.
  + `1`: a criptografia do lado do servidor usa a [criptografia padrão](https://docs.aws.amazon.com//AmazonS3/latest/userguide/bucket-encryption.html) configurada do bucket do S3. 

### Exemplos
<a name="SQLServer.Procedural.Importing.Native.Backup.Examples"></a>

**Example de backup diferencial**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup1.bak',
@overwrite_s3_backup_file=1,
@type='DIFFERENTIAL';
```

**Example de backup completo com criptografia do lado do cliente**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup1.bak',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE',
@overwrite_s3_backup_file=1,
@type='FULL';
```

**Example de backup de vários arquivos**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@number_of_files=4;
```

**Example de backup diferencial de vários arquivos**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@type='DIFFERENTIAL',
@number_of_files=4;
```

**Example de backup de vários arquivos com criptografia**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE',
@number_of_files=4;
```

**Example de backup de vários arquivos com substituição do S3**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@overwrite_s3_backup_file=1,
@number_of_files=4;
```

**Example de backup com tamanho de bloco**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@block_size=512;
```

**Example de backup de vários arquivos com `@max_transfer_size` e `@buffer_count`**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@number_of_files=4,
@max_transfer_size=4194304,
@buffer_count=10;
```

**Example de backup de arquivo único com o parâmetro @number\$1of\$1files**  
Este exemplo gera um arquivo de backup chamado `backup*.bak`.  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@number_of_files=1;
```

**Example de backup completo com criptografia do lado do servidor**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@overwrite_s3_backup_file=1,
@type='FULL',
@enable_bucket_default_encryption=1;
```

**Example de backup completo usando um ponto de acesso**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point/object/backup1.bak',
@overwrite_s3_backup_file=1,
@type='FULL';
```

**Example de backup completo usando um ponto de acesso para um bucket de diretório**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3express:us-east-1:123456789012:accesspoint/my-access-point--use1-az6--xa-s3/object/backup1.bak',
@overwrite_s3_backup_file=1,
@type='FULL';
```

## Restaurar um banco de dados
<a name="SQLServer.Procedural.Importing.Native.Using.Restore"></a>

Para fazer restaurar seu banco de dados, chame o procedimento armazenado `rds_restore_database`. O Amazon RDS cria um snapshot inicial do banco de dados após a conclusão da tarefa de restauração, e o banco de dados é aberto.

### Usage
<a name="SQLServer.Procedural.Importing.Native.Restore.Syntax"></a>

```
exec msdb.dbo.rds_restore_database
	@restore_db_name='database_name',
	@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name.extension',
	@with_norecovery=0|1,
	[@keep_cdc=0|1],
	[@data_file_volume='D:|H:|I:|J:'],
	[@log_file_volume='D:|H:|I:|J:'],
	[@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'],
        [@block_size=512|1024|2048|4096|8192|16384|32768|65536],
        [@max_transfer_size=n],
        [@buffer_count=n],
	[@type='DIFFERENTIAL|FULL'];
```

Os seguintes parâmetros são obrigatórios:
+ `@restore_db_name` – o nome do banco de dados a ser restaurado. Os nomes de banco de dados são exclusivos. Não é possível restaurar um banco de dados com o mesmo nome de um banco de dados já existente.
+ `@s3_arn_to_restore_from` – o ARN que indica o prefixo do Amazon S3 e os nomes dos arquivos de backup usados para restaurar o banco de dados.
  + Para o backup de um único arquivo, forneça o nome inteiro do arquivo.
  + Para um backup de vários arquivos, forneça o prefixo que os arquivos têm em comum e depois acrescente um sufixo com um asterisco (`*`).
    + Se estiver usando um bucket de diretório, o ARN deverá terminar com `/*` devido às [diferenças entre os buckets de diretório](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-differences.html).
  + Se `@s3_arn_to_restore_from` estiver vazio, a seguinte mensagem de erro será retornada: O prefixo do ARN do S3 não pode estar vazio.

O seguinte parâmetro é necessário para restaurações diferenciais, mas opcional para restaurações completas:
+ `@with_norecovery` – a cláusula de recuperação a ser usada para a operação de restauração.
  + Defina como `0` para restauração com RECOVERY. Nesse caso, o banco de dados está on-line após a restauração.
  + Defina como `1` para restauração com NORECOVERY. Nesse caso, o banco de dados permanece no estado RESTORING após a conclusão da tarefa de restauração. Com essa abordagem, você pode fazer restaurações diferenciais posteriores.
  + Para restaurações DIFFERENTIAL, especifique `0` ou `1`.
  + Para restaurações `FULL`, esse valor padrão é `0`.

Os seguintes parâmetros são opcionais:
+ `@keep_cdc`: indica se a configuração de Change Data Capture (CDC) deve ser retida no banco de dados restaurado. Defina como `1` para habilitar KEEP\$1CDC, `0` para desabilitar. O valor padrão é `0`.
+ `@data_file_volume`: especifica a letra da unidade para arquivos de dados do banco de dados. O valor padrão é `D:`.
+ `@log_file_volume`: especifica a letra da unidade para arquivos de log do banco de dados. O valor padrão é `D:`.
+ `@kms_master_key_arn`: se você criptografou o arquivo de backup, será a chave do KMS a ser usada para descriptografar o arquivo.

  Quando você especifica uma chave do KMS, é usada a criptografia no lado do cliente.
+ `@type` – o tipo de restauração. Os tipos válidos são `DIFFERENTIAL` e `FULL`. O valor padrão é `FULL`.
+ `@block_size`: tamanho do bloco (em bytes) especificando o tamanho do bloco físico para operações de backup. Os valores válidos são 512, 1.024, 2.048, 4.096, 8.192, 16.384, 32.768 e 65.536
+ `@max_transfer_size`: o tamanho máximo de transferência indica o limite máximo do volume de dados (em bytes) transmitido por operação de E/S durante o processo de backup. Os valores válidos são múltiplos de 65536 bytes (64 KB) até 4194304 bytes (4 MB). 
+ `@buffer_count`: número total de buffers de E/S a serem usados no processo de backup.

**nota**  
Para restaurações diferenciais, o banco de dados deve estar no estado RESTORING ou uma tarefa de restauração com NORECOVERY já deve existir.  
Você não pode restaurar backups diferenciais posteriores enquanto o banco de dados estiver on-line.  
Não é possível enviar uma tarefa de restauração para um banco de dados que já tenha uma tarefa de restauração pendente com RECOVERY.  
As restaurações completas com NORECOVERY e KEEP\$1CDC não são aceitas.  
Não há suporte para nenhuma restauração nativa em instâncias que têm réplicas de leitura entre regiões.  
Para configurações compatíveis, restaurar um banco de dados em uma instância multi-AZ com réplicas de leitura é semelhante a restaurar um banco de dados em uma instância multi-AZ. Você não precisa executar nenhuma ação adicional para restaurar um banco de dados em uma réplica.

### Exemplos
<a name="SQLServer.Procedural.Importing.Native.Restore.Examples"></a>

**Example de restauração de único arquivo**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
```

**Example de restauração de vários arquivos**  
Para evitar erros ao restaurar vários arquivos, certifique-se de que todos os arquivos de backup tenham o mesmo prefixo e que nenhum outro arquivo use esse prefixo.  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup*';
```

**Example de restauração completa de banco de dados com RECOVERY**  
Os três exemplos a seguir executam a mesma tarefa, restauração completa com RECOVERY.  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
```

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
[@type='DIFFERENTIAL|FULL'];
```

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='FULL',
@with_norecovery=0;
```

**Example de restauração completa de banco de dados com criptografia**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
```

**Example de restauração com tamanho de bloco**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@block_size=512;
```

**Example da restauração de vários arquivos com @max\$1transfer\$1size e @buffer\$1count**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup*',
@max_transfer_size=4194304,
@buffer_count=10;
```

**Example de restauração completa de banco de dados com NORECOVERY**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='FULL',
@with_norecovery=1;
```

**Example de restauração diferencial com NORECOVERY**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='DIFFERENTIAL',
@with_norecovery=1;
```

**Example de restauração diferencial com RECOVERY**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='DIFFERENTIAL',
@with_norecovery=0;
```

**Example de restauração completa de banco de dados com RECOVERY usando um ponto de acesso**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point/object/backup1.bak',
@with_norecovery=0;
```

**Example de restauração completa de banco de dados com KEEP-CDC**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@keep_cdc=1;
```

## Restaurar um log
<a name="SQLServer.Procedural.Importing.Native.Restore.Log"></a>

Para restaurar seu log, chame o procedimento armazenado `rds_restore_log`.

### Usage
<a name="SQLServer.Procedural.Importing.Native.Restore.Log.Syntax"></a>

```
exec msdb.dbo.rds_restore_log 
	@restore_db_name='database_name',
	@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/log_file_name.extension',
	[@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'],
	[@with_norecovery=0|1],
	[@keep_cdc=0|1],
	[@stopat='datetime'],
	[@block_size=512|1024|2048|4096|8192|16384|32768|65536],
        [@max_transfer_size=n],
        [@buffer_count=n];
```

Os seguintes parâmetros são obrigatórios:
+ `@restore_db_name` – o nome do banco de dados cujo log deve ser restaurado.
+ `@s3_arn_to_restore_from` – o ARN indicando o prefixo do Amazon S3 e o nome do arquivo de log usado para restaurar o log. O arquivo pode ter qualquer extensão, mas a extensão `.trn` costuma ser usada.

  Se `@s3_arn_to_restore_from` estiver vazio, a seguinte mensagem de erro será retornada: O prefixo do ARN do S3 não pode estar vazio.

Os seguintes parâmetros são opcionais:
+ `@keep_cdc`: indica se a configuração de Change Data Capture (CDC) deve ser retida no banco de dados restaurado. Defina como 1 para habilitar KEEP\$1CDC, 0 para desabilitar. O valor padrão é 0.
+ `@kms_master_key_arn`: se você criptografou o log, será a chave do KMS a ser usada para descriptografar o log.
+ `@with_norecovery` – a cláusula de recuperação a ser usada para a operação de restauração. Esse valor padrão é `1`.
  + Defina como `0` para restauração com RECOVERY. Nesse caso, o banco de dados está on-line após a restauração. Você não pode restaurar backups de log adicionais enquanto o banco de dados estiver on-line.
  + Defina como `1` para restauração com NORECOVERY. Nesse caso, o banco de dados permanece no estado RESTORING após a conclusão da tarefa de restauração. Com essa abordagem, você pode fazer restaurações de log posteriores.
+ `@stopat` – um valor que especifica que o banco de dados seja restaurado ao seu estado na data e hora especificadas (no formato de data e hora). Somente registros de log de transações gravados antes da data e hora especificadas são aplicados ao banco de dados.

  Se esse parâmetro não for especificado (é NULL), o log completo será restaurado.
+ `@block_size`: tamanho do bloco (em bytes) especificando o tamanho do bloco físico para operações de backup. Os valores válidos são 512, 1.024, 2.048, 4.096, 8.192, 16.384, 32.768 e 65.536
+ `@max_transfer_size`: o tamanho máximo de transferência indica o limite máximo do volume de dados (em bytes) transmitido por operação de E/S durante o processo de backup. Os valores válidos são múltiplos de 65536 bytes (64 KB) até 4194304 bytes (4 MB). 
+ `@buffer_count`: número total de buffers de E/S a serem usados no processo de backup.

**nota**  
Para restaurações de log, o banco de dados deve estar em um estado de restauração ou uma tarefa de restauração com NORECOVERY já deve existir.  
Você não pode restaurar backups de log enquanto o banco de dados estiver on-line.  
Não é possível enviar uma tarefa de restauração de log em um banco de dados que já tenha uma tarefa de restauração pendente com RECOVERY.

### Exemplos
<a name="SQLServer.Procedural.Importing.Native.Restore.Log.Examples"></a>

**Example de restauração de log**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
```

**Example de restauração de log com criptografia**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
```

**Example de restauração de log com NORECOVERY**  
Os dois exemplos a seguir executam a mesma tarefa, restauração de log com NORECOVERY.  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@with_norecovery=1;
```

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
```

**Example de restauração com tamanho de bloco**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@block_size=512;
```

**Example de restauração de log com RECOVERY**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@with_norecovery=0;
```

**Example de restauração de log com cláusula STOPAT**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@with_norecovery=0,
@stopat='2019-12-01 03:57:09';
```

**Example de restauração de log com KEEP\$1CDC**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@keep_cdc=1;
```

## Concluir uma restauração de banco de dados
<a name="SQLServer.Procedural.Importing.Native.Finish.Restore"></a>

Se a última tarefa de restauração no banco de dados tiver sido executada usando `@with_norecovery=1`, o estado do banco de dados será RESTORING. Abra esse banco de dados para operação normal usando o procedimento armazenado `rds_finish_restore`.

### Usage
<a name="SQLServer.Procedural.Importing.Native.Finish.Restore.Syntax"></a>

```
exec msdb.dbo.rds_finish_restore @db_name='database_name';
```

**nota**  
Para usar essa abordagem, o estado do banco de dados deve ser RESTORING sem nenhuma tarefa de restauração pendente.  
Para concluir a restauração do banco de dados, use o login mestre. Ou use o login do usuário que realizou a última restauração do banco de dados ou faça login com NORECOVERY.

## Como trabalhar com bancos de dados parcialmente restaurados
<a name="SQLServer.Procedural.Importing.Native.Partially.Restored"></a>

### Descartando um banco de dados parcialmente restaurado
<a name="SQLServer.Procedural.Importing.Native.Drop.Partially.Restored"></a>

Para descartar um banco de dados parcialmente restaurado (deixado no estado RESTORING), use o procedimento armazenado `rds_drop_database`.

```
exec msdb.dbo.rds_drop_database @db_name='database_name';
```

**nota**  
Não é possível enviar uma solicitação de banco de dados DROP para um banco de dados que já tenha uma tarefa de restauração pendente, tampouco concluir a tarefa de restauração.  
Para descartar o banco de dados, use o login mestre: Ou use o login do usuário que realizou a última restauração do banco de dados ou faça login com NORECOVERY.

### Restauração de snapshot e comportamento de recuperação em um ponto anterior no tempo para bancos de dados parcialmente restaurados
<a name="SQLServer.Procedural.Importing.Native.Snapshot.Restore"></a>

Os bancos de dados parcialmente restaurados na instância de origem (deixados no estado RESTORING) são descartados da instância de destino durante a restauração do snapshot e a recuperação em um ponto anterior no tempo.

## Cancelar uma tarefa
<a name="SQLServer.Procedural.Importing.Native.Using.Cancel"></a>

Para cancelar uma tarefa de backup ou restauração, chame o procedimento armazenado `rds_cancel_task`.

**nota**  
Você não pode cancelar uma tarefa FINISH\$1RESTORE.

### Usage
<a name="SQLServer.Procedural.Importing.Native.Cancel.Syntax"></a>

```
exec msdb.dbo.rds_cancel_task @task_id=ID_number;
```

O seguinte parâmetro é obrigatório:
+ `@task_id` – o ID da tarefa a ser cancelada. Você pode obter o ID da tarefa chamando `rds_task_status`. 

## Acompanhar o status de tarefas
<a name="SQLServer.Procedural.Importing.Native.Tracking"></a>

Para acompanhar o status de suas tarefas de backup e restauração, chame o procedimento armazenado `rds_task_status`. Se você não fornecer nenhum parâmetro, o procedimento armazenado retornará o status de todas as tarefas. O status das tarefas é atualizado aproximadamente a cada dois minutos. O histórico de tarefas é mantido por 36 dias.

### Usage
<a name="SQLServer.Procedural.Importing.Native.Tracking.Syntax"></a>

```
exec msdb.dbo.rds_task_status
	[@db_name='database_name'],
	[@task_id=ID_number];
```

Os seguintes parâmetros são opcionais: 
+ `@db_name` – o nome do banco de dados do qual o status será exibido.
+ `@task_id` – o nome do ID da tarefa do qual o status será exibido.

### Exemplos
<a name="SQLServer.Procedural.Importing.Native.Tracking.Examples"></a>

**Example de listagem do status de uma tarefa específica**  

```
exec msdb.dbo.rds_task_status @task_id=5;
```

**Example de listagem do status de uma tarefa e banco de dados específicos**  

```
exec msdb.dbo.rds_task_status
@db_name='my_database',
@task_id=5;
```

**Example de listagem de todas as tarefas e seus status em um banco de dados específico**  

```
exec msdb.dbo.rds_task_status @db_name='my_database';
```

**Example de listagem de todas as tarefas e seus status na instância atual**  

```
exec msdb.dbo.rds_task_status;
```

### Resposta
<a name="SQLServer.Procedural.Importing.Native.Tracking.Response"></a>

O procedimento armazenado `rds_task_status` retorna as colunas a seguir.


****  

| Coluna | Descrição | 
| --- | --- | 
| `task_id` |  O ID da tarefa.   | 
| `task_type` |  Tipo de tarefa, dependendo dos parâmetros de entrada, conforme segue: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.Native.Using.html) Amazon RDS cria um snapshot inicial do banco de dados após ser aberto mediante a conclusão das seguintes tarefas de restauração: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.Native.Using.html)  | 
| `database_name` |  O nome do banco de dados ao qual a tarefa está associada.   | 
| `% complete` |  O progresso da tarefa em valor de porcentagem.   | 
| `duration (mins)` |  A quantidade de tempo gasta na tarefa, em minutos.   | 
| `lifecycle` |  O status da tarefa. Os possíveis status são os seguintes:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.Native.Using.html)  | 
| `task_info` |  Informações adicionais sobre a tarefa.  No caso de erro durante o backup ou a restauração de um banco de dados, esta coluna contém as informações sobre o erro. Para obter uma lista de possíveis erros e estratégias de mitigação, consulte [Solução de problemas](SQLServer.Procedural.Importing.Native.Troubleshooting.md).   | 
| `last_updated` |  A data e hora em que o status da tarefa foi atualizado pela última vez. O status é atualizado a cada 5% de progresso.  | 
| `created_at` | A data e hora em que a tarefa foi criada. | 
| S3\$1object\$1arn | O ARN indicando o prefixo do Amazon S3 e o nome do arquivo que está sendo copiado ou restaurado. | 
| `overwrite_s3_backup_file` |  O valor do parâmetro `@overwrite_s3_backup_file` especificado ao chamar uma tarefa de backup. Para obter mais informações, consulte [Realização de backup de um banco de dados](#SQLServer.Procedural.Importing.Native.Using.Backup).  | 
| KMS\$1master\$1key\$1arn | O ARN para a chave do KMS usada para criptografia (para backup) e descriptografia (para restauração). | 
| filepath | Não aplicável a tarefas de backup e restauração nativos | 
| overwrite\$1file | Não aplicável a tarefas de backup e restauração nativos | 

# Compactar arquivos de backup
<a name="SQLServer.Procedural.Importing.Native.Compression"></a>

Para economizar espaço no bucket do Amazon S3, você pode compactar seus arquivos de backup. Para obter mais informações sobre como compactar arquivos de backup, consulte [Compactação de backup](https://msdn.microsoft.com/en-us/library/bb964719.aspx) na documentação da Microsoft. 

As seguintes edições de banco de dados oferecem suporte à compactação de arquivos de backup: 
+ Microsoft SQL Server Enterprise Edition 
+ Microsoft SQL Server Standard Edition 

Para verificar a opção de compactação dos arquivos de backup, execute o seguinte código:

```
1. exec rdsadmin.dbo.rds_show_configuration 'S3 backup compression';
```

Para ativar a compactação dos arquivos de backup, execute o seguinte código:

```
1. exec rdsadmin.dbo.rds_set_configuration 'S3 backup compression', 'true';
```

Para desativar a compactação dos arquivos de backup, execute o seguinte código: 

```
1. exec rdsadmin.dbo.rds_set_configuration 'S3 backup compression', 'false';
```

# Solução de problemas
<a name="SQLServer.Procedural.Importing.Native.Troubleshooting"></a>

Os problemas a seguir podem ocorrer ao usar o backup e a restauração nativos.


****  

| Problema | Sugestões de solução de problemas | 
| --- | --- | 
|  A opção de backup/restauração do banco de dados ainda não está habilitada ou está em processo de habilitação. Tente novamente mais tarde.  |  Verifique se você adicionou a opção `SQLSERVER_BACKUP_RESTORE` ao grupo de opções de banco de dados associado à sua instância de banco de dados. Para obter mais informações, consulte [Adicionar a opção de backup e restauração nativos](Appendix.SQLServer.Options.BackupRestore.md#Appendix.SQLServer.Options.BackupRestore.Add).  | 
|  A permissão EXECUTE foi negada no objeto “*rds\$1backup\$1database*”, no banco de dados “msdb” e no esquema “dbo”.  |  Verifique se você está usando o usuário mestre ao executar o procedimento armazenado. Se você encontrar esse erro mesmo depois de fazer login como usuário mestre, pode ser que as permissões do usuário administrador estejam desalinhadas. Para redefinir o usuário mestre, use o Console de gerenciamento da AWS. Consulte [Redefinir a associação ao perfil db\$1owner para o usuário principal no Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.ResetPassword.md).   | 
|  A permissão EXECUTE foi negada no objeto “*rds\$1restore\$1database*”, no banco de dados “msdb” e no esquema “dbo”.  |  Verifique se você está usando o usuário mestre ao executar o procedimento armazenado. Se você encontrar esse erro mesmo depois de fazer login como usuário mestre, pode ser que as permissões do usuário administrador estejam desalinhadas. Para redefinir o usuário mestre, use o Console de gerenciamento da AWS. Consulte [Redefinir a associação ao perfil db\$1owner para o usuário principal no Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.ResetPassword.md).   | 
|  Acesso negado  | O processo de backup ou restauração não pode acessar o arquivo de backup. Isso geralmente é causado por problemas como o seguinte: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.Native.Troubleshooting.html)  | 
|  O BANCO DE DADOS DE BACKUP COM COMPACTAÇÃO não tem suporte na edição <edition\$1name>  |  A compactação de arquivos de backup só tem suporte no Microsoft SQL Server Enterprise Edition e Standard Edition. Para obter mais informações, consulte [Compactar arquivos de backup](SQLServer.Procedural.Importing.Native.Compression.md).   | 
|  A chave <ARN> não existe  |  Você tentou restaurar um backup criptografado, mas não forneceu uma chave de criptografia válida. Confira sua chave de criptografia e tente novamente. Para obter mais informações, consulte [Restaurar um banco de dados](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Restore).   | 
|  Reemita a tarefa com o tipo correto e sobrescreva a propriedade  |  Se você tentar fazer backup de seu banco de dados e fornecer o nome de um arquivo que já existe, mas definir a propriedade de substituição como falso, a operação de salvar falhará. Para corrigir esse erro, forneça o nome de um arquivo que ainda não exista ou defina a propriedade de substituição como verdadeira. Para obter mais informações, consulte [Realização de backup de um banco de dados](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Backup). Há casos em que você desejava restaurar seu banco de dados, mas chamou o procedimento armazenado `rds_backup_database` por engano. Nesse caso, chame o procedimento armazenado `rds_restore_database`. Para obter mais informações, consulte [Restaurar um banco de dados](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Restore). Se você pretendia restaurar seu banco de dados e chamou o procedimento armazenado `rds_restore_database`, confira se você forneceu o nome de um arquivo de backup válido. Para obter mais informações, consulte [Usar o backup e restauração nativos](SQLServer.Procedural.Importing.Native.Using.md).  | 
|  Especifique um bucket que esteja na mesma região que a instância do RDS  |  Você não pode fazer backup ou restaurar de um bucket do Amazon S3 em uma região da AWS diferente de sua instância de banco de dados do Amazon RDS. Você pode usar a replicação do Amazon S3 para copiar o arquivo de backup na região da AWS correta. Para obter mais informações, consulte [Replicação entre regiões](https://docs.aws.amazon.com/AmazonS3/latest/userguide/crr.html) na documentação do Amazon S3.  | 
|  O bucket especificado não existe  | Confirme que você forneceu um o ARN correto para o bucket e o arquivo, no formato correto.  Para obter mais informações, consulte [Usar o backup e restauração nativos](SQLServer.Procedural.Importing.Native.Using.md).  | 
|  O usuário <ARN> não está autorizado a executar <kms action> no recurso <ARN>   |  Você solicitou uma operação criptografada, mas não forneceu as permissões de AWS KMS corretas;. Verifique se você tem as permissões corretas, ou adicione-as caso não tenha.  Para obter mais informações, consulte [Configurar o backup e a restauração nativos](SQLServer.Procedural.Importing.Native.Enabling.md).  | 
|  A tarefa Restore (Restaurar) não restaura mais de 10 arquivos de backup). Reduza o número de arquivos correspondentes e tente novamente.  |  Reduza o número de arquivos a partir dos quais você está tentando fazer a restauração. Você poderá tornar cada arquivo individual maior, se for necessário.   | 
|  O banco de dados “*database\$1name*” já existe. Dois bancos de dados que diferem apenas por caso ou acento não são permitidos. Escolha um nome de banco de dados diferente.  |  Não é possível restaurar um banco de dados com o mesmo nome de um banco de dados já existente. Os nomes de banco de dados são exclusivos.  | 

# Importar e exportar dados do SQL Server usando outros métodos
<a name="SQLServer.Procedural.Importing.Snapshots"></a>

Em seguida, você pode encontrar informações sobre o uso de snapshots para importar seus dados do Microsoft SQL Server para o Amazon RDS. Você também pode encontrar informações sobre o uso de snapshots para exportar seus dados de uma instância de banco de dados do RDS executando o SQL Server. 

Se o seu cenário oferecer suporte, é mais fácil mover dados dentro e fora do Amazon RDS usando a funcionalidade nativa de backup e restauração. Para obter mais informações, consulte[Importar e exportar bancos de dados do SQL Server usando backup e restauração nativos](SQLServer.Procedural.Importing.md) 

**nota**  
O Amazon RDS para Microsoft SQL Server não é compatível com a importação de dados no banco de dados do `msdb`. 

## Importar dados para o RDS para SQL Server usando um snapshot
<a name="SQLServer.Procedural.Importing.Procedure"></a>

**Para importar dados para uma instância de banco de dados SQL Server usando um snapshot**

1. Criar uma instância de banco de dados. Para obter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).

1. Evite que os aplicativos acessem a instância de banco de dados de destino. 

   Se você impedir o acesso à sua instância de banco de dados enquanto estiver importando dados, a transferência de dados será mais rápida. Além disso, você não precisa se preocupar com conflitos enquanto os dados estão sendo carregados se outros aplicativos não puderem gravar na instância de banco de dados ao mesmo tempo. Se algo der errado e você tiver que reverter para um snapshot anterior do banco de dados, as únicas alterações que você perderá serão os dados importados. Você poderá importar esses dados novamente depois de resolver o problema. 

   Para obter informações sobre como controlar o acesso à sua instância de banco de dados, consulte [Controlar acesso com grupos de segurança](Overview.RDSSecurityGroups.md). 

1. Crie um snapshot do banco de dados de destino. 

   Se o banco de dados de destino já estiver preenchido com dados, recomendamos que você tire um snapshot dele antes de importar os dados. Se algo der errado com a importação de dados ou se quiser descartar as alterações, você poderá restaurar o banco de dados para seu estado anterior usando esse snapshot. Para obter informações sobre snapshots de banco de dados, 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). 
**nota**  
Quando você tira um snapshot de banco de dados, as operações de E/S nesse banco de dados são suspensas por um momento (milissegundos) enquanto o backup está em andamento. 

1. Desabilite os backups automatizados no banco de dados de destino. 

   Desabilitar backups automatizados na instância de banco de dados de destino melhora a performance enquanto você estiver importando seus dados, pois o Amazon RDS não registra transações quando backups automáticos estão desabilitados. No entanto, existem algumas coisas a considerar. Backups automatizados são necessários para executar uma recuperação point-in-time. Portanto, você não poderá restaurar o banco de dados para um ponto específico ao mesmo tempo em que estiver importando dados. Além disso, todos os backups automatizados que foram criados na instância de banco de dados serão apagados, a menos que você opte por mantê-los. 

   Escolher manter os backups automatizados pode ajudar a proteger contra a exclusão acidental de dados. O Amazon RDS também salva as propriedades da instância de banco de dados juntamente com cada backup automatizado para facilitar a recuperação. Usar essa opção permite que você restaure uma instância de banco de dados excluída até um ponto específico no período de retenção do backup mesmo depois de excluí-la. Os backups automatizados são excluídos automaticamente ao final da janela de backup especificada, da mesma forma que para uma instância de banco de dados ativa. 

   Você ainda poderá usar os snapshots anteriores para recuperar o banco de dados, e todos os snapshots que tiverem sido tirados permanecem disponíveis. Para obter informações sobre backups automatizados, consulte [Introdução aos backups](USER_WorkingWithAutomatedBackups.md). 

1. Desabilite restrições de chaves estrangeiras, se aplicável. 

    Se você precisar desabilitar restrições de chaves estrangeiras, poderá fazê-lo com o seguinte script. 

   ```
   --Disable foreign keys on all tables
       DECLARE @table_name SYSNAME;
       DECLARE @cmd NVARCHAR(MAX);
       DECLARE table_cursor CURSOR FOR SELECT name FROM sys.tables;
       
       OPEN table_cursor;
       FETCH NEXT FROM table_cursor INTO @table_name;
       
       WHILE @@FETCH_STATUS = 0 BEGIN
         SELECT @cmd = 'ALTER TABLE '+QUOTENAME(@table_name)+' NOCHECK CONSTRAINT ALL';
         EXEC (@cmd);
         FETCH NEXT FROM table_cursor INTO @table_name;
       END
       
       CLOSE table_cursor;
       DEALLOCATE table_cursor;
       
       GO
   ```

1. Descarte índices, se aplicável. 

1. Desabilite triggers, se aplicável. 

    Se precisar desabilitar triggers, faça isso com o seguinte script. 

   ```
   --Disable triggers on all tables
       DECLARE @enable BIT = 0;
       DECLARE @trigger SYSNAME;
       DECLARE @table SYSNAME;
       DECLARE @cmd NVARCHAR(MAX);
       DECLARE trigger_cursor CURSOR FOR SELECT trigger_object.name trigger_name,
        table_object.name table_name
       FROM sysobjects trigger_object
       JOIN sysobjects table_object ON trigger_object.parent_obj = table_object.id
       WHERE trigger_object.type = 'TR';
       
       OPEN trigger_cursor;
       FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
       
       WHILE @@FETCH_STATUS = 0 BEGIN
         IF @enable = 1
            SET @cmd = 'ENABLE ';
         ELSE
            SET @cmd = 'DISABLE ';
       
         SET @cmd = @cmd + ' TRIGGER dbo.'+QUOTENAME(@trigger)+' ON dbo.'+QUOTENAME(@table)+' ';
         EXEC (@cmd);
         FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
       END
       
       CLOSE trigger_cursor;
       DEALLOCATE trigger_cursor;
       
       GO
   ```

1. Consulte a instância SQL Server de origem para quaisquer logons que você queira importar para a instância de banco de dados de destino. 

   O SQL Server armazena logons e senhas no banco de dados `master`. Como o Amazon RDS não concede acesso ao banco de dados `master`, não é possível importar logins e senhas diretamente para a sua instância de banco de dados de destino. Em vez disso, você deve consultar o banco de dados `master` na instância do SQL Server de origem para gerar um arquivo de linguagem de definição de dados (DDL). Esse arquivo deve incluir todos os logins e senhas que você queira adicionar à instância de banco de dados de destino. Esse arquivo também deve incluir associações de funções e permissões que você deseja transferir. 

   Para ter informações sobre como consultar o banco de dados `master`, consulte [ Transfer logins and passwords between instances of SQL Server](https://learn.microsoft.com/en-us/troubleshoot/sql/database-engine/security/transfer-logins-passwords-between-instances), na Base de Conhecimento da Microsoft.

   A saída do script é outro script que você pode executar na instância de banco de dados de destino. O script no artigo da base de dados de conhecimento possui o seguinte código: 

   ```
   p.type IN 
   ```

   Sem que `p.type` aparecer, use o seguinte código em vez disso: 

   ```
   p.type = 'S' 
   ```

1. Importe os dados usando o método em [Importar os dados](#ImportData.SQLServer.Import). 

1. Conceda acesso para aplicativos à instância de banco de dados de destino. 

   Quando a importação de dados estiver concluída, você poderá conceder acesso para a instância de banco de dados aos aplicativos que você foram bloqueados durante a importação. Para obter informações sobre como controlar o acesso à sua instância de banco de dados, consulte [Controlar acesso com grupos de segurança](Overview.RDSSecurityGroups.md). 

1. Habilite backups automatizados na instância de banco de dados de destino. 

   Para obter informações sobre backups automatizados, consulte [Introdução aos backups](USER_WorkingWithAutomatedBackups.md). 

1. Habilite restrições de chaves estrangeiras. 

    Se você tiver desabilitado restrições de chaves estrangeiras anteriormente, agora poderá habilitá-las com o seguinte script. 

   ```
   --Enable foreign keys on all tables
       DECLARE @table_name SYSNAME;
       DECLARE @cmd NVARCHAR(MAX);
       DECLARE table_cursor CURSOR FOR SELECT name FROM sys.tables;
       
       OPEN table_cursor;
       FETCH NEXT FROM table_cursor INTO @table_name;
       
       WHILE @@FETCH_STATUS = 0 BEGIN
         SELECT @cmd = 'ALTER TABLE '+QUOTENAME(@table_name)+' CHECK CONSTRAINT ALL';
         EXEC (@cmd);
         FETCH NEXT FROM table_cursor INTO @table_name;
       END
       
       CLOSE table_cursor;
       DEALLOCATE table_cursor;
   ```

1. Habilite índices, se aplicável.

1. Habilite triggers, se aplicável.

    Se você tiver desabilitado triggers anteriormente, agora poderá habilitá-los com o seguinte script. 

   ```
   --Enable triggers on all tables
       DECLARE @enable BIT = 1;
       DECLARE @trigger SYSNAME;
       DECLARE @table SYSNAME;
       DECLARE @cmd NVARCHAR(MAX);
       DECLARE trigger_cursor CURSOR FOR SELECT trigger_object.name trigger_name,
        table_object.name table_name
       FROM sysobjects trigger_object
       JOIN sysobjects table_object ON trigger_object.parent_obj = table_object.id
       WHERE trigger_object.type = 'TR';
       
       OPEN trigger_cursor;
       FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
       
       WHILE @@FETCH_STATUS = 0 BEGIN
         IF @enable = 1
            SET @cmd = 'ENABLE ';
         ELSE
            SET @cmd = 'DISABLE ';
       
         SET @cmd = @cmd + ' TRIGGER dbo.'+QUOTENAME(@trigger)+' ON dbo.'+QUOTENAME(@table)+' ';
         EXEC (@cmd);
         FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
       END
       
       CLOSE trigger_cursor;
       DEALLOCATE trigger_cursor;
   ```

### Importar os dados
<a name="ImportData.SQLServer.Import"></a>

O Microsoft SQL Server Management Studio é um cliente SQL Server gráfico que está incluído em todas as edições do Microsoft SQL Server, exceto a Express Edition. O SQL Server Management Studio Express está disponível na Microsoft como download gratuito. Para encontrar esse download, consulte o [site da Microsoft](https://www.microsoft.com/en-us/download). 

**nota**  
O SQL Server Management Studio está disponível apenas como um aplicativo baseado no Windows.

O SQL Server Management Studio inclui as seguintes ferramentas, que são úteis na importação de dados para uma instância de banco de dados SQL Server: 
+ Assistente para gerar e publicar scripts
+ Assistente de importação e exportação
+ Cópia em massa

#### Assistente para gerar e publicar scripts
<a name="ImportData.SQLServer.MgmtStudio.ScriptWizard"></a>

O Assistente para gerar e publicar scripts cria um script que contém o esquema de um banco de dados, os dados propriamente ditos ou ambos. Você pode gerar um script para um banco de dados na sua implantação local do SQL Server. Em seguida, pode executar esse script para transferir as informações que ele contém para uma instância de banco de dados do Amazon RDS. 

**nota**  
Para bancos de dados de 1 GiB ou maiores, é mais eficiente definir scripts apenas para o esquema de banco de dados. Depois, use o Assistente de importação e exportação ou o recurso de cópia em massa do SQL Server para transferir os dados.

Para obter informações detalhadas sobre o Assistente para gerar e publicar scripts, consulte a [documentação do Microsoft SQL Server](http://msdn.microsoft.com/en-us/library/ms178078%28v=sql.105%29.aspx). 

No assistente, preste especial atenção às opções avançadas na página **Definir Opções de Script** para garantir que tudo o que você deseja que o script inclua esteja selecionado. Por exemplo, por padrão, triggers de banco de dados não estão incluídos no script.

Quando o script for gerado e salvo, você poderá usar o SQL Server Management Studio para se conectar à sua instância de banco de dados e executar o script.

#### Assistente de importação e exportação
<a name="ImportData.SQLServer.MgmtStudio.ImportExportWizard"></a>

O Assistente de importação e exportação cria um pacote especial de Serviços de integração, que você pode usar para copiar dados do seu banco de dados SQL Server local para a instância de banco de dados de destino. O assistente pode filtrar quais tabelas e até mesmo quais tuplas em uma tabela são copiadas para a instância de banco de dados de destino.

**nota**  
O Assistente de importação e exportação funciona bem para conjuntos de dados grandes, mas talvez não seja a maneira mais rápida de exportar dados remotamente da sua implantação local. Para uma maneira ainda mais rápida, considere o recurso de cópia em massa do SQL Server.

Para obter informações detalhadas sobre o Assistente de importação e exportação, consulte a [documentação do Microsoft SQL Server](http://msdn.microsoft.com/en-us/library/ms140052%28v=sql.105%29.aspx).

No assistente, na página **Choose a Destination (Selecionar um destino)**, faça o seguinte:
+ Em **Server Name (Nome do servidor)**, digite o nome do endpoint da sua instância de banco de dados.
+ Para o modo de autenticação do servidor, escolha **Use SQL Server Authentication (Usar autenticação do SQL Server)**.
+ Em **User name (Nome do usuário)** e **Password (Senha)**, digite as credenciais do usuário mestre criado para a instância de banco de dados.

#### Cópia em massa
<a name="ImportData.SQLServer.MgmtStudio.BulkCopy"></a>

O recurso de cópia em massa do SQL Server é um meio eficiente de copiar dados de um banco de dados de origem para a sua instância de banco de dados. A cópia em massa grava os dados que você especifica em um arquivo de dados, como um arquivo ASCII. Você pode então executar cópias em massa novamente para gravar o conteúdo do arquivo na instância de banco de dados de destino. 

Esta seção usa o utilitário **bcp**, que está incluído em todas as edições do SQL Server. Para obter informações detalhadas sobre operações de importação e exportação em massa, consulte [a documentação do Microsoft SQL Server](http://msdn.microsoft.com/en-us/library/ms187042%28v=sql.105%29.aspx). 

**nota**  
Antes de usar a cópia em massa, você deve importar seu esquema de banco de dados para a instância de banco de dados de destino. O Assistente para gerar e publicar scripts, descrito anteriormente neste tópico, é uma excelente ferramenta para esse propósito. 

O comando a seguir se conecta à instância local do SQL Server. Ele gera um arquivo delimitado por tabulação de uma tabela especificada no diretório raiz C:\$1 da sua implantação SQL Server existente. A tabela é especificada pelo nome totalmente qualificado e o arquivo de texto tem o mesmo nome que a tabela que está sendo copiada. 

```
bcp dbname.schema_name.table_name out C:\table_name.txt -n -S localhost -U username -P password -b 10000 
```

O código anterior inclui as seguintes opções:
+ `-n` especifica que a cópia em massa usa os tipos de dados nativos dos dados a serem copiados.
+ `-S` especifica a instância SQL Server com a qual o utilitário *bcp* se conecta.
+ `-U` especifica o nome de usuário da conta que faz login na instância SQL Server.
+ `-P` especifica a senha para o usuário especificada por `-U`.
+ `-b` especifica o número de linhas por lote de dados importados.

**nota**  
Pode haver outros parâmetros importantes para a sua situação de importação. Por exemplo, talvez você precise do parâmetro `-E` que pertence a valores de identidade. Para obter mais informações; consulte a descrição completa da sintaxe da linha de comando para o utilitário **bcp** na [documentação do Microsoft SQL Server](http://msdn.microsoft.com/en-us/library/ms162802%28v=sql.105%29.aspx). 

Por exemplo, suponha que um banco de dados chamado `store`, que usa o esquema padrão, `dbo`, contém uma tabela chamada `customers`. A conta de usuário `admin`, com a senha `insecure`, copia 10.000 linhas da tabela `customers` para um arquivo chamado `customers.txt`. 

```
bcp store.dbo.customers out C:\customers.txt -n -S localhost -U admin -P insecure -b 10000 
```

Depois de gerar o arquivo de dados, você poderá fazer upload dos dados para a sua instância de banco de dados usando um comando semelhante. Antes disso, crie o banco de dados e o esquema na instância de banco de dados de destino. Em seguida, use o argumento `in` para especificar um arquivo de entrada em vez de `out` para especificar um arquivo de saída. Em vez de usar localhost para especificar a instância local SQL Server, especifique o endpoint da sua instância de banco de dados. Se você usar uma porta diferente de 1433, especifique isso também. O nome de usuário e a senha serão aqueles do usuário mestre e a senha da sua instância de banco de dados. A sintaxe é a seguinte. 

```
bcp dbname.schema_name.table_name 
					in C:\table_name.txt -n -S endpoint,port -U master_user_name -P master_user_password -b 10000
```

Para continuar com o exemplo anterior, suponha que o nome do usuário mestre seja `admin` e a senha seja `insecure`. O endpoint da instância de banco de dados é `rds.ckz2kqd4qsn1.us-east-1.rds.amazonaws.com`, e você usa a porta 4080. O comando é o seguinte. 

```
bcp store.dbo.customers in C:\customers.txt -n -S rds.ckz2kqd4qsn1.us-east-1.rds.amazonaws.com,4080 -U admin -P insecure -b 10000 
```

**nota**  
Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.

## Exportar dados do RDS para SQL Server
<a name="SQLServer.Procedural.Exporting"></a>

Você pode escolher uma das seguintes opções para exportar dados de uma instância de banco de dados RDS for SQL Server:
+ **Backup de banco de dados nativo usando um arquivo de backup completo (.bak)** – o uso de arquivos .bak para bancos de dados de backup é fortemente otimizado e geralmente é a maneira mais rápida de exportar dados. Para obter mais informações, consulte [Importar e exportar bancos de dados do SQL Server usando backup e restauração nativos](SQLServer.Procedural.Importing.md). 
+ **Assistente de importação e exportação do SQL Server** – para obter mais informações, consulte [Assistente de importação e exportação do SQL Server](#SQLServer.Procedural.Exporting.SSIEW). 
+ **Utilitário bcp e Assistente para gerar e publicar scripts do SQL Server** – para obter mais informações, consulte [Utilitário bcp e Assistente para gerar e publicar scripts do SQL Server](#SQLServer.Procedural.Exporting.SSGPSW). 

### Assistente de importação e exportação do SQL Server
<a name="SQLServer.Procedural.Exporting.SSIEW"></a>

Você pode usar o Assistente de importação e exportação do SQL Server para copiar uma ou mais tabelas, visualizações ou consultas da sua instância de banco de dados do RDS for SQL Server para outro armazenamento de dados. Essa será a melhor escolha se o armazenamento de dados de destino não for o SQL Server. Para obter mais informações, consulte [Assistente de importação e exportação do SQL Server](http://msdn.microsoft.com/en-us/library/ms141209%28v=sql.110%29.aspx) na documentação do SQL Server. 

O Assistente de importação e exportação do SQL Server está disponível como parte do Microsoft SQL Server Management Studio. Esse cliente SQL Server gráfico está incluído em todas as edições do Microsoft SQL Server, exceto a Express Edition. O SQL Server Management Studio está disponível apenas como um aplicativo baseado no Windows. O SQL Server Management Studio Express está disponível na Microsoft como download gratuito. Para encontrar esse download, consulte o [site da Microsoft](http://www.microsoft.com/en-us/search/Results.aspx?q=sql%20server%20management%20studio). 

**Para usar o Assistente de importação e exportação do SQL Server para exportar dados**

1. No SQL Server Management Studio, conecte-se à sua instância de banco de dados do RDS for SQL Server. Para obter detalhes sobre como fazer isso, consulte [Conectar-se à instância de banco de dados do Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md). 

1. No **Object Explorer (Navegador de objetos)**, expanda **Databases (Bancos de dados)**, abra o menu de contexto (botão direito do mouse) para o banco de dados de origem, escolha **Tasks (Tarefas)** e depois escolha **Export Data (Exportar dados)**. O assistente é exibido. 

1. Na página **Choose a Data Source (Selecionar uma fonte de dados)**, faça o seguinte:

   1. Em **Data source (Fonte de dados)**, selecione **SQL Server Native Client 11.0**. 

   1. Verifique se o campo **Server name** (Nome do servidor) mostra o endpoint da sua instância de banco de dados RDS for SQL Server.

   1. Selecione **Use SQL Server Authentication (Usar autenticação do SQL Server)**. Em **User name** (Nome do usuário) e **Password** (Senha), digite o nome do usuário mestre e a senha da instância do banco de dados.

   1. Verifique se a caixa **Database (Banco de dados)** mostra o banco de dados a partir do qual você deseja exportar dados.

   1. Escolha **Next (Próximo)**.

1. Na página **Choose a Destination (Selecionar um destino)**, faça o seguinte:

   1. Em **Destination (Destino)**, selecione **SQL Server Native Client 11.0**. 
**nota**  
Outras fontes de dados de destino estão disponíveis. Elas incluem provedores de dados .NET Framework, provedor de banco de dados OLE, provedores SQL Server Native Client, provedores ADO.NET, Microsoft Office Excel, Microsoft Office Access e a origem de arquivo simples. Se você optar por uma dessas fontes de dados, ignore o restante da etapa 4. Para obter detalhes sobre as informações de conexão a serem fornecidas a seguir, consulte [Escolher um destino](http://msdn.microsoft.com/en-us/library/ms178430%28v=sql.110%29.aspx), na documentação do SQL Server. 

   1. Para **Server name (Nome do servidor)**, digite o nome do servidor da instância de banco de dados SQL Server de destino. 

   1. Escolha o tipo de autenticação apropriado. Digite um nome de usuário e uma senha, se necessário. 

   1. Para **Database (Banco de dados)**, escolha o nome do banco de dados de destino ou escolha **New (Novo)** para criar um novo banco de dados para conter os dados exportados. 

      Se você escolher **New (Novo)**, consulte [Criar um banco de dados](http://msdn.microsoft.com/en-us/library/ms183323%28v=sql.110%29.aspx), na documentação do SQL Server, para obter detalhes sobre as informações de banco de dados que devem ser fornecidas.

   1. Escolha **Next (Próximo)**.

1. Na página **Table Copy or Query (Cópia ou consulta da tabela)**, escolha **Copy data from one or more tables or views (Copiar dados de uma ou mais tabelas ou visualizações)** ou **Write a query to specify the data to transfer (Gravar uma consulta para especificar os dados a serem transferidos)**. Escolha **Next (Próximo)**. 

1. Se você escolher **Write a query to specify the data to transfer (Gravar uma consulta para especificar os dados a serem transferidos)**, verá a página **Provide a Source Query (Fornecer uma consulta da fonte)**. Digite ou cole uma consulta SQL e escolha **Parse (Analisar)** para verificá-la. Quando a consulta for validada, escolha **Next (Próximo)**. 

1. Na página **Select Source Tables and Views (Selecionar tabelas e visualizações da fonte)**, faça o seguinte:

   1. Selecione as tabelas e as visualizações que você deseja exportar ou verifique se a consulta fornecida está selecionada.

   1. Escolha **Edit Mappings (Editar mapeamentos)** e especifique informações de mapeamento de banco de dados e colunas. Para obter mais informações, consulte [Mapeamentos de colunas](http://msdn.microsoft.com/en-us/library/ms189660%28v=sql.110%29.aspx) na documentação do SQL Server. 

   1. (Opcional) Para ver uma visualização dos dados a serem exportados, selecione a tabela, exibição ou consulta e escolha **Preview (Visualizar)**.

   1. Escolha **Next (Próximo)**.

1. Na página **Run Package (Executar pacote)**, verifique se a opção **Run immediately (Executar imediatamente)** está selecionada. Escolha **Next (Próximo)**. 

1. Na página **Complete the Wizard (Concluir o assistente)**, verifique se os detalhes da exportação de dados são os esperados. Escolha **Terminar**. 

1. Na página **The execution was successful (A execução foi bem-sucedida)**, escolha **Close (Fechar)**. 

### Utilitário bcp e Assistente para gerar e publicar scripts do SQL Server
<a name="SQLServer.Procedural.Exporting.SSGPSW"></a>

Você pode usar o Assistente para gerar e publicar scripts do SQL Server para criar scripts para um banco de dados inteiro ou apenas para objetos selecionados. Você pode executar esses scripts em uma instância de banco de dados SQL Server de destino para recriar os objetos com scripts. Em seguida, você pode usar o utilitário bcp para exportar em massa os dados dos objetos selecionados para a instância do banco de dados de destino. Essa escolha será melhor se você quiser mover um banco de dados inteiro (incluindo objetos que não sejam tabelas) ou grandes quantidades de dados entre duas instâncias de bancos de dados SQL Server. Para obter uma descrição completa da sintaxe da linha de comando do bcp, consulte [Utilitário bcp](http://msdn.microsoft.com/en-us/library/ms162802%28v=sql.110%29.aspx) na documentação do Microsoft SQL Server. 

O Assistente para gerar e publicar scripts do SQL Server está disponível como parte do Microsoft SQL Server Management Studio. Esse cliente SQL Server gráfico está incluído em todas as edições do Microsoft SQL Server, exceto a Express Edition. O SQL Server Management Studio está disponível apenas como um aplicativo baseado no Windows. O SQL Server Management Studio Express está disponível na Microsoft como [download gratuito](http://www.microsoft.com/en-us/search/Results.aspx?q=sql%20server%20management%20studio). 

**Para usar o Assistente para gerar e publicar scripts e o utilitário bcp do SQL Server para exportar dados**

1. No SQL Server Management Studio, conecte-se à sua instância de banco de dados do RDS for SQL Server. Para obter detalhes sobre como fazer isso, consulte [Conectar-se à instância de banco de dados do Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md). 

1. No **Object Explorer (Navegador de objetos)**, expanda o nó **Databases (Bancos de dados)** e selecione o banco de dados para o qual você deseja definir um script. 

1. Siga as instruções do [Assistente para gerar e publicar scripts](http://msdn.microsoft.com/en-us/library/bb895179%28v=sql.110%29.aspx) na documentação do SQL Server para criar um arquivo de script.

1. No SQL Server Management Studio, conecte-se à sua instância de banco de dados SQL Server de destino.

1. Com a instância de banco de dados SQL Server de destino selecionada no **Object Explorer** (Navegador de objetos), escolha **Open** (Abrir) no menu **File** (Arquivo), escolha **File** (Arquivo) e abra o arquivo de script. 

1. Se você tiver definido um script para o banco de dados inteiro, reveja a instrução CREATE DATABASE no script. Certifique-se de que o banco de dados esteja sendo criado no local e com os parâmetros desejados. Para obter mais informações, consulte [CREATE DATABASE](http://msdn.microsoft.com/en-us/library/ms176061%28v=sql.110%29.aspx) na documentação do SQL Server. 

1. Se você estiver criando usuários de banco de dados no script, verifique se há logins no servidor na instância de banco de dados de destino para esses usuários. Caso contrário, crie logins para esses usuários. Os comandos com scripts para criar os usuários do banco de dados falharão de outra forma. Para obter mais informações, consulte [Criar um login](http://msdn.microsoft.com/en-us/library/aa337562%28v=sql.110%29.aspx) na documentação do SQL Server.

1. Escolha **\$1Execute** no menu do SQL Editor para executar o arquivo de script e criar os objetos do banco de dados. Quando o script terminar, verifique se todos os objetos de banco de dados existem conforme o esperado.

1. Use o utilitário bcp para exportar dados da instância de banco de dados do RDS for SQL Server em arquivos. Abra um prompt de comando e digite o seguinte comando.

   ```
   bcp database_name.schema_name.table_name out data_file -n -S aws_rds_sql_endpoint -U username -P password
   ```

   O código anterior inclui as seguintes opções:
   + *table\$1name* é o nome de uma das tabelas criadas no banco de dados de destino e agora deseja preencher com dados. 
   + *data\$1file* é o caminho completo e o nome do arquivo de dados a ser criado.
   + `-n` especifica que a cópia em massa usa os tipos de dados nativos dos dados a serem copiados.
   + `-S` especifica a instância de banco de dados SQL Server da qual exportar.
   + `-U` especifica o nome de usuário a ser usado ao se conectar à instância de banco de dados do SQL Server.
   + `-P` especifica a senha para o usuário especificada por `-U`.

   O seguinte mostra um exemplo de comando . 

   ```
   bcp world.dbo.city out C:\Users\JohnDoe\city.dat -n -S sql-jdoe.1234abcd.us-west-2.rds.amazonaws.com,1433 -U JohnDoe -P ClearTextPassword
   ```

   Repita essa etapa até ter arquivos de dados para todas as tabelas que você deseja exportar. 

1. Prepare sua instância de banco de dados de destino para importação em massa de dados, seguindo as instruções em [Diretrizes básicas para dados de importação em massa](http://msdn.microsoft.com/en-us/library/ms189989%28v=sql.110%29.aspx), na documentação do SQL Server. 

1. Escolha um método de importação em massa a ser usado depois de considerar a performance e outras preocupações discutidas no tópico [Sobre operações de importação e exportação em massa](http://msdn.microsoft.com/en-us/library/ms187042%28v=sql.105%29.aspx), na documentação do SQL Server. 

1. Faça uma importação em massa dos dados dos arquivos de dados criados usando o utilitário bcp. Para fazer isso, siga as instruções em [Importar e exportar dados em massa usando o bcp (SQL Server)](http://msdn.microsoft.com/en-us/library/aa337544%28v=sql.110%29.aspx) ou em [Usar BULK INSERT ou OPENROWSET(BULK...) para importar dados para o SQL Server](http://msdn.microsoft.com/en-us/library/ms175915%28v=sql.110%29.aspx), na documentação do SQL Server, dependendo do que você decidiu na etapa 11. 

# Usar o utilitário BCP do Linux para importar e exportar dados
<a name="SQLServer.Procedural.Importing.BCP.Linux"></a>

O utilitário BCP (Bulk Copy Program) oferece uma maneira eficiente de transferir grandes quantidades de dados entre a instância de banco de dados do RDS para SQL Server e os arquivos de dados. Você pode usar o BCP em ambientes Linux para realizar operações de dados em massa, o que o torna útil para migração de dados, processos de ETL e transferências regulares de dados.

O BCP permite a importação de dados de arquivos para tabelas do SQL Server e a exportação de dados de tabelas do SQL Server para arquivos. Isso é particularmente eficaz para transferir dados estruturados em vários formatos, inclusive arquivos de texto delimitados.

## Pré-requisitos
<a name="SQLServer.Procedural.Importing.BCP.Linux.Prerequisites"></a>

Antes de usar o BCP com uma instância de banco de dados do RDS para SQL Server usando o Linux, verifique se você tem o seguinte:
+ Um ambiente Linux com conectividade de rede à instância de banco de dados do RDS para SQL Server.
+ Ferramentas de linha de comandos do Microsoft SQL Server instaladas no sistema Linux, como:
  + sqlcmd: ferramenta de consulta de linha de comandos do SQL Server
  + bcp: utilitário Bulk Copy Program
+ Credenciais válidas para a instância de banco de dados do RDS para SQL Server.
+ Acesso à rede configurado por meio de grupos de segurança para permitir conexões na porta do SQL Server (normalmente 1433).
+ Permissões de banco de dados apropriadas para as operações que você deseja realizar.

## Instalar ferramentas de linha de comandos do SQL Server no Linux
<a name="SQLServer.Procedural.Importing.BCP.Linux.Installing"></a>

Para usar o BCP no Linux, você precisa instalar as ferramentas de linha de comandos do Microsoft SQL Server. Para obter instruções detalhadas sobre instalação para sua distribuição Linux específica, consulte a seguinte documentação da Microsoft:
+ [Install sqlcmd and bcp the SQL Server command-line tools on Linux](https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools)
+ [bcp utility](https://docs.microsoft.com/en-us/sql/tools/bcp-utility): referência completa para o utilitário BCP

Após a instalação, confirme se as ferramentas estão disponíveis em seu PATH executando:

```
bcp -v
sqlcmd -?
```

## Exportar dados do RDS para SQL Server
<a name="SQLServer.Procedural.Importing.BCP.Linux.Exporting"></a>

Você pode usar o BCP para exportar dados da instância de banco de dados do RDS para SQL Server para arquivos no sistema Linux. Isso é útil para criar backups, analisar dados ou preparar dados para migração.

### Sintaxe básica de exportação
<a name="SQLServer.Procedural.Importing.BCP.Linux.Exporting.Basic"></a>

A sintaxe básica para exportar dados usando o BCP é:

```
bcp database.schema.table out output_file -S server_name -U username -P password [options]
```

Em que:
+ `database.schema.table`: o nome totalmente qualificado da tabela.
+ `output_file`: o caminho e o nome do arquivo de saída.
+ `server_name`: o endpoint do RDS para SQL Server.
+ `username`: o nome de usuário do banco de dados.
+ `password`: a senha do banco de dados.

### Exemplo de exportação
<a name="SQLServer.Procedural.Importing.BCP.Linux.Exporting.Example"></a>

O seguinte exemplo exporta dados de uma tabela denominada `customers` no banco de dados `sales`:

```
bcp sales.dbo.customers out /home/user/customers.txt \
    -S mydb.cluster-abc123.us-east-1.rds.amazonaws.com \
    -U admin \
    -P mypassword \
    -c \
    -t "|" \
    -r "\n"
```

Esse comando:
+ Exporta dados da tabela `customers`.
+ Salva a saída de `/home/user/customers.txt`.
+ Usa o formato de caracteres (`-c`).
+ Usa pipe (\$1) como delimitador de campo (`-t "|"`).
+ Usa nova linha como delimitador de linha (`-r "\n"`).

## Importar dados para o RDS para SQL Server
<a name="SQLServer.Procedural.Importing.BCP.Linux.Importing"></a>

Você pode usar o BCP para exportar dados de arquivos em seu sistema Linux para sua instância de banco de dados do RDS para SQL Server. Isso é útil para migração de dados, carregamento de dados de teste ou atualizações regulares de dados.

### Sintaxe básica de importação
<a name="SQLServer.Procedural.Importing.BCP.Linux.Importing.Basic"></a>

A sintaxe básica para exportar dados usando o BCP é:

```
bcp database.schema.table in input_file -S server_name -U username -P password [options]
```

Em que:
+ `database.schema.table`: o nome totalmente qualificado da tabela de destino.
+ `input_file`: o caminho e o nome do arquivo de entrada.
+ `server_name`: o endpoint do RDS para SQL Server.
+ `username`: o nome de usuário do banco de dados.
+ `password`: a senha do banco de dados.

### Exemplo de importação
<a name="SQLServer.Procedural.Importing.BCP.Linux.Importing.Example"></a>

O seguinte exemplo importa dados de um arquivo para uma tabela denominada `customers`:

```
bcp sales.dbo.customers in /home/user/customers.txt \
    -S mydb.cluster-abc123.us-east-1.rds.amazonaws.com \
    -U admin \
    -P mypassword \
    -c \
    -t "|" \
    -r "\n" \
    -b 1000
```

Esse comando:
+ Importa dados para a tabela `customers`.
+ Lê os dados do `/home/user/customers.txt`
+ Usa o formato de caracteres (`-c`).
+ Usa pipe (\$1) como delimitador de campo (`-t "|"`).
+ Usa nova linha como delimitador de linha (`-r "\n"`).
+ Processa dados em lotes de mil linhas (`-b 1000`).

## Opções comuns do BCP
<a name="SQLServer.Procedural.Importing.BCP.Linux.Options"></a>

O BCP oferece várias opções para controlar a formatação de dados e o comportamento de transferência. A seguinte tabela descreve as opções comumente usadas:


| Opção | Descrição | 
| --- | --- | 
| -c | Usa o tipo de dados de caracteres para todas as colunas. | 
| -n | Usa tipos de dados de banco de dados nativos. | 
| -t | Especifica o delimitador de campo (o padrão é tab). | 
| -r | Especifica o delimitador de linha (o padrão é nova linha). | 
| -b | Especifica o tamanho do lote para operações em massa. | 
| -F | Especifica a primeira linha a ser exportada ou importada. | 
| -L | Especifica a última linha a ser exportada ou importada. | 
| -e | Especifica um arquivo de erro para capturar linhas rejeitadas. | 
| -f | Especifica um arquivo de formato para formatação de dados. | 
| -q | Usa identificadores entre aspas para nomes de objeto. | 

## Práticas recomendadas e considerações
<a name="SQLServer.Procedural.Importing.BCP.Linux.BestPractices"></a>

Ao usar o BCP com o RDS para SQL Server no Linux, considere as seguintes práticas recomendadas:
+ **Use o processamento em lote**: para grandes conjuntos de dados, use a opção `-b` para processar dados em lote. Isso melhora o desempenho e permite uma recuperação de erros mais apropriada.
+ **Lide com erros adequadamente**: use a opção `-e` para capturar informações de erros e linhas rejeitadas em um arquivo separado para análise.
+ **Escolha os formatos de dados apropriados**: use o formato de caracteres (`-c`) para compatibilidade entre plataformas ou o formato nativo (`-n`) para melhorar desempenho quando a origem e o destino forem o SQL Server.
+ **Proteja suas credenciais**: evite colocar senhas diretamente nas linhas de comandos. Considere a possibilidade de usar variáveis de ambiente ou arquivos de configuração com as permissões apropriadas.
+ **Teste com conjuntos de dados pequenos**: antes de processar grandes quantidades de dados, teste seus comandos do BCP com conjuntos de dados menores para verificar a formatação e a conectividade.
+ **Monitore a conectividade de rede**: garanta conexões de rede estáveis, especialmente para grandes transferências de dados. Considere a possibilidade de usar ferramentas como `screen` ou `tmux` para operações de longa duração.
+ **Valide a integridade dos dados**: após a transferência de dados, verifique as contagens de linhas e os dados de amostra para garantir que a operação foi concluída com êxito.

## Solução de problemas comuns do
<a name="SQLServer.Procedural.Importing.BCP.Linux.Troubleshooting"></a>

A seguinte tabela descreve os problemas comuns que você pode encontrar ao usar o BCP no Linux e as respectivas soluções:


| Problema | Solução | 
| --- | --- | 
| Tempo limite de conexão ou erros de rede | Verifique seu endpoint do Amazon RDS, as configurações do grupo de segurança e a conectividade de rede. Confirme se a porta do SQL Server (normalmente 1433) pode ser acessada pelo seu sistema Linux. | 
| Falhas de autenticação | Anote seu nome de usuário e senha. Verifique se o usuário do banco de dados tem as permissões apropriadas para as operações que você está executando. | 
| Erros de formato de dados | Verifique seus delimitadores de campo e linha. Confirme se o formato dos dados corresponde ao que o BCP espera. Use arquivos de formato para estruturas de dados complexas. | 
| Erros de permissão negada | Verifique se o usuário do banco de dados tem permissões INSERT para importações ou permissões SELECT para exportações nas tabelas de destino. | 
| Problemas de tratamento de arquivos grandes | Use o processamento em lote com a opção -b. Considere a possibilidade de dividir arquivos grandes em partes menores para melhorar o desempenho e a recuperação de erros. | 
| Problemas de codificação de caracteres | Garanta que seus arquivos de dados usem uma codificação de caracteres compatível. Use a opção -c para o formato de caracteres ou especifique as páginas de código apropriadas. | 

# Trabalhar com réplicas de leitura do Microsoft SQL Server no Amazon RDS
<a name="SQLServer.ReadReplicas"></a>

Normalmente, você usa réplicas de leitura para configurar a replicação entre as instâncias de banco de dados do Amazon RDS. Para obter informações gerais sobre réplicas de leitura, consulte [Trabalhar com réplicas de leitura de instância de banco de dados](USER_ReadRepl.md). 

Nesta seção, você pode encontrar informações específicas sobre como trabalhar com réplicas de leitura no Amazon RDS for SQL Server.
+ [Sincronização de usuários e objetos do banco de dados com uma réplica de leitura do SQL Server](SQLServer.ReadReplicas.ObjectSynchronization.md)
+ [Solução de problemas de uma réplica de leitura do SQL Server](SQLServer.ReadReplicas.Troubleshooting.md)

## Configurar réplicas de leitura do SQL Server
<a name="SQLServer.ReadReplicas.Configuration"></a>

Antes que uma instância de banco de dados possa servir como uma instância de origem para replicação, é necessário habilitar backups automáticos na instância de banco de dados de origem. Para fazer isso, defina o período de retenção de backup como um valor diferente de 0. Definir esse tipo de implantação também impõe que os backups automáticos estejam habilitados.

Criar uma réplica de leitura do SQL Server não requer a interrupção da instância de banco de dados primária. O Amazon RDS define os parâmetros e as permissões necessários para a instância banco de dados de origem e para a réplica de leitura sem qualquer interrupção do serviço. Um snapshot é feito da instância de banco de dados de origem, e esse snapshot se torna a réplica de leitura. Quando você exclui uma réplica de leitura, não ocorre nenhuma interrupção. 

Você pode criar até quinze réplicas de leitura de uma instância de banco de dados de origem. Para que a replicação funcione eficazmente, recomendamos configurar cada réplica de leitura com a mesma quantidade de recursos de computação e de armazenamento que a instância de banco de dados de origem. Se você dimensionar a instância de banco de dados de origem, dimensione as réplicas de leitura também.

A versão do mecanismo de banco de dados SQL Server da instância de banco de dados de origem e todas as réplicas de leitura devem ser iguais. O Amazon RDS atualiza aa primária imediatamente após a atualização das réplicas de leitura, desconsiderando a janela de manutenção de uma réplica. Para ter mais informações sobre como atualizar a versão do mecanismo de banco de dados, consulte [Atualizações do mecanismo de banco de dados do Microsoft SQL Server](USER_UpgradeDBInstance.SQLServer.md).

Para que uma réplica de leitura receba e aplique alterações da origem, ela deve ter recursos suficientes de computação e armazenamento. Se uma réplica de leitura atingir a capacidade de recursos de computação, rede ou armazenamento, ela deixará de receber ou aplicar alterações de sua origem. É possível modificar os recursos de armazenamento e CPU de uma réplica de leitura independentemente de sua origem e de outras réplicas de leitura. 

Para ter mais informações sobre como criar uma réplica de leitura, consulte [Como criar uma réplica de leitura](USER_ReadRepl.Create.md).

## Limitações de réplica de leitura com o SQL Server
<a name="SQLServer.ReadReplicas.Limitations"></a>

As seguintes limitações se aplicam a réplicas de leitura do SQL Server no Amazon RDS:
+ Réplicas de leitura só estão disponíveis no mecanismo do SQL Server Enterprise Edition (EE).
+ Réplicas de leitura estão disponíveis para as versões do SQL Server 2016–2022.
+ Você pode criar até quinze réplicas de leitura de uma instância de banco de dados de origem. A replicação poderá atrasar quando a instância de banco de dados de origem tiver mais de cinco réplicas de leitura.
+ Réplicas de leitura só estão disponíveis para instâncias de banco de dados em execução em classes de instância de banco de dados com quatro ou mais vCPUs.
+ Uma réplica de leitura comporta até cem bancos de dados, dependendo do tipo de classe de instância e do modo de disponibilidade. É necessário criar bancos de dados na instância de banco de dados de origem para replicá-las automaticamente nas réplicas de leitura. Não é possível escolher bancos de dados individuais para replicar. Para obter mais informações, consulte [Limitações das instâncias de banco de dados Microsoft SQL Server](CHAP_SQLServer.md#SQLServer.Concepts.General.FeatureSupport.Limits).
+ Não é possível descartar um banco de dados de uma réplica de leitura. Para descartar um banco de dados, retire-o da instância de banco de dados de origem com o procedimento armazenado `rds_drop_database`. Para obter mais informações, consulte [Eliminar um banco de dados em uma instância de banco de dados do Amazon RDS para Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.DropMirrorDB.md).
+ Se a instância de banco de dados de origem usa criptografia de dados transparente (TDE) para criptografar dados, a réplica de leitura também configura a TDE.

  Se a instância de banco de dados de origem usar uma chave do KMS para criptografar dados, réplicas de leitura na mesma região usarão a mesma chave do KMS. Em relação a réplicas de leitura entre regiões, você deve especificar uma chave do KMS da região da réplica de leitura ao criar a réplica de leitura. Não é possível alterar a chave do KMS para uma réplica de leitura.
+ As réplicas de leitura têm o mesmo fuso horário e agrupamento da instância de banco de dados de origem, independentemente da zona de disponibilidade em que foram criadas.
+ Os seguintes não são compatíveis com o Amazon RDS for SQL Server:
  + Retenção de backup de réplicas de leitura
  + Recuperação point-in-time de réplicas de leitura
  + Snapshots manuais de réplicas de leitura
  + Réplicas de leitura Multi-AZ
  + Criar réplicas de leitura de réplicas de leitura
  + Sincronização de logins de usuários para réplicas de leitura
+ O Amazon RDS for SQL Server não intervém para atenuar atrasos altos de replicação entre uma instância de banco de dados de origem e suas réplicas de leitura. Certifique-se de que a instância de banco de dados de origem e suas réplicas de leitura estejam dimensionadas corretamente, em termos de capacidade de computação e armazenamento, para atender a suas cargas operacionais.
+ Você pode replicar entre as regiões AWS GovCloud (Oeste dos EUA) e AWS GovCloud (Leste dos EUA), mas não para dentro ou fora da AWS GovCloud (US) Regions.

## Considerações opcionais sobre réplicas do RDS para SQL Server
<a name="SQLServer.ReadReplicas.limitations.options"></a>

Antes de criar uma réplica do RDS para SQL Server, considere os seguintes requisitos, restrições e recomendações:
+ Se a réplica do SQL Server estiver na mesma região da instância de banco de dados de origem, verifique se ela pertence ao mesmo grupo de opções que essa instância. Modificações no grupo de opções de origem ou na associação do grupo de opções de origem são propagadas para as réplicas. Essas alterações serão aplicadas às réplicas logo depois de serem aplicadas à instância de banco de dados de origem, independentemente da janela de manutenção da réplica.

  Para ter mais informações sobre grupos de opções, consulte [Trabalhar com grupos de opções](USER_WorkingWithOptionGroups.md).
+ Quando você cria uma réplica entre regiões no SQL Server, o Amazon RDS cria um grupo de opções dedicado para ela.

  Não é possível remover uma réplica entre regiões no SQL Server do seu grupo de opções dedicado. Nenhuma outra instância de banco de dados pode usar o grupo de opções dedicado para uma réplica entre regiões no SQL Server.

  As opções a seguir são opções replicadas. Para adicionar outras opções a uma réplica de leitura entre regiões do SQL Server, adicione-as ao grupo de opções da instância de banco de dados de origem. A opção também é instalada em todas as réplicas da instância do banco de dados de origem.
  + `TDE`

  As opções a seguir são opções não replicadas. Você pode adicionar ou remover opções não replicadas de um grupo de opções dedicado.
  + `MSDTC`
  + `SQLSERVER_AUDIT`
  + Para ativar a opção `SQLSERVER_AUDIT` na réplica de leitura entre regiões, adicione a opção `SQLSERVER_AUDIT` no grupo de opções dedicado na réplica de leitura entre regiões e no grupo de opções da instância de origem. Ao adicionar a opção `SQLSERVER_AUDIT` na instância de origem da réplica de leitura entre regiões do SQL Server, você pode criar o Objeto de auditoria em nível de servidor e especificações de auditoria em nível de servidor em cada uma das réplicas de leitura entre regiões da instância de origem. Para permitir que as réplicas de leitura entre regiões tenham acesso para fazer upload dos logs de auditoria concluídos em um bucket do Amazon S3, adicione a opção `SQLSERVER_AUDIT` ao grupo de opções dedicado e defina as configurações da opção. O bucket do Amazon S3 que você usa como destino para arquivos de auditoria deve estar na mesma região que a réplica leitura entre regiões. Você pode modificar a configuração da opção `SQLSERVER_AUDIT` para cada réplica de leitura entre regiões de forma independente para que cada um possa acessar um bucket do Amazon S3 em sua respectiva região.

  As opções a seguir não são compatíveis com réplicas de leitura entre regiões.
  + `SSRS`
  + `SSAS`
  + `SSIS`

  As opções a seguir são parcialmente compatíveis com réplicas de leitura entre regiões.
  + `SQLSERVER_BACKUP_RESTORE`
  + A instância de banco de dados de origem de uma réplica entre regiões do SQL Server pode ter a opção `SQLSERVER_BACKUP_RESTORE`, mas você não pode realizar restaurações nativas na instância de banco de dados de origem até excluir todas as réplicas entre regiões. Todas as tarefas de restauração nativa existentes serão canceladas durante a criação de uma réplica entre regiões. Você não pode adicionar a opção `SQLSERVER_BACKUP_RESTORE` a um grupo de opções dedicado.

    Para ter mais informações sobre o backup e a restauração nativos, consulte [Importar e exportar bancos de dados do SQL Server usando backup e restauração nativos](SQLServer.Procedural.Importing.md).

  Quando você promove uma réplica de leitura entre regiões no SQL Server, a réplica promovida se comporta da mesma maneira que outras instâncias de banco de dados do SQL Server, inclusive o gerenciamento de suas opções. Para ter mais informações sobre grupos de opções, consulte [Trabalhar com grupos de opções](USER_WorkingWithOptionGroups.md).

# Sincronização de usuários e objetos do banco de dados com uma réplica de leitura do SQL Server
<a name="SQLServer.ReadReplicas.ObjectSynchronization"></a>

Espera-se que todos os logins, perfis de servidor personalizados, trabalhos do agente do SQL ou outros objetos no nível do servidor que existam na instância de banco de dados primária no momento da criação de uma réplica de leitura estejam presentes na réplica de leitura recém-criada. No entanto, todos os objetos no nível do servidor criados na instância de banco de dados primária após a criação da réplica de leitura não serão replicados automaticamente, e você deverá criá-los manualmente na réplica de leitura.

Os usuários do banco de dados são replicados automaticamente da instância de banco de dados primária para a réplica de leitura. Como o banco de dados de réplica de leitura está no modo somente leitura, o identificador de segurança (SID) do usuário do banco de dados não pode ser atualizado no banco de dados. Portanto, ao criar logins de SQL na réplica de leitura, é essencial garantir que o SID desse login corresponda ao SID do login SQL correspondente na instância de banco de dados primária. Se você não sincronizar os SIDs dos logins do SQL, eles não poderão acessar o banco de dados na réplica de leitura. Os logins autenticados do Windows Active Directory (AD) não apresentam esse problema porque o SQL Server obtém o SID do Active Directory.

**Para sincronizar um login do SQL da instância de banco de dados primária com a réplica de leitura**

1. Conecte-se à instância de banco de dados primária.

1. Crie um login do SQL na instância de banco de dados primária.

   ```
   USE [master]
   GO
   CREATE LOGIN TestLogin1
   WITH PASSWORD = 'REPLACE WITH PASSWORD';
   ```
**nota**  
Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.

1. Crie um usuário do banco de dados para o login do SQL no banco de dados.

   ```
   USE [REPLACE WITH YOUR DB NAME]
   GO
   CREATE USER TestLogin1 FOR LOGIN TestLogin1;
   GO
   ```

1. Verifique o SID do login do SQL recém-criado na instância de banco de dados primária.

   ```
   SELECT name, sid FROM sys.server_principals WHERE name =  'TestLogin1';
   ```

1. Conecte-se à réplica de leitura. Crie o login do SQL.

   ```
   CREATE LOGIN TestLogin1 WITH PASSWORD = 'REPLACE WITH PASSWORD', SID=REPLACE WITH sid FROM STEP #4;
   ```

**Como alternativa, se você tiver acesso ao banco de dados da réplica de leitura, poderá corrigir o usuário órfão da seguinte forma:**

1. Conecte-se à réplica de leitura.

1. Identifique os usuários órfãos no banco de dados.

   ```
   USE [REPLACE WITH YOUR DB NAME]
   GO
   EXEC sp_change_users_login 'Report';
   GO
   ```

1. Crie um login do SQL para o usuário órfão do banco de dados.

   ```
   CREATE LOGIN TestLogin1 WITH PASSWORD = 'REPLACE WITH PASSWORD', SID=REPLACE WITH sid FROM STEP #2;
   ```

   Exemplo:

   ```
   CREATE LOGIN TestLogin1 WITH PASSWORD = 'TestPa$$word#1', SID=0x1A2B3C4D5E6F7G8H9I0J1K2L3M4N5O6P;
   ```
**nota**  
Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.

# Solução de problemas de uma réplica de leitura do SQL Server
<a name="SQLServer.ReadReplicas.Troubleshooting"></a>

Você pode monitorar o atraso da replicação no Amazon CloudWatch visualizando a métrica `ReplicaLag` do Amazon RDS. Para obter informações sobre o tempo de atraso de replicação, consulte [Monitoramento da replicação de leitura](USER_ReadRepl.Monitoring.md).

Se o atraso de replicação for muito longo, use a seguinte consulta para obter informações sobre esse atraso:

```
SELECT AR.replica_server_name
     , DB_NAME (ARS.database_id) 'database_name'
     , AR.availability_mode_desc
     , ARS.synchronization_health_desc
     , ARS.last_hardened_lsn
     , ARS.last_redone_lsn
     , ARS.secondary_lag_seconds
FROM sys.dm_hadr_database_replica_states ARS
INNER JOIN sys.availability_replicas AR ON ARS.replica_id = AR.replica_id
--WHERE DB_NAME(ARS.database_id) = 'database_name'
ORDER BY AR.replica_server_name;
```

# Implantações multi-AZ para o Amazon RDS for Microsoft SQL Server
<a name="USER_SQLServerMultiAZ"></a>

As implantações Multi-AZ oferecem maior disponibilidade, durabilidade de dados e tolerância a falhas para instâncias de banco de dados. No caso de uma manutenção planejada do banco de dados ou de uma interrupção não planejada do serviço, o Amazon RDS faz failover automático para a instância de banco de dados secundário atualizada. Essa funcionalidade permite que as operações do banco de dados sejam retomadas rapidamente sem intervenção manual. As instâncias primária e em espera usam o mesmo endpoint, cujo endereço de rede física faz a transição para a réplica secundária como parte do processo de failover. Não é necessário reconfigurar seu aplicativo quando ocorre um failover.

O Amazon RDS comporta implantações multi-AZ para Microsoft SQL Server usando o SQL Server Database Mirroring (DBM) ou grupos de disponibilidade Always On (AGs) ou replicação em nível de bloco. O Amazon RDS monitora e mantém a integridade de sua implantação Multi-AZ. Caso ocorram problemas, o RDS repara automaticamente instâncias de banco de dados não íntegras, reestabelece a sincronização e inicia os failovers. O failover só ocorrerá se o modo em espera e o primário estiverem totalmente sincronizados. Você não precisa gerenciar tudo.

Quando você configura o multi-AZ do SQL Server, o RDS configura automaticamente todos os bancos de dados na instância para usar DBM, AGs ou replicação em nível de bloco. O Amazon RDS processa as instâncias primária, a testemunha e de banco de dados secundária para você ao configurar o DBM ou AGs. Para replicação em nível de bloco, o RDS processa as instâncias primária e de banco de dados secundária. Como a configuração é automática, o RDS selecione DBM, Always On AGS ou replicação em nível de bloco com base na versão do SQL Server implantada.

O Amazon RDS oferece suporte a Multi-AZ com Always On AGs para as seguintes versões e edições do SQL Server:
+ SQL Server 2022:
  + Edição Standard
  + Edição Enterprise
+ SQL Server 2019:
  + Standard Edition 15.00.4073.23 e posteriores
  + Edição Enterprise
+ SQL Server 2017:
  + Standard Edition 14.00.3401.7 e posteriores
  + Enterprise Edition 14.00.3049.1 e posteriores
+ SQL Server 2016: Enterprise Edition 13.00.5216.0 e posterior

O Amazon RDS oferece suporte a Multi-AZ com DBM para as seguintes versões e edições do SQL Server, exceto para as versões indicadas anteriormente:
+ SQL Server 2019: Standard Edition 15.00.4043.16
+ SQL Server 2017: Standard e Enterprise Editions
+ SQL Server 2016: Standard e Enterprise Editions 

O Amazon RDS comporta multi-AZ com replicação em nível de bloco para SQL Server 2022 Web Edition 16.00.4215.2 e posterior.

**nota**  
Somente novas instâncias de banco de dados criadas com 16.00.4215.2 ou posterior comportam implantações multi-AZ com replicação em nível de bloco. As seguintes restrições se aplicam às instâncias existentes do SQL Server 2022 Web Edition:  
Para instâncias existentes na versão 16.00.4215.2, você deve restaurar um snapshot em uma nova instância com a mesma versão secundária ou posterior para permitir a replicação em nível de bloco.
As instâncias Web do SQL Server 2022 com uma versão secundária mais antiga podem ser atualizadas para a versão secundária 16.00.4215.2 ou posterior para habilitar a replicação em nível de bloco.

Você pode usar a seguinte consulta SQL para determinar se sua instância de banco de dados do SQL Server é single-AZ, multi-AZ com DBM ou multi-AZ com AGs Always On: Essa consulta não se aplica a implantações multi-AZ no SQL Server Web Edition.

```
SELECT CASE WHEN dm.mirroring_state_desc IS NOT NULL THEN 'Multi-AZ (Mirroring)'
    WHEN dhdrs.group_database_id IS NOT NULL THEN 'Multi-AZ (AlwaysOn)'
    ELSE 'Single-AZ'
    END 'high_availability'
FROM sys.databases sd
LEFT JOIN sys.database_mirroring dm ON sd.database_id = dm.database_id
LEFT JOIN sys.dm_hadr_database_replica_states dhdrs ON sd.database_id = dhdrs.database_id AND dhdrs.is_local = 1
WHERE DB_NAME(sd.database_id) = 'rdsadmin';
```

A saída será semelhante à seguinte.

```
high_availability
Multi-AZ (AlwaysOn)
```

## Adicionar Multi-AZ a uma instância de banco de dados do Microsoft SQL Server
<a name="USER_SQLServerMultiAZ.Adding"></a>

Ao criar uma instância de banco de dados do SQL Server usando o Console de gerenciamento da AWS, você pode adicionar multi-AZ com Database Mirroring (DBM), AGs Always On ou replicação em nível de bloco. Faça isso selecionando **Sim (Espelhamento/Always On/Replica em nível de bloco)** em **Implantação multi-AZ**. Para obter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).

Ao modificar uma instância de banco de dados do SQL Server existente usando o console, você pode adicionar multi-AZ com DBM, AGs ou replicação em nível de bloco escolhendo **Sim (Espelhamento/Always On/Replicação em nível de bloco)** na lista **Implantação multi-AZ** na página **Modificar instância de banco de dados**. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).

**nota**  
Se a instância de banco de dados estiver executando o DBM (Database Mirroring) — e não AGs (Grupos de disponibilidade Always On) — talvez seja necessário desabilitar a otimização na memória antes de adicionar Multi-AZ. Desabilite a otimização na memória com DBM antes de adicionar multi-AZ se a instância de banco de dados executar o SQL Server 2016 ou 2017 Enterprise Edition e tiver a otimização na memória habilitada.   
Se a instância de banco de dados estiver executando AGs ou replicação em nível de bloco para as edições Web do SQL Server, não será necessário realizar essa etapa. 

## Remover multi-AZ de uma instância de banco de dados do Microsoft SQL Server
<a name="USER_SQLServerMultiAZ.Removing"></a>

Ao modificar uma instância de banco de dados do SQL Server existente usando o Console de gerenciamento da AWS, você pode remover multi-AZ com DBM, AGs ou replicação em nível de bloco. Para fazer isso, escolha **Não (Espelhamento/Always On/Replicação em nível de bloco)** em **Implantação multi-AZ** na página **Modificar instância de banco de dados**. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).

# Limitações, observações e recomendações de implantação multi-AZ do Microsoft SQL Server
<a name="USER_SQLServerMultiAZ.Recommendations"></a>

A seguir você encontrará algumas restrições aplicáveis ao trabalhar com implantações multi-AZ em instâncias de banco de dados do RDS para SQL Server:
+ O Multi-AZ entre regiões não é compatível.
+ Não há suporte para a interrupção de um para a instância de banco de dados SQL Server em uma implantação Multi-AZ.
+ Não é possível configurar a instância de banco de dado secundária para aceitar a atividade de leitura de banco de dados.
+ Multi-AZ com grupos de disponibilidade (AGs) Always On oferece suporte à otimização na memória.
+ O Multi-AZ com grupos de disponibilidade (AGs) Always On não oferece suporte à autenticação Kerberos para o listener do grupo de disponibilidade. Isso ocorre, pois o listener não tem nome principal do serviço (SPN).
+ No momento, só é possível usar multi-AZ com replicação em nível de bloco com instâncias do SQL Server Web Edition.
+ Não é possível renomear um banco de dados em uma instância de banco de dados do SQL Server que esteja em uma implantação Multi-AZ do SQL Server. Se você precisar renomear um banco de dados em uma instância assim, primeiro desative o Multi-AZ da instância de banco de dados e renomeie o banco de dados. Por fim, reative Multi-AZ para a instância de banco de dados. 
+ Você só pode restaurar instâncias de banco de dados Multi-AZ com backup feito usando-se o modelo de recuperação completo.
+ As implantações multi-AZ têm um limite de cem trabalhos do SQL Server Agent.

  Se um limite mais alto for necessário, solicite um aumento de cota entrando em contato com o Suporte. Abra a página do [AWS Support Center](https://console.aws.amazon.com/support/home#/), faça login, se necessário, e escolha **Create case** (Criar caso). Escolha **Service limit increase** (Aumento de limite do serviço). Preencha e envie o formulário.
+ Não é possível ter um banco de dados off-line em uma instância de banco de dados do SQL Server que esteja em uma implantação multi-AZ do SQL Server.
+ O RDS para SQL Server não replica as permissões do banco de dados MSDB para a instância secundária. Se você precisar dessas permissões na instância secundária, deverá recriá-las manualmente.
+ As métricas de volume não estão disponíveis para o host secundário da instância usando a replicação em nível de bloco.

Veja a seguir algumas observações sobre como trabalhar com implantações multi-AZ em instâncias de banco de dados do RDS para SQL Server:
+ O Amazon RDS expõe o [endpoint de listener do grupo de disponibilidade](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/listeners-client-connectivity-application-failover) de Always On AGs. O endpoint está visível no console e é retornado pela operação de API `DescribeDBInstances` como uma entrada no campo de endpoints.
+ O Amazon RDS oferece suporte a [failovers de sub-rede do grupo de disponibilidade](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/listeners-client-connectivity-application-failover).
+ Para usar o multi-AZ do SQL Server com uma instância de banco de dados do SQL Server em uma nuvem privada virtual (VPC), primeiro crie um grupo de sub-rede de banco de dados que tenha sub-redes em pelo menos duas zonas de disponibilidade distintas. Em seguida, atribua o grupo de sub-rede de banco de dados à réplica primária da instância de banco de dados do SQL Server. 
+ Quando uma instância de banco de dados é modificada para ser uma implantação Multi-AZ, durante a modificação, ela tem o status **modifying**. O Amazon RDS cria o modo de espera e faz um backup da instância de banco de dados primária. Depois que o processo estiver concluído, o status da instância de banco de dados primária se tornará **available (disponível)**.
+ Implantações Multi-AZ mantém todos os bancos de dados no mesmo nó. Se um banco de dados no host primário fizer failover, todos os bancos de dados do SQL Server farão failover como uma unidade atômica para o host em espera. O Amazon RDS provisiona um novo host íntegro e substitui o host não íntegro.
+ O multi-AZ com DBM, AGs ou replicação em nível de bloco aceitam uma única réplica em espera.
+ Os usuários, os logins e as permissões são replicados automaticamente para você na secundária. Não é necessário recriá-los. Os perfis de servidor definidos pelo usuário só são replicados em instâncias de banco de dados que usam AGs Always On ou replicação em nível de bloco para implantações multi-AZ. 
+ Em implantações multi-AZ, o RDS para SQL Server cria logins do SQL Server para permitir AGs Always On ou o Database Mirroring. O RDS cria logins com o seguinte padrão, `db_<dbiResourceId>_node1_login`, `db_<dbiResourceId>_node2_login` e `db_<dbiResourceId>_witness_login`.
+ O RDS para SQL Server cria um login do SQL Server para permitir o acesso às réplicas de leitura. O RDS cria um login com o seguinte padrão: `db_<readreplica_dbiResourceId>_node_login`.
+ Em implantações multi-AZ, os trabalhos do SQL Server Agent são replicados do host primário para o host secundário quando o recurso de replicação de trabalhos é ativado. Para obter mais informações, consulte [Ativar a replicação de trabalhos do SQL Server Agent](Appendix.SQLServer.CommonDBATasks.Agent.md#SQLServerAgent.Replicate).
+ Convém observar latências elevadas em comparação com uma implantação de instância de banco de dados padrão (em uma única zona de disponibilidade) por causa da replicação de dados síncrona.
+ Os tempos de failover são afetados pelo tempo necessário para completar o processo de recuperação. Transações grandes aumentam o tempo de failover.
+ Em implantações Multi-AZ do SQL Server, a reinicialização com failover reinicializa somente a instância de banco de dados principal. Após o failover, a instância de banco de dados primária torna-se a nova instância de banco de dados secundária. Os parâmetros podem não ser atualizados para instâncias Multi-AZ. Para a reinicialização sem failover, as instâncias de banco de dados primárias e secundárias são reinicializadas e os parâmetros são atualizados após a reinicialização. Se a instância de banco de dados não responder, recomendamos reinicializar sem failover.

A seguir você encontrará algumas recomendações para trabalhar com implantações Multi-AZ em instâncias de banco de dados do RDS for Microsoft SQL Server:
+ Para bancos de dados usados em produção ou pré-produção, recomendamos as seguintes opções:
  + Implantações Multi-AZ para alta disponibilidade
  + "IOPS provisionadas" para performance rápida e consistente
  + "Memória otimizada" em vez de "Uso geral"
+ Não é possível selecionar a zona de disponibilidade (AZ) para a instância secundária. Por isso, quando implantar hosts de aplicativo, leve isso em conta. O banco de dados pode fazer failover para outro AZ, e os hosts de aplicativo podem não estar no mesmo AZ do banco de dados. Por esse motivo, recomendamos equilibrar os hosts de aplicação em todas as AZs na região da AWS indicada.
+ Para ter a melhor performance, não habilite o Database Mirroring ou os AGs Always On ou a replicação em nível de bloco durante uma operação grande de carregamento de dados. Se quiser que o carregamento de dados seja o mais rápido possível, termine o carregamento de dados antes de converter a instância de banco de dados em uma implantação Multi-AZ. 
+ Os aplicativos que acessam os bancos de dados do SQL Server devem ter um tratamento de exceção que capte erros de conexão. O exemplo de código a seguir mostra um bloco try/catch que capta um erro de comunicação. Neste exemplo, a `break` instrução sai do `while` loop se a conexão for bem-sucedida, mas tenta novamente até 10 vezes se uma exceção for lançada.

  ```
  int RetryMaxAttempts = 10;
  int RetryIntervalPeriodInSeconds = 1;
  int iRetryCount = 0;
  while (iRetryCount < RetryMaxAttempts)
  {
     using (SqlConnection connection = new SqlConnection(DatabaseConnString))
     {
        using (SqlCommand command = connection.CreateCommand())
        {
           command.CommandText = "INSERT INTO SOME_TABLE VALUES ('SomeValue');";
           try
           {
              connection.Open();
              command.ExecuteNonQuery();
              break;
           }
           catch (Exception ex) 
           {
              Logger(ex.Message);
              iRetryCount++;
           }
           finally {
              connection.Close();
           }
        }
     }
     Thread.Sleep(RetryIntervalPeriodInSeconds * 1000);
  }
  ```
+ Não use o comando `Set Partner Off` ao trabalhar com instâncias multi-AZ utilizando DBM ou AGs. Esse comando não é aceito em instâncias que usam replicação em nível de bloco. Por exemplo, não faça o seguinte. 

  ```
  --Don't do this
  ALTER DATABASE db1 SET PARTNER off
  ```
+ Não defina o modo de recuperação como `simple`. Por exemplo, não faça o seguinte. 

  ```
  --Don't do this
  ALTER DATABASE db1 SET RECOVERY simple
  ```
+ Não use o parâmetro `DEFAULT_DATABASE` ao criar novos login em instâncias de banco de dados multi-AZ, a menos que você use a replicação em nível de bloco para alta disponibilidade, porque essas configurações não podem ser aplicadas ao espelho em espera. Por exemplo, não faça o seguinte. 

  ```
  --Don't do this
  CREATE LOGIN [test_dba] WITH PASSWORD=foo, DEFAULT_DATABASE=[db2]
  ```

  Além disso, não faça o seguinte.

  ```
  --Don't do this
  ALTER LOGIN [test_dba] WITH DEFAULT_DATABASE=[db3]
  ```

# Determinar a localização do secundário
<a name="USER_SQLServerMultiAZ.Location"></a>

Determine a localização da réplica secundária usando o Console de gerenciamento da AWS. Você precisará saber a localização da secundária se estiver configurando a instância de banco de dados primária em uma VPC. 

![\[AZ secundária\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/SQLSvr-MultiAZ.png)


Também é possível visualizar a zona de disponibilidade da secundária usando o comando AWS CLI da `describe-db-instances` ou a operação da API do RDS `DescribeDBInstances`. O resultado mostra a AZ secundária onde o espelho em espera está localizado. 

# Migrar do Database Mirroring para Grupos de Disponibilidade Always On
<a name="USER_SQLServerMultiAZ.Migration"></a>

Na versão 14.00.3049.1 do Microsoft SQL Server Enterprise Edition, os Grupos de Disponibilidade (AGs) Always On estão sempre habilitados por padrão.

Para migrar do Database Mirroring (DBM) para AGs, verifique sua versão primeiramente. Se você estiver usando uma instância de banco de dados com uma versão anterior à Enterprise Edition 13.00.5216.0, modifique a instância a fim de atualizá-la para a 13.00.5216.0 ou posterior. Se você estiver usando uma instância de banco de dados com uma versão anterior à Enterprise Edition 14.00.3049.1, modifique a instância a fim de atualizá-la para a 14.00.3049.1 ou posterior.

Se você deseja atualizar uma instância de banco de dados espelhada para usar AGs, execute a atualização primeiro, modifique a instância para remover o Multi-AZ e depois modifique-a novamente para adicionar o Multi-AZ. Isso converterá a instância para usar AGs Always On.

# Recursos adicionais do Microsoft SQL Server no Amazon RDS
<a name="User.SQLServer.AdditionalFeatures"></a>

Nas seções a seguir, você pode encontrar informações sobre como aumentar as instâncias do Amazon RDS que executam o mecanismo de banco de dados do Microsoft SQL Server.

**Topics**
+ [Usar política de senha para logins do SQL Server no RDS para SQL Server](SQLServer.Concepts.General.PasswordPolicy.Using.md)
+ [Integrar uma instância de banco de dados do Amazon RDS for SQL Server ao Amazon S3](User.SQLServer.Options.S3-integration.md)
+ [Usar o Database Mail no Amazon RDS for SQL Server](SQLServer.DBMail.md)
+ [Suporte ao armazenamento de instâncias para o banco de dados tempdb no Amazon RDS for SQL Server](SQLServer.InstanceStore.md)
+ [Usar eventos estendidos com Amazon RDS for Microsoft SQL Server](SQLServer.ExtendedEvents.md)
+ [Acesso aos backups de logs de transações com o RDS para SQL Server](USER.SQLServer.AddlFeat.TransactionLogAccess.md)

# Usar política de senha para logins do SQL Server no RDS para SQL Server
<a name="SQLServer.Concepts.General.PasswordPolicy.Using"></a>

O Amazon RDS permite que você defina a política de senha para a instância de banco de dados do Amazon RDS que executa o Microsoft SQL Server. Use isso para definir os requisitos de complexidade, duração e bloqueio para logins que usam a autenticação do SQL Server para se autenticar na instância de banco de dados.

## Principais termos
<a name="SQLServer.Concepts.General.PasswordPolicy.Using.KT"></a>

**Login**  
No SQL Server, uma entidade principal em nível de servidor que pode se autenticar em uma instância de banco de dados é chamado de **login**. Outros mecanismos de banco de dados podem se referir a essa entidade principal como *usuário*. No RDS para SQL Server, um login pode se autenticar usando a Autenticação do SQL Server ou a Autenticação do Windows.

**Login do SQL Server**  
Um login que usa um nome de usuário e uma senha para se autenticar usando a Autenticação do SQL Server é um login do SQL Server. A política de senha que você configura por meio de parâmetros de banco de dados se aplica somente aos logins do SQL Server.

**Login do Windows**  
Um login baseado em uma entidade principal do Windows e se autentica usando a Autenticação do Windows é um login do Windows. É possível configurar a política de senha para os logins do Windows no Active Directory. Para ter mais informações, consulte [Trabalhar com o Active Directory com o RDS para SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).

## Habilitar e desabilitar a política para cada login
<a name="SQLServer.Concepts.General.PasswordPolicy.EnableDisable"></a>

 Cada login do SQL Server tem sinalizadores para `CHECK_POLICY` e `CHECK_EXPIRATION`. Por padrão, novos logins são criados com `CHECK_POLICY` definido como `ON` e `CHECK_EXPIRATION` definido como `OFF`. 

Se `CHECK_POLICY` estiver habilitado para um login, o RDS para SQL Server valida a senha em relação aos requisitos de complexidade e de tamanho mínimo. As políticas de bloqueio também são aplicáveis. Um exemplo de declaração T-SQL para habilitar `CHECK_POLICY` e `CHECK_EXPIRATION`: 

```
ALTER LOGIN [master_user] WITH CHECK_POLICY = ON, CHECK_EXPIRATION = ON;
```

Se `CHECK_EXPIRATION` estiver habilitado, as senhas estarão sujeitas às políticas de idade da senha. A declaração T-SQL para conferir se `CHECK_POLICY` e `CHECK_EXPIRATION` estão definidos:

```
SELECT name, is_policy_checked, is_expiration_checked FROM sys.sql_logins;
```

## Parâmetros da política de senha
<a name="SQLServer.Concepts.General.PasswordPolicy.PWDPolicyParams"></a>

Todos os parâmetros da política de senha são dinâmicos e não exigem a reinicialização do banco de dados para entrar em vigor. A tabela a seguir lista os parâmetros de banco de dados que você pode definir para modificar a política de senha para logins do SQL Server:


****  

| Parâmetro de banco de dados | Descrição | Valores permitidos | Valor padrão | 
| --- | --- | --- | --- | 
| rds.password\$1complexity\$1enabled | Os requisitos de complexidade da senha devem ser atendidos ao criar ou alterar senhas para logins do SQL Server. As seguintes restrições devem ser atendidas: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/SQLServer.Concepts.General.PasswordPolicy.Using.html)  | 0,1 | 0 | 
| rds.password\$1min\$1length | O número mínimo de caracteres exigido em uma senha para um login do SQL Server. | 0-14 | 0 | 
| rds.password\$1min\$1age | O número mínimo de dias em que uma senha de login do SQL Server deve ser usada para que o usuário possa alterá-la. As senhas podem ser alteradas imediatamente quando definidas como 0. | 0-998 | 0 | 
| rds.password\$1max\$1age | O número máximo de dias em que uma senha de login do SQL Server pode ser usada, após o qual o usuário deve alterá-la. As senhas nunca expiram quando definidas como 0. | 0-999 | 42 | 
| rds.password\$1lockout\$1threshold | O número de tentativas consecutivas de login com falha que fazem com que um login do SQL Server fique bloqueado. | 0-999 | 0 | 
| rds.password\$1lockout\$1duration | O número de minutos que um login bloqueado do SQL Server deve esperar antes de ser desbloqueado. | 1-60 | 10 | 
| rds.password\$1lockout\$1reset\$1counter\$1after | O número de minutos que devem decorrer após uma tentativa de login malsucedida antes que o contador de tentativas de login com falha seja redefinido como 0. | 1-60 | 10 | 

**nota**  
Para ter mais informações sobre a política de senha do SQL Server, consulte [ Password Policy](https://learn.microsoft.com/en-us/sql/relational-databases/security/password-policy).   
As políticas de complexidade e tamanho mínimo da senha também se aplicam aos usuários do banco de dados em bancos de dados contidos. Para ter mais informações, consulte [ Contained Databases](https://learn.microsoft.com/en-us/sql/relational-databases/databases/contained-databases).

As seguintes restrições se aplicam aos parâmetros de política de senha:
+ O parâmetro `rds.password_min_age` deve ser menor que `rds.password_max_age parameter`, a menos que `rds.password_max_age` esteja definido como 0.
+ O parâmetro `rds.password_lockout_reset_counter_after` deve ser menor que ou igual ao parâmetro `rds.password_lockout_duration`.
+ Se `rds.password_lockout_threshold` estiver definido como 0, `rds.password_lockout_duration` e `rds.password_lockout_reset_counter_after` não se aplicarão.

### Considerações sobre logins existentes
<a name="SQLServer.Concepts.General.PasswordPolicy.ExistingLogins"></a>

Depois de modificar a política de senha em uma instância, as senhas existentes para logins **não** são avaliadas retroativamente em relação aos novos requisitos de complexidade e de tamanho da senha. Somente novas senhas são validadas de acordo com a nova política. 

O SQL Server **não** avalia as senhas existentes de acordo com os requisitos de idade.

É possível que as senhas expirem imediatamente depois que uma política de senha for modificada. Por exemplo, se um login tiver `CHECK_EXPIRATION` habilitado e sua senha foi alterada pela última vez há cem dias e você definiu o parâmetro `rds.password_max_age` como cinco dias, a senha expirará imediatamente e será necessário alterar a senha na próxima tentativa de login.

**nota**  
O RDS para SQL Server não é compatível com políticas de histórico de senha. As políticas de histórico impedem que os logins reutilizem senhas usadas anteriormente.

### Considerações para implantações Multi-AZ
<a name="SQLServer.Concepts.General.PasswordPolicy.MAZPasswords"></a>

O contador de tentativas de login com falha e o estado de bloqueio das instâncias multi-AZ não se replicam entre os nós. No caso de um login ser bloqueado quando uma instância multi-AZ falha, é possível que o login já esteja desbloqueado no novo nó.

# Considerações sobre senhas para o login mestre
<a name="SQLServer.Concepts.General.PasswordPolicy.MasterLogin"></a>

Ao criar uma instância de banco de dados do RDS para SQL Server, a senha do usuário mestre não é avaliada em relação à política de senha. Uma nova senha mestra também não é avaliada em relação à senha ao realizar operações com o usuário mestre, especificamente ao configurar `MasterUserPassword` no comando `ModifyDBInstance`. Nos dois casos, é possível definir uma senha para o usuário mestre que não atenda à política de senha, e a operação ainda ser bem-sucedida. Se a política não for satisfeita, o RDS tentará gerar um evento do RDS, com a recomendação de definir uma senha forte. Tome cuidado para usar somente senhas fortes para o usuário mestre. 

O RDS tenta gerar as seguintes mensagens de evento quando a senha do usuário mestre não atende aos requisitos da política de senha:
+ O usuário mestre foi criado, mas a senha não atende ao requisito de tamanho mínimo da política de senha. Pense em usar uma senha mais forte.
+ O usuário mestre foi criado, mas a senha não atende ao requisito de complexidade da política de senha. Pense em usar uma senha mais forte.
+ A senha do usuário mestre foi redefinida, mas ela não atende ao requisito de tamanho mínimo da política de senha. Pense em usar uma senha mais forte.
+ A senha do usuário mestre foi redefinida, mas ela não atende ao requisito de complexidade da política de senha. Pense em usar uma senha mais forte.

Por padrão, o usuário mestre é criado com `CHECK_POLICY` e `CHECK_EXPIRATION` definidos como`OFF`. Para aplicar a política de senha ao usuário mestre, você deve habilitar manualmente esses sinalizadores para o usuário mestre após a criação da instância de banco de dados. Depois de habilitar esses sinalizadores, modifique a senha do usuário mestre diretamente no SQL Server (por exemplo, por meio de declarações T-SQL ou SSMS) para validar a nova senha em relação à política de senha.

**nota**  
Se o usuário mestre for bloqueado, você poderá desbloqueá-lo redefinindo a senha do usuário mestre com o comando `ModifyDBInstance`.

## Modificar a senha do usuário mestre
<a name="SQLServer.Concepts.General.PasswordPolicy.MasterLogin.Reset"></a>

É possível modificar a senha do usuário mestre usando o comando [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html).

**nota**  
Quando você redefine a senha do usuário mestre, o RDS redefine várias permissões para o usuário mestre e este pode perder determinadas permissões. A redefinição da senha do usuário mestre também desbloqueia o usuário mestre, caso ele tenha sido bloqueado.

O RDS valida a nova senha do usuário mestre e tentará emitir um evento do RDS se a senha não atender à política. O RDS define a senha mesmo que ela não atenda à política de senha. 

# Integrar uma instância de banco de dados do Amazon RDS for SQL Server ao Amazon S3
<a name="User.SQLServer.Options.S3-integration"></a>

É possível transferir arquivos entre uma instância de banco de dados do Amazon RDS for SQL Server e um bucket do Amazon S3. Ao fazer isso, é possível usar o Amazon S3 com os recursos do SQL Server, como BULK INSERT. Por exemplo, é possível baixar .csv, .xml, .txt e outros arquivos do Amazon S3 no host da instância de banco de dados de `D:\S3\` para o banco de dados. Todos os arquivos são armazenados em `D:\S3\` na instância de banco de dados.

As limitações a seguir se aplicam a:

**nota**  
O tráfego entre o host do RDS e o S3 é roteado por meio de endpoints da VPC em VPCs internas do RDS para todos os recursos do SQL Server que usam o S3. Esse tráfego não usa a ENI do endpoint da instância do RDS. As políticas de bucket do S3 não podem restringir o tráfego do RDS com base em condições de rede.
+ Os arquivos na pasta `D:\S3` são excluídos na réplica em espera após um failover em instâncias Multi-AZ. Para obter mais informações, consulte [Limitações Multi-AZ para a integração do S3](#S3-MAZ).
+ A instância de banco de dados e o bucket do S3 devem estar na mesma região da AWS.
+ Se você executar mais de uma tarefa de integração do S3 por vez, as tarefas serão executadas sequencialmente, não em paralelo.
**nota**  
As tarefas de integração do S3 compartilham a mesma fila que as tarefas nativas de backup e restauração. É possível ter no máximo duas tarefas em andamento a qualquer momento nesta fila. Portanto, duas tarefas nativas de backup e restauração em execução bloquearão todas as tarefas de integração do S3.
+ É necessário habilitar novamente o recurso de integração do S3 em instâncias restauradas. A integração do S3 não é propagada da instância de origem para a instância restaurada. Os arquivos em `D:\S3` são excluídos em uma instância restaurada.
+ O download na instância de banco de dados é limitado a 100 arquivos. Em outras palavras, não pode haver mais de 100 arquivos em `D:\S3\`.
+ Somente arquivos sem extensões de arquivo ou com as seguintes extensões de arquivo são aceitos para download: .abf, .asdatabase, .bcp, .configsettings, .csv, .dat, .deploymentoptions, .deploymenttargets, .fmt, .info, .ispac, .lst, .tbl, .txt, .xml e .xmla.
+ O bucket do S3 deve ter o mesmo proprietário da função do AWS Identity and Access Management (IAM) relacionada. Portanto, a integração do S3 entre contas não tem suporte.
+ O bucket do S3 não pode ser aberto ao público.
+ O tamanho do arquivo para uploads do RDS para o S3 é limitado a 50 GB por arquivo.
+ O tamanho do arquivo para downloads do S3 para o RDS é limitado ao máximo aceito pelo S3.

**Topics**
+ [Pré-requisitos para integrar o RDS for SQL Server com o S3](Appendix.SQLServer.Options.S3-integration.preparing.md)
+ [Habilitação da integração do RDS for SQL Server com o S3](Appendix.SQLServer.Options.S3-integration.enabling.md)
+ [Transferência de arquivos entre o RDS for SQL Server e o Amazon S3](Appendix.SQLServer.Options.S3-integration.using.md)
+ [Listar arquivos na instância de banco de dados do RDS](Appendix.SQLServer.Options.S3-integration.using.listing-files.md)
+ [Excluir arquivos na instância de banco de dados do RDS](Appendix.SQLServer.Options.S3-integration.using.deleting-files.md)
+ [Monitorar o status de uma tarefa de transferência de arquivo](Appendix.SQLServer.Options.S3-integration.using.monitortasks.md)
+ [Cancelar uma tarefa](Appendix.SQLServer.Options.S3-integration.canceltasks.md)
+ [Limitações Multi-AZ para a integração do S3](#S3-MAZ)
+ [Desabilitação da integração do RDS for SQL Server com o S3](Appendix.SQLServer.Options.S3-integration.disabling.md)

Para obter mais informações sobre como trabalhar com arquivos no Amazon S3, consulte [Conceitos básicos do Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3).

# Pré-requisitos para integrar o RDS for SQL Server com o S3
<a name="Appendix.SQLServer.Options.S3-integration.preparing"></a>

Antes de começar, encontre e crie o bucket do S3 que você deseja usar. Além disso, adicione permissões para que a instância de banco de dados do RDS possa acessar o bucket do S3. Para configurar esse acesso, crie uma política do IAM e uma função do IAM.

## Console
<a name="Appendix.SQLServer.Options.S3-integration.preparing.console"></a>

**Como criar uma política do IAM para acesso ao Amazon S3**

1. No [Console de gerenciamento do IAM](https://console.aws.amazon.com/iam/home?#home), escolha **Policies (Políticas)** no painel de navegação.

1. Crie uma nova política e use a guia **Visual editor (Editor visual)** para as etapas a seguir.

1. Para **Service (Serviço)**, insira **S3** e escolha o serviço do **S3**.

1. Para **Actions (Ações)**, escolha o seguinte para conceder o acesso que a instância de banco de dados exige:
   + `ListAllMyBuckets`: obrigatório.
   + `ListBucket`: obrigatório.
   + `GetBucketAcl`: obrigatório.
   + `GetBucketLocation`: obrigatório.
   + `GetObject`: necessário para baixar arquivos do S3 em `D:\S3\`.
   + `PutObject` – necessário para fazer upload de arquivos de `D:\S3\` no S3
   + `ListMultipartUploadParts` – necessário para fazer upload de arquivos de `D:\S3\` no S3
   + `AbortMultipartUpload` – necessário para fazer upload de arquivos de `D:\S3\` no S3

1. Para **Resources (Recursos)**, as opções exibidas dependem de quais ações são escolhidas na etapa anterior. É possível ver opções para **bucket**, **object (objeto)** ou os dois. Para cada um deles, adicione o nome de recurso da Amazon (ARN) adequado.

   Em **bucket**, adicione o ARN do bucket que você deseja usar. Por exemplo, se o bucket for chamado de *amzn-s3-demo-bucket*, defina o ARN como `arn:aws:s3:::amzn-s3-demo-bucket`.

   Em **object (objeto)**, insira o ARN do bucket e escolha uma das seguintes opções:
   + Para conceder acesso a todos os arquivos no bucket especificado, escolha **Any (Qualquer um)** para **Bucket name (Nome do bucket)** e **Object name (Nome do objeto)**.
   + Para conceder acesso a pastas ou arquivos específicos no bucket, forneça os ARNs dos objetos e buckets específicos que você deseja que o SQL Server acesse. 

1. Siga as instruções no console até terminar a criação da política.

   O conteúdo anterior é um guia resumido para configurar uma política. Para instruções mais detalhadas sobre como criar políticas do IAM, consulte [Criar políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) no *Guia do usuário do IAM.*

**Como criar uma função do IAM que usa a política do IAM do procedimento anterior**

1. No [Console de gerenciamento do IAM](https://console.aws.amazon.com/iam/home?#home), escolha **Roles (Funções)** no painel de navegação.

1. Crie uma nova função do IAM e escolha as seguintes opções à medida que elas forem exibidas no console:
   + **AWS Serviço da**
   + **RDS**
   + **RDS – adicionar função ao banco de dados**

   Escolha **Next:Permissions (Próximo: permissões)** na parte inferior.

1. Para **Attach permissions policies (Anexar políticas de permissões)**, insira o nome da política do IAM criada anteriormente. Depois disso, escolha essa política na lista.

1. Siga as instruções no console até terminar a criação da função.

   O anterior é um guia resumido para configurar uma função. Se quiser informações mais detalhadas sobre como criar funções, consulte [Funções do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) no *Guia do usuário do IAM.*

## AWS CLI
<a name="Appendix.SQLServer.Options.S3-integration.preparing.CLI"></a>

Para conceder acesso do Amazon RDS a um bucket do Simple Storage Service (Simple Storage Service (Amazon S3)), use o seguinte processo:

1. Crie uma política do IAM que conceda ao Amazon RDS acesso a um bucket do S3.

1. Crie uma função do IAM que o Amazon RDS possa assumir em seu nome para acessar seus buckets do S3.

   Para ter mais informações, consulte [Criar um perfil para delegar permissões a um usuário do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) no *Guia do usuário do IAM*.

1. Anexe a política do IAM que você criou ao perfil do IAM que você criou.

**Para criar a política do IAM**

Inclua as ações adequadas para conceder o acesso que a instância de banco de dados exige:
+ `ListAllMyBuckets`: obrigatório.
+ `ListBucket`: obrigatório.
+ `GetBucketAcl`: obrigatório.
+ `GetBucketLocation`: obrigatório.
+ `GetObject`: necessário para baixar arquivos do S3 em `D:\S3\`.
+ `PutObject` – necessário para fazer upload de arquivos de `D:\S3\` no S3
+ `ListMultipartUploadParts` – necessário para fazer upload de arquivos de `D:\S3\` no S3
+ `AbortMultipartUpload` – necessário para fazer upload de arquivos de `D:\S3\` no S3

1. O comando da AWS CLI a seguir cria uma política do IAM denominada `rds-s3-integration-policy` com essas opções. Ele concede acesso a um bucket denominado *amzn-s3-demo-bucket*.  
**Example**  

   Para Linux, macOS ou Unix:

   ```
   aws iam create-policy \
   	 --policy-name rds-s3-integration-policy \
   	 --policy-document '{
   	        "Version": "2012-10-17",		 	 	 
   	        "Statement": [
   	            {
   	                "Effect": "Allow",
   	                "Action": "s3:ListAllMyBuckets",
   	                "Resource": "*"
   	            },
   	            {
   	                "Effect": "Allow",
   	                "Action": [
   	                    "s3:ListBucket",
   	                    "s3:GetBucketAcl",
   	                    "s3:GetBucketLocation"
   	                ],
   	                "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
   	            },
   	            {
   	                "Effect": "Allow",
   	                "Action": [
   	                    "s3:GetObject",
   	                    "s3:PutObject",
   	                    "s3:ListMultipartUploadParts",
   	                    "s3:AbortMultipartUpload"
   	                ],
   	                "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*"
   	            }
   	        ]
   	    }'
   ```

   Para Windows:

   Altere os finais de linha para os que são compatíveis com a interface (`^`, em vez de `\`). Além disso, no Windows, é necessário inserir um caractere de escape em todas as aspas duplas com um `\`. Para evitar a necessidade de inserir um caractere de escape em aspas no JSON, é possível salvá-lo em um arquivo e passá-lo como um parâmetro. 

   Primeiro, crie o arquivo `policy.json` com a seguinte política de permissão:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "s3:ListAllMyBuckets",
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetBucketACL",
                   "s3:GetBucketLocation"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:PutObject",
                   "s3:ListMultipartUploadParts",
                   "s3:AbortMultipartUpload"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*"
           }
       ]
   }
   ```

------

   Depois disso, use o seguinte comando para criar a política:

   ```
   aws iam create-policy ^
        --policy-name rds-s3-integration-policy ^
        --policy-document file://file_path/assume_role_policy.json
   ```

1. Após a criação da política, observe o nome de recurso da Amazon (ARN) da política. O ARN é necessário para uma etapa subsequente.

**Para criar perfil do IAM**
+ O comando da AWS CLI a seguir cria a função do IAM `rds-s3-integration-role` para essa finalidade.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws iam create-role \
  	   --role-name rds-s3-integration-role \
  	   --assume-role-policy-document '{
  	     "Version": "2012-10-17",		 	 	 
  	     "Statement": [
  	       {
  	         "Effect": "Allow",
  	         "Principal": {
  	            "Service": "rds.amazonaws.com"
  	          },
  	         "Action": "sts:AssumeRole"
  	       }
  	     ]
  	   }'
  ```

  Para Windows:

  Altere os finais de linha para os que são compatíveis com a interface (`^`, em vez de `\`). Além disso, no Windows, é necessário inserir um caractere de escape em todas as aspas duplas com um `\`. Para evitar a necessidade de inserir um caractere de escape em aspas no JSON, é possível salvá-lo em um arquivo e passá-lo como um parâmetro. 

  Primeiro, crie o arquivo `assume_role_policy.json` com a seguinte política:

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "Service": [
                      "rds.amazonaws.com"
                  ]
              },
              "Action": "sts:AssumeRole"
          }
      ]
  }
  ```

------

  Depois disso, use o comando a seguir para criar a função do IAM:

  ```
  aws iam create-role ^
       --role-name rds-s3-integration-role ^
       --assume-role-policy-document file://file_path/assume_role_policy.json
  ```  
**Example de usar a chave de contexto de condição global para criar a função do IAM**  

  Recomendamos usar as chaves de contexto de condição global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) e [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) em políticas baseadas em recursos para limitar as permissões do serviço a um recurso específico. Essa é a maneira mais eficiente de se proteger contra o [problema "confused deputy"](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html).

  Você pode usar as duas chaves de contexto de condição global e fazer com que o valor `aws:SourceArn` contenha o ID da conta. Nesses casos, verifique se o valor `aws:SourceAccount` e a conta no valor `aws:SourceArn` usa o mesmo ID de conta quando eles são usados na mesma instrução de política.
  + Use `aws:SourceArn` se quiser acesso entre serviços para um único recurso.
  + Use `aws:SourceAccount` se você quiser permitir que qualquer recurso nessa conta seja associado ao uso entre serviços.

  Na política, certifique-se de usar a chave de contexto de condição global `aws:SourceArn` com o nome do recurso da Amazon (ARN) completo dos recursos acessando a função. Para integração do S3, certifique-se de incluir os ARNs de instância de banco de dados, conforme mostrado no exemplo a seguir.

  Para Linux, macOS ou Unix:

  ```
  aws iam create-role \
  	   --role-name rds-s3-integration-role \
  	   --assume-role-policy-document '{
  	     "Version": "2012-10-17",		 	 	 
  	     "Statement": [
  	       {
  	         "Effect": "Allow",
  	         "Principal": {
  	            "Service": "rds.amazonaws.com"
  	          },
  	         "Action": "sts:AssumeRole",
                  "Condition": {
                      "StringEquals": {
                          "aws:SourceArn":"arn:aws:rds:Region:my_account_ID:db:db_instance_identifier"
                      }
                  }
  	       }
  	     ]
  	   }'
  ```

  Para Windows:

  Adicione as chaves de contexto de condição globais à `assume_role_policy.json`.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "Service": [
                      "rds.amazonaws.com"
                  ]
              },
              "Action": "sts:AssumeRole",
              "Condition": {
                  "StringEquals": {
                      "aws:SourceArn":"arn:aws:rds:Region:my_account_ID:db:db_instance_identifier"
                  }
              }
          }
      ]
  }
  ```

------

**Para anexar a política do IAM à função do IAM**
+ O seguinte comando da AWS CLI anexa a política à função denominada `rds-s3-integration-role`. Substitua `your-policy-arn` pelo ARN da política que você anotou em uma etapa anterior.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws iam attach-role-policy \
  	   --policy-arn your-policy-arn \
  	   --role-name rds-s3-integration-role
  ```

  Para Windows:

  ```
  aws iam attach-role-policy ^
  	   --policy-arn your-policy-arn ^
  	   --role-name rds-s3-integration-role
  ```

# Habilitação da integração do RDS for SQL Server com o S3
<a name="Appendix.SQLServer.Options.S3-integration.enabling"></a>

Na seção a seguir, é possível saber como habilitar a integração do Amazon S3 com o Amazon RDS for SQL Server. Para trabalhar com a integração do S3, a instância do banco de dados deve ser associada à função do IAM criada anteriormente para que você possa usar o parâmetro de nome do recurso `S3_INTEGRATION`.

**nota**  
Para adicionar uma função do IAM a uma instância de banco de dados, o status da instância de banco de dados deve ser **available (disponível)**.

## Console
<a name="Appendix.SQLServer.Options.S3-integration.enabling.console"></a>

**Para associar uma função do IAM à sua instância de banco de dados**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Escolha o nome da instância de banco de dados do RDS for SQL Server para exibir seus detalhes.

1. Na guia **Connectivity & security (Conectividade e segurança)**, na seção **Manage IAM roles (Gerenciar funções do IAM)**, escolha a função do IAM a ser adicionada para **Add IAM roles to this instance (Adicionar funções do IAM a essa instância)**.

1. Em **Feature (Recurso)**, escolha **S3\$1INTEGRATION**.  
![\[Adicionar a função S3_INTEGRATION\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/ora-s3-integration-role.png)

1. Escolha **Add role (adicionar função)**.

## AWS CLI
<a name="Appendix.SQLServer.Options.S3-integration.enabling.cli"></a>

**Para adicionar a função do IAM à instância de banco de dados do RDS for SQL Server**
+ O seguinte comando da AWS CLI adiciona a função do IAM a uma instância de banco de dados do RDS for SQL Server chamada `mydbinstance`.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds add-role-to-db-instance \
  	   --db-instance-identifier mydbinstance \
  	   --feature-name S3_INTEGRATION \
  	   --role-arn your-role-arn
  ```

  Para Windows:

  ```
  aws rds add-role-to-db-instance ^
  	   --db-instance-identifier mydbinstance ^
  	   --feature-name S3_INTEGRATION ^
  	   --role-arn your-role-arn
  ```

  Substitua `your-role-arn` pelo ARN da função que você anotou em uma etapa anterior. `S3_INTEGRATION` deve ser especificado para a opção `--feature-name`.

# Transferência de arquivos entre o RDS for SQL Server e o Amazon S3
<a name="Appendix.SQLServer.Options.S3-integration.using"></a>

É possível usar os procedimentos armazenados do Amazon RDS para baixar e carregar arquivos entre o Amazon S3 e a instância de banco de dados do RDS. Também é possível usar os procedimentos armazenados do Amazon RDS para listar e excluir arquivos na instância do RDS.

Os arquivos que você baixa e carrega no S3 são armazenados na pasta `D:\S3`. Essa é a única pasta que pode ser usada para acessar seus arquivos. É possível organizar seus arquivos em subpastas, que são criadas para você ao incluir a pasta de destino durante o download.

Alguns dos procedimentos armazenados exigem que você forneça um nome de recurso da Amazon (ARN) ao bucket e arquivo do S3. O formato do ARN é `arn:aws:s3:::amzn-s3-demo-bucket/file_name`. O Amazon S3 não exige um número de conta ou região da AWS nos ARNs.

As tarefas de integração do S3 são executadas sequencialmente e compartilham a mesma fila como tarefas nativas de restauração e backup nativos. É possível ter no máximo duas tarefas em andamento a qualquer momento nesta fila. Pode demorar até cinco minutos para que o processamento da tarefa comece.

## Baixar arquivos de um bucket do Amazon S3 em uma instância de banco de dados SQL Server
<a name="Appendix.SQLServer.Options.S3-integration.using.download"></a>

Para baixar arquivos de um bucket do S3 bucket em uma instância de banco de dados do RDS for SQL Server, use o procedimento armazenado do Amazon RDS `msdb.dbo.rds_download_from_s3` com os parâmetros a seguir.


| Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição | 
| --- | --- | --- | --- | --- | 
|  `@s3_arn_of_file`  |  NVARCHAR  |  –  |  Obrigatório  |  O ARN do S3 do arquivo para download, por exemplo: `arn:aws:s3:::amzn-s3-demo-bucket/mydata.csv`  | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  Optional  |  O caminho do arquivo para a instância do RDS: Se não especificado, o caminho será `D:\S3\<filename in s3>`. O RDS oferece suporte a caminhos absolutos e relativos. Se você deseja criar uma subpasta, inclua-a no caminho do arquivo.  | 
|  `@overwrite_file`  |  INT  |  0  |  Optional  | Substitua o arquivo existente:  0 = não substituir 1 = substituir | 

É possível baixar arquivos sem uma extensão de arquivo e arquivos com as seguintes extensões: .bcp, .csv, .dat, .fmt, .info, .lst, .tbl, .txt e .xml.

**nota**  
Arquivos com a extensão .ispac são têm suporte para download quando o SQL Server Integration Services está habilitado. Para obter mais informações sobre como habilitar o SSIS, consulte [SQL Server Integration Services](Appendix.SQLServer.Options.SSIS.md).  
Arquivos com as seguintes extensões têm suporte para download quando o SQL Server Analysis Services está habilitado: .abf, .asdatabase, .configsettings, .deploymentoptions, .deploymenttargets e .xmla. Para obter mais informações sobre como habilitar o SSAS, consulte [SQL Server Analysis Services](Appendix.SQLServer.Options.SSAS.md).

O exemplo a seguir mostra o procedimento armazenado para baixar arquivos do S3. 

```
exec msdb.dbo.rds_download_from_s3
	    @s3_arn_of_file='arn:aws:s3:::amzn-s3-demo-bucket/bulk_data.csv',
	    @rds_file_path='D:\S3\seed_data\data.csv',
	    @overwrite_file=1;
```

A operação de exemplo `rds_download_from_s3` cria uma pasta chamada `seed_data` em `D:\S3\`, se a pasta não existir ainda. Depois disso, o exemplo baixa o arquivo de origem `bulk_data.csv` do S3 para um novo arquivo chamado `data.csv` na instância de banco de dados. Se o arquivo existia anteriormente, ele será substituído porque o parâmetro `@overwrite_file` está definido como `1`.

## Fazer upload de arquivos de uma instância de banco de dados SQL Server para um bucket do Amazon S3
<a name="Appendix.SQLServer.Options.S3-integration.using.upload"></a>

Para fazer upload de arquivos de uma instância de banco de dados do RDS for SQL Server para um bucket do S3, use o procedimento armazenado do Amazon RDS `msdb.dbo.rds_upload_to_s3` com os parâmetros a seguir.


| Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição | 
| --- | --- | --- | --- | --- | 
|  `@s3_arn_of_file`  |  NVARCHAR  |  –  |  Obrigatório  |  O ARN do S3 do arquivo a ser criado no S3, por exemplo: `arn:aws:s3:::amzn-s3-demo-bucket/mydata.csv`  | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  Obrigatório  | O caminho de arquivo do arquivo para fazer upload no S3. Caminhos relativos e absolutos têm suporte. | 
|  `@overwrite_file`  |  INT  |  –  |  Optional  |  Substitua o arquivo existente:  0 = não substituir 1 = substituir  | 

O exemplo a seguir faz upload do arquivo chamado `data.csv` do local especificado em `D:\S3\seed_data\` para um arquivo `new_data.csv` no bucket do S3 especificado pelo ARN.

```
exec msdb.dbo.rds_upload_to_s3 
		@rds_file_path='D:\S3\seed_data\data.csv',
		@s3_arn_of_file='arn:aws:s3:::amzn-s3-demo-bucket/new_data.csv',
		@overwrite_file=1;
```

Se o arquivo existia antes no S3, ele será substituído porque o parâmetro @overwrite\$1file está definido como `1`.

# Listar arquivos na instância de banco de dados do RDS
<a name="Appendix.SQLServer.Options.S3-integration.using.listing-files"></a>

Para listar os arquivos disponíveis na instância de banco de dados, use a função e o procedimento armazenado. Primeiro, execute o seguinte procedimento armazenado para coletar detalhes de arquivo dos arquivos em `D:\S3\`. 

```
exec msdb.dbo.rds_gather_file_details;
```

O procedimento armazenado retorna o ID da tarefa. Assim como outras tarefas, esse procedimento armazenado é executado de forma assíncrona. Assim que o status da tarefa for `SUCCESS`, é possível usar o ID da tarefa na função `rds_fn_list_file_details` para listar os diretórios e arquivos existentes em D:\$1S3\$1, conforme mostrado a seguir.

```
SELECT * FROM msdb.dbo.rds_fn_list_file_details(TASK_ID);
```

A função `rds_fn_list_file_details` exibe uma tabela com as colunas a seguir.


| Parâmetro de saída | Descrição | 
| --- | --- | 
| filepath | Caminho absoluto do arquivo (por exemplo, D:\$1S3\$1mydata.csv) | 
| size\$1in\$1bytes | Tamanho do arquivo (em bytes) | 
| last\$1modified\$1utc | A data e a hora da última modificação em formato UTC | 
| is\$1directory | Opção que indica se o item é um diretório (true/false) | 

# Excluir arquivos na instância de banco de dados do RDS
<a name="Appendix.SQLServer.Options.S3-integration.using.deleting-files"></a>

Para excluir os arquivos disponíveis na instância de banco de dados, use o procedimento armazenado do Amazon RDS `msdb.dbo.rds_delete_from_filesystem` com os seguintes parâmetros. 


| Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição | 
| --- | --- | --- | --- | --- | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  Obrigatório  | O caminho de arquivo do arquivo a ser excluído. Caminhos relativos e absolutos têm suporte.  | 
|  `@force_delete`  |  INT  | 0 |  Optional  |  Para excluir um diretório, este sinalizador deve ser incluído e definido como `1`. `1` = excluir um diretório Este parâmetro será ignorado se você estiver excluindo um arquivo.  | 

Para excluir um diretório, o `@rds_file_path` deve terminar com uma barra invertida (`\`), e `@force_delete` deve ser definido como `1`.

O exemplo a seguir exclui o arquivo `D:\S3\delete_me.txt`.

```
exec msdb.dbo.rds_delete_from_filesystem
    @rds_file_path='D:\S3\delete_me.txt';
```

O exemplo a seguir exclui o diretório `D:\S3\example_folder\`.

```
exec msdb.dbo.rds_delete_from_filesystem
    @rds_file_path='D:\S3\example_folder\',
    @force_delete=1;
```

# Monitorar o status de uma tarefa de transferência de arquivo
<a name="Appendix.SQLServer.Options.S3-integration.using.monitortasks"></a>

Para rastrear o status da tarefa de integração do S3, chame a função `rds_fn_task_status`. Ela leva dois parâmetros. O primeiro parâmetro sempre deve ser `NULL` porque não se aplica à integração do S3. O segundo parâmetro aceita um ID de tarefa.

Para ver uma lista de todas as tarefas, defina o primeiro parâmetro como `NULL` e o segundo parâmetro como `0`, conforme mostrado no seguinte exemplo.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,0);
```

Para obter uma tarefa específica, defina o primeiro parâmetro como `NULL` e o segundo parâmetro como o ID da tarefa, conforme mostrado no exemplo a seguir.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,42);
```

A função `rds_fn_task_status` retorna as informações a seguir.


|  Parâmetro de saída  |  Descrição  | 
| --- | --- | 
|  `task_id`  |  O ID da tarefa.  | 
|  `task_type`  |  Para a integração do S3, as tarefas podem ter os seguintes tipos de tarefa: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/Appendix.SQLServer.Options.S3-integration.using.monitortasks.html)  | 
|  `database_name`  | Não aplicável a tarefas de integração do S3. | 
|  `% complete`  |  O progresso da tarefa em porcentagem.  | 
|  `duration(mins)`  |  A quantidade de tempo gasta na tarefa, em minutos.  | 
|  `lifecycle`  |  O status da tarefa. Os possíveis status são os seguintes: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/Appendix.SQLServer.Options.S3-integration.using.monitortasks.html)  | 
|  `task_info`  |  Informações adicionais sobre a tarefa. Se um erro ocorrer durante o processamento, essa coluna conterá informações sobre o erro.   | 
|  `last_updated`  |  A data e hora em que o status da tarefa foi atualizado pela última vez.   | 
|  `created_at`  |  A data e hora em que a tarefa foi criada.  | 
|  `S3_object_arn`  |  O ARN do objeto do S3 baixado ou carregado.  | 
|  `overwrite_S3_backup_file`  |  Não aplicável a tarefas de integração do S3.  | 
|  `KMS_master_key_arn`  |  Não aplicável a tarefas de integração do S3.  | 
|  `filepath`  |  O caminho de arquivo na instância de banco de dados do RDS  | 
|  `overwrite_file`  |  Uma opção que indica se um arquivo existente foi substituído.  | 
|  `task_metadata`  |  Não aplicável a tarefas de integração do S3.  | 

# Cancelar uma tarefa
<a name="Appendix.SQLServer.Options.S3-integration.canceltasks"></a>

Para cancelar tarefas de integração do S3, use o procedimento armazenado `msdb.dbo.rds_cancel_task` com o parâmetro `task_id`. Tarefas de listagem e exclusão que estão em progresso não podem ser canceladas. O exemplo a seguir mostra uma solicitação para cancelar uma tarefa. 

```
exec msdb.dbo.rds_cancel_task @task_id = 1234;
```

Para obter uma visão geral de todas as tarefas e seus IDs de tarefa, use a função `rds_fn_task_status` conforme descrito em [Monitorar o status de uma tarefa de transferência de arquivo](Appendix.SQLServer.Options.S3-integration.using.monitortasks.md).

## Limitações Multi-AZ para a integração do S3
<a name="S3-MAZ"></a>

Em instâncias Multi-AZ, os arquivos na pasta `D:\S3` são excluídos na réplica em espera após um failover. Um failover pode ser planejado, por exemplo, durante modificações de instâncias de banco de dados, como alterar a classe de instância ou atualizar a versão do mecanismo. Ou um failover pode ser não planejado, durante uma interrupção do principal.

**nota**  
Não recomendamos usar a pasta `D:\S3` para armazenamento de arquivos. A prática recomendada é carregar arquivos criados no Amazon S3 para torná-los duráveis e baixar arquivos quando precisar importar dados.

Para determinar o último tempo de failover, é possível usar o procedimento `msdb.dbo.rds_failover_time` armazenado. Para obter mais informações, consulte [Determinar o horário do último failover do Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.LastFailover.md).

**Example de nenhum failover recente**  
Este exemplo mostra a saída quando não há nenhum failover recente nos logs de erros. Nenhum failover aconteceu desde 29-04-2020 23:59:00.01.  
Portanto, todos os arquivos baixados após esse horário que não foram excluídos usando o procedimento `rds_delete_from_filesystem` armazenado ainda estão acessíveis no host atual. Arquivos baixados antes desse horário também podem estar disponíveis.  


| errorlog\$1available\$1from | recent\$1failover\$1time | 
| --- | --- | 
|  29-04-2020 23:59:00.0100000  |  nulo  | 

**Example de failover recente**  
Este exemplo mostra a saída quando há um failover nos logs de erros. O failover mais recente foi em 05-05-2020 18:57:51.89.  
Todos os arquivos baixados após esse horário que não foram excluídos usando o procedimento `rds_delete_from_filesystem` armazenado ainda estão acessíveis no host atual.  


| errorlog\$1available\$1from | recent\$1failover\$1time | 
| --- | --- | 
|  29-04-2020 23:59:00.0100000  |  05-05-2020 18:57:51.8900000  | 

# Desabilitação da integração do RDS for SQL Server com o S3
<a name="Appendix.SQLServer.Options.S3-integration.disabling"></a>

A seguir, é possível saber como desabilitar a integração do Amazon S3 com o Amazon RDS for SQL Server. Os arquivos em `D:\S3\` não são excluídos ao desabilitar a integração do S3.

**nota**  
Para remover uma função do IAM de uma instância de banco de dados, o status da instância de banco de dados deve ser `available`.

## Console
<a name="Appendix.SQLServer.Options.S3-integration.disabling.console"></a>

**Como desassociar uma função do IAM da instância de banco de dados**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Escolha o nome da instância de banco de dados do RDS for SQL Server para exibir seus detalhes.

1. Na guia **Connectivity & security (Conectividade e segurança)**, na seção **Manage IAM roles (Gerenciar funções do IAM)**, escolha a função do IAM a ser removida.

1. Escolha **Excluir**.

## AWS CLI
<a name="Appendix.SQLServer.Options.S3-integration.disabling.cli"></a>

**Para remover a função do IAM da instância de banco de dados do RDS for SQL Server**
+ O seguinte comando da AWS CLI remove a função do IAM de uma instância de banco de dados do RDS for SQL Server chamada `mydbinstance`.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds remove-role-from-db-instance \
  	   --db-instance-identifier mydbinstance \
  	   --feature-name S3_INTEGRATION \
  	   --role-arn your-role-arn
  ```

  Para Windows:

  ```
  aws rds remove-role-from-db-instance ^
  	   --db-instance-identifier mydbinstance ^
  	   --feature-name S3_INTEGRATION ^
  	   --role-arn your-role-arn
  ```

  Substitua `your-role-arn` pelo ARN adequado da função do IAM para a opção `--feature-name`.

# Usar o Database Mail no Amazon RDS for SQL Server
<a name="SQLServer.DBMail"></a>

Você pode usar o Database Mail para enviar mensagens de e-mail aos usuários a partir da instância de banco de dados do Amazon RDS no SQL Server. As mensagens podem conter arquivos e resultados de consultas. O Database Mail inclui os seguintes componentes:
+ Objetos de**configuração e segurança** – esses objetos criam perfis e contas e são armazenados no banco de dados `msdb`.
+ **Objetos de mensagens ** – esses objetos incluem o procedimento armazenado [sp\$1send\$1dbmail](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql) usado para enviar mensagens e estruturas de dados que contêm informações sobre mensagens. Eles estão armazenados no banco de dados `msdb`.
+ **Objetos de registro e auditoria** – o Database Mail grava informações de registro no banco de dados `msdb` e no log de eventos de aplicações do Microsoft Windows.
+ **Executável do Database Mail** – `DatabaseMail.exe` lê a partir de uma fila no banco de dados `msdb` e envia mensagens de e-mail.

O RDS oferece suporte ao Database Mail para todas as versões do SQL Server nas edições Web, Standard e Enterprise.

## Limitações
<a name="SQLServer.DBMail.Limitations"></a>

As seguintes limitações se aplicam ao uso do Database Mail em sua instância de banco de dados SQL Server:
+ O Database Mail não é compatível com o SQL Server Express Edition.
+ A modificação dos parâmetros de configuração do Database Mail não é aceita. Para ver os valores predefinidos (padrão), use o procedimento armazenado [sysmail\$1help\$1configure\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-help-configure-sp-transact-sql) .
+ Os anexos de arquivo não são totalmente compatíveis. Para ter mais informações, consulte [Trabalhar com anexos de arquivos](#SQLServer.DBMail.Files).
+ O tamanho máximo do anexo do arquivo é de 1 MB.
+ O Database Mail requer configuração adicional em instâncias de banco de dados Multi-AZ. Para ter mais informações, consulte [Considerações para implantações Multi-AZ](#SQLServer.DBMail.MAZ).
+ Não há suporte para configurar o SQL Server Agent para enviar mensagens de email para operadores predefinidos.

# Habilitar Database Mail
<a name="SQLServer.DBMail.Enable"></a>

Use o seguinte processo para habilitar o Database Mail para a instância de banco de dados:

1. Crie um novo parameter group.

1. Modifique o grupo de parâmetros para definir o parâmetro `database mail xps` como 1.

1. Associe o grupo de parâmetros à instância de banco de dados.

## Criar o grupo de parâmetros para o Database Mail
<a name="DBMail.CreateParamGroup"></a>

Crie um grupo de parâmetros para o parâmetro `database mail xps` que corresponde à edição e à versão do SQL Server da instância de banco de dados.

**nota**  
Você também pode modificar um grupo de parâmetros existente. Siga o procedimento em [Modificar o parâmetro que habilita o Database Mail](#DBMail.ModifyParamGroup).

### Console
<a name="DBMail.CreateParamGroup.Console"></a>

O exemplo a seguir cria um grupo de parâmetros para o SQL Server Standard Edition 2016.

**Como criar o grupo de parâmetros**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Parameter groups** (Grupos de parâmetros).

1. Escolha **Create parameter group (Criar parameter group)**.

1. No painel**Create parameter group (Criar parameter group)**, faça o seguinte:

   1. Em **Família de grupos de parâmetros**, escolha **sqlserver-se-13.0**.

   1. Em **Nome do grupo**, insira um identificador para o grupo de parâmetros, como **dbmail-sqlserver-se-13**.

   1. Em **Descrição**, insira **Database Mail XPs**.

1. Escolha **Criar**.

### CLI
<a name="DBMail.CreateParamGroup.CLI"></a>

O exemplo a seguir cria um grupo de parâmetros para o SQL Server Standard Edition 2016.

**Como criar o grupo de parâmetros**
+ Use um dos seguintes comandos.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds create-db-parameter-group \
      --db-parameter-group-name dbmail-sqlserver-se-13 \
      --db-parameter-group-family "sqlserver-se-13.0" \
      --description "Database Mail XPs"
  ```

  Para Windows:

  ```
  aws rds create-db-parameter-group ^
      --db-parameter-group-name dbmail-sqlserver-se-13 ^
      --db-parameter-group-family "sqlserver-se-13.0" ^
      --description "Database Mail XPs"
  ```

## Modificar o parâmetro que habilita o Database Mail
<a name="DBMail.ModifyParamGroup"></a>

Modifique o parâmetro `database mail xps` no grupo de parâmetros que corresponde à edição e à versão do SQL Server da instância de banco de dados.

Para habilitar o Database Mail, defina o parâmetro `database mail xps` como 1.

### Console
<a name="DBMail.ModifyParamGroup.Console"></a>

O exemplo a seguir modifica o grupo de parâmetros que você criou para o SQL Server Standard Edition 2016.

**Como modificar o grupo de parâmetros**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, selecione **Parameter groups**.

1. Escolha o grupo de parâmetros, como **debmail-sqlserver-se-13**.

1. Em **Parâmetros**, filtre a lista de parâmetros para **mail**.

1. Escolha **xps de email de banco**de dados.

1. Escolha **Edit parameters**.

1. Digite **1**.

1. Selecione **Save changes**.

### CLI
<a name="DBMail.ModifyParamGroup.CLI"></a>

O exemplo a seguir modifica o grupo de parâmetros que você criou para o SQL Server Standard Edition 2016.

**Como modificar o grupo de parâmetros**
+ Use um dos seguintes comandos.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds modify-db-parameter-group \
      --db-parameter-group-name dbmail-sqlserver-se-13 \
      --parameters "ParameterName='database mail xps',ParameterValue=1,ApplyMethod=immediate"
  ```

  Para Windows:

  ```
  aws rds modify-db-parameter-group ^
      --db-parameter-group-name dbmail-sqlserver-se-13 ^
      --parameters "ParameterName='database mail xps',ParameterValue=1,ApplyMethod=immediate"
  ```

## Associar o grupo de parâmetros à instância de banco de dados
<a name="DBMail.AssocParamGroup"></a>

É possível usar o Console de gerenciamento da AWS ou a AWS CLI para associar o grupo de parâmetros do Database Mail à instância de banco de dados.

### Console
<a name="DBMail.AssocParamGroup.Console"></a>

É possível associar o grupo de parâmetros do Database Mail a uma instância de banco de dados nova ou existente.
+ Para uma nova instância de banco de dados, associe-o ao executar a instância. Para ter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).
+ Para uma instância de banco de dados existente, associe-o modificando a instância. Para ter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).

### CLI
<a name="DBMail.AssocParamGroup.CLI"></a>

É possível associar o grupo de parâmetros do Database Mail a uma instância de banco de dados nova ou existente.

**Para criar uma instância de banco de dados com o grupo de parâmetros do Database Mail**
+ Especifique o mesmo tipo de mecanismo de banco de dados e a versão principal que você usou ao criar o grupo de parâmetros.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier mydbinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 13.00.5426.0.v1 \
      --allocated-storage 100 \
      --manage-master-user-password \
      --master-username admin \
      --storage-type gp2 \
      --license-model li
      --db-parameter-group-name dbmail-sqlserver-se-13
  ```

  Para Windows:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier mydbinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 13.00.5426.0.v1 ^
      --allocated-storage 100 ^
      --manage-master-user-password ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --db-parameter-group-name dbmail-sqlserver-se-13
  ```

**Para modificar uma instância de banco de dados e associar o grupo de parâmetros do Database Mail**
+ Use um dos seguintes comandos.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier mydbinstance \
      --db-parameter-group-name dbmail-sqlserver-se-13 \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier mydbinstance ^
      --db-parameter-group-name dbmail-sqlserver-se-13 ^
      --apply-immediately
  ```

# Configurando o Correio do Banco
<a name="SQLServer.DBMail.Configure"></a>

Execute as seguintes tarefas para configurar o Database Mail:

1. Crie o perfil do Database Mail.

1. Crie a conta Database Mail.

1. Adicione a conta de Correio do Banco de Dados ao perfil de Correio do Banco de Dados.

1. Adicione usuários ao perfil Database Mail.

**nota**  
Para configurar o Database Mail, certifique-se de que você tem `execute` permissão nos procedimentos armazenados no `msdb` banco de dados.

## Criando o perfil de Correio de Banco de
<a name="SQLServer.DBMail.Configure.Profile"></a>

Para criar o perfil Database Mail, use o procedimento armazenado [sysmail\$1add\$1profile\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-profile-sp-transact-sql) . O exemplo a seguir cria um perfil chamado `Notifications`.

**Para criar o perfil**
+ Use a seguinte instrução SQL.

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_profile_sp  
      @profile_name         = 'Notifications',  
      @description          = 'Profile used for sending outgoing notifications using Amazon SES.';
  GO
  ```

## Criando a conta Database Mail
<a name="SQLServer.DBMail.Configure.Account"></a>

Para criar a conta Database Mail, use o procedimento armazenado [sysmail\$1add\$1account\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-account-sp-transact-sql) . O exemplo a seguir cria uma conta chamada `SES` em uma instância de banco de dados do RDS para SQL Server em uma VPC privada, usando o Amazon Simple Email Service.

O uso do Amazon SES requer os seguintes parâmetros:
+ `@email_address`: uma identidade verificada do Amazon SES. Para ter mais informações, consulte [Identidades verificadas no Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/verify-addresses-and-domains.html).
+ `@mailserver_name`: um endpoint SMTP do Amazon SES. Para ter mais informações, consulte [Conexão a um endpoint SMTP do Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/smtp-connect.html).
+ `@username`: um nome de usuário SMTP do Amazon SES. Para ter mais informações, consulte [Obtenção de credenciais SMTP do Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/smtp-credentials.html).

  Não use um nome de usuário do AWS Identity and Access Management.
+ `@password`: uma senha SMTP do Amazon SES. Para ter mais informações, consulte [Obtenção de credenciais SMTP do Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/smtp-credentials.html).

**Para criar a conta**
+ Use a seguinte instrução SQL.

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_account_sp
      @account_name        = 'SES',
      @description         = 'Mail account for sending outgoing notifications.',
      @email_address       = 'nobody@example.com',
      @display_name        = 'Automated Mailer',
      @mailserver_name     = 'vpce-0a1b2c3d4e5f-01234567.email-smtp.us-west-2.vpce.amazonaws.com',
      @port                = 587,
      @enable_ssl          = 1,
      @username            = 'Smtp_Username',
      @password            = 'Smtp_Password';
  GO
  ```
**nota**  
Especifique credenciais diferentes dos prompts mostrados aqui como prática recomendada de segurança.

## Adicionar a conta do Database Mail ao perfil do Database Mail
<a name="SQLServer.DBMail.Configure.AddAccount"></a>

Para adicionar a conta Database Mail ao perfil Database Mail, use o procedimento armazenado [sysmail\$1add\$1profileaccount\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-profileaccount-sp-transact-sql). O exemplo a seguir adiciona a conta do `SES` ao perfil `Notifications`.

**Para adicionar a conta ao perfil**
+ Use a seguinte instrução SQL.

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
      @profile_name        = 'Notifications',
      @account_name        = 'SES',
      @sequence_number     = 1;
  GO
  ```

## Adicionar usuários ao perfil Database Mail
<a name="SQLServer.DBMail.Configure.AddUser"></a>

Para conceder permissão para que um principal do banco de dados `msdb` use um perfil do Database Mail, use o procedimento armazenado [sysmail\$1add\$1principalprofile\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-principalprofile-sp-transact-sql). Um *principal* é uma entidade que pode solicitar recursos do SQL Server. O principal do banco de dados deve mapear para um usuário de autenticação do SQL Server, um usuário de Autenticação do Windows ou um grupo de autenticação do Windows.

O exemplo a seguir concede acesso público ao perfil `Notifications`.

**Para adicionar um usuário ao perfil**
+ Use a seguinte instrução SQL.

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_principalprofile_sp  
      @profile_name       = 'Notifications',  
      @principal_name     = 'public',  
      @is_default         = 1;
  GO
  ```

## Procedimentos armazenados e funções do Amazon RDS para o Database Mail
<a name="SQLServer.DBMail.StoredProc"></a>

A Microsoft fornece [procedimentos armazenados](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/database-mail-stored-procedures-transact-sql) para usar o Database Mail, como criar, listar, atualizar e excluir contas e perfis. Além disso, o RDS fornece os procedimentos e funções armazenados para o Database Mail mostrados na tabela a seguir.


| Procedimento/Função | Descrição | 
| --- | --- | 
| rds\$1fn\$1sysmail\$1allitems | Mostra as mensagens enviadas, incluindo as enviadas por outros usuários. | 
| rds\$1fn\$1sysmail\$1event\$1log | Mostra eventos, incluindo aqueles para mensagens enviadas por outros usuários. | 
| rds\$1fn\$1sysmail\$1mailattachments | Mostra anexos, incluindo aqueles para mensagens enviadas por outros usuários. | 
| rds\$1sysmail\$1control | Inicia e interrompe a fila de correio (processo DatabaseMail.exe). | 
| rds\$1sysmail\$1delete\$1mailitems\$1sp | Exclui mensagens de e-mail enviadas por todos os usuários das tabelas internas do Database Mail. | 

# Enviando mensagens de e-mail usando o Database
<a name="SQLServer.DBMail.Send"></a>

Use o procedimento armazenado [sp\$1send\$1dbmail](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql) para enviar mensagens de email usando o Database Mail.

## Usage
<a name="SQLServer.DBMail.Send.Usage"></a>

```
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'profile_name',
@recipients = 'recipient1@example.com[; recipient2; ... recipientn]',
@subject = 'subject',
@body = 'message_body',
[@body_format = 'HTML'],
[@file_attachments = 'file_path1; file_path2; ... file_pathn'],
[@query = 'SQL_query'],
[@attach_query_result_as_file = 0|1]';
```

Os seguintes parâmetros são obrigatórios:
+ `@profile_name` – o nome do perfil Database Mail a partir do qual enviar a mensagem.
+ `@recipients` – a lista delimitada por ponto e vírgula de endereços de e-mail para os quais enviar a mensagem.
+ `@subject` – o assunto da mensagem.
+ `@body` – o corpo da mensagem. Você também pode usar uma variável declarada como o corpo.

Os seguintes parâmetros são opcionais:
+ `@body_format` – esse parâmetro é usado com uma variável declarada para enviar e-mail em formato HTML.
+ `@file_attachments` – a lista delimitada por ponto e vírgula de anexos de mensagens. Os caminhos de arquivo devem ser caminhos absolutos.
+ `@query` – uma consulta SQL a ser executada. Os resultados da consulta podem ser anexados como um arquivo ou incluídos no corpo da mensagem.
+ `@attach_query_result_as_file` – Se deve anexar o resultado da consulta como um arquivo. Defina como 0 para não, 1 para sim. O padrão é 0.

## Exemplos
<a name="SQLServer.DBMail.Send.Examples"></a>

Os exemplos a seguir demonstram como enviar mensagens de e-mail.

**Example de enviar uma mensagem para um único destinatário**  

```
USE msdb
GO

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'Automated DBMail message - 1',
     @body               = 'Database Mail configuration was successful.';
GO
```

**Example de enviar uma mensagem para vários destinatários**  

```
USE msdb
GO

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'recipient1@example.com;recipient2@example.com',
     @subject            = 'Automated DBMail message - 2',
     @body               = 'This is a message.';
GO
```

**Example de enviar um resultado de consulta SQL como um anexo de arquivo**  

```
USE msdb
GO

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'Test SQL query',
     @body               = 'This is a SQL query test.',
     @query              = 'SELECT * FROM abc.dbo.test',
     @attach_query_result_as_file = 1;
GO
```

**Example de enviar uma mensagem em formato HTML**  

```
USE msdb
GO

DECLARE @HTML_Body as NVARCHAR(500) = 'Hi, <h4> Heading </h4> </br> See the report. <b> Regards </b>';

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'Test HTML message',
     @body               = @HTML_Body,
     @body_format        = 'HTML';
GO
```

**Example de enviar uma mensagem usando um gatilho quando ocorre um evento específico no banco de dados**  

```
USE AdventureWorks2017
GO
IF OBJECT_ID ('Production.iProductNotification', 'TR') IS NOT NULL
DROP TRIGGER Purchasing.iProductNotification
GO

CREATE TRIGGER iProductNotification ON Production.Product
   FOR INSERT
   AS
   DECLARE @ProductInformation nvarchar(255);
   SELECT
   @ProductInformation = 'A new product, ' + Name + ', is now available for $' + CAST(StandardCost AS nvarchar(20)) + '!'
   FROM INSERTED i;

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'New product information',
     @body               = @ProductInformation;
GO
```

# Visualizar mensagens, logs e anexos
<a name="SQLServer.DBMail.View"></a>

Você usa procedimentos armazenados do RDS para visualizar mensagens, logs de eventos e anexos.

**Para visualizar todas as mensagens de e-mail**
+ Use a seguinte consulta SQL:

  ```
  SELECT * FROM msdb.dbo.rds_fn_sysmail_allitems(); --WHERE sent_status='sent' or 'failed' or 'unsent'
  ```

**Para visualizar todos os logs de eventos de e-mail**
+ Use a seguinte consulta SQL:

  ```
  SELECT * FROM msdb.dbo.rds_fn_sysmail_event_log();
  ```

**Para visualizar todos os anexos de e-mail**
+ Use a seguinte consulta SQL:

  ```
  SELECT * FROM msdb.dbo.rds_fn_sysmail_mailattachments();
  ```

# Excluir mensagens
<a name="SQLServer.DBMail.Delete"></a>

Use o procedimento armazenado `rds_sysmail_delete_mailitems_sp` para excluir mensagens.

**nota**  
O RDS exclui automaticamente os itens da tabela de e-mail quando os dados do histórico do DBMail atingem 1 GB de tamanho, com um período de retenção de pelo menos 24 horas.  
Se você quiser manter itens de e-mail por um período mais longo, poderá arquivá-los. Para ter mais informações, consulte [Create a SQL Server Agent Job to Archive Database Mail Messages and Event Logs](https://docs.microsoft.com/en-us/sql/relational-databases/database-mail/create-a-sql-server-agent-job-to-archive-database-mail-messages-and-event-logs) na documentação da Microsoft.

**Para excluir todas as mensagens de e-mail**
+ Use a seguinte instrução SQL.

  ```
  DECLARE @GETDATE datetime
  SET @GETDATE = GETDATE();
  EXECUTE msdb.dbo.rds_sysmail_delete_mailitems_sp @sent_before = @GETDATE;
  GO
  ```

**Para excluir todas as mensagens de e-mail com um status específico**
+ Use a seguinte instrução SQL para excluir todas as mensagens com falha.

  ```
  DECLARE @GETDATE datetime
  SET @GETDATE = GETDATE();
  EXECUTE msdb.dbo.rds_sysmail_delete_mailitems_sp @sent_status = 'failed';
  GO
  ```

# Iniciar e interromper a fila de e-mails
<a name="SQLServer.DBMail.StartStop"></a>

Use as seguintes instruções para iniciar e interromper a fila de e-mails de banco de dados:

**Topics**
+ [Iniciar a fila de e-mails](#SQLServer.DBMail.Start)
+ [Parar a fila de e-mails](#SQLServer.DBMail.Stop)

## Iniciar a fila de e-mails
<a name="SQLServer.DBMail.Start"></a>

Use o procedimento armazenado `rds_sysmail_control` para iniciar o processo Database Mail.

**nota**  
A habilitação do Database Mail inicia automaticamente a fila de e-mails

**Para iniciar a fila de correio**
+ Use a seguinte instrução SQL.

  ```
  EXECUTE msdb.dbo.rds_sysmail_control start;
  GO
  ```

## Parar a fila de e-mails
<a name="SQLServer.DBMail.Stop"></a>

Use o procedimento armazenado `rds_sysmail_control` para interromper o processo Database Mail.

**Para interromper a fila de e-mails**
+ Use a seguinte instrução SQL.

  ```
  EXECUTE msdb.dbo.rds_sysmail_control stop;
  GO
  ```

## Trabalhar com anexos de arquivos
<a name="SQLServer.DBMail.Files"></a>

As seguintes extensões de anexo de arquivo não são compatíveis com as mensagens do Database Mail do RDS no SQL Server: .ade, .adp, .apk, .appx, .appxbundle, .bat, .bak, .cab, .chm, .cmd, .com, .cpl, .dll, .dmg, .exe, .hta, .inf1, .ins, .isp, .iso, .jar, .job, .js, .jse, .ldf, .lib, .lnk, .mde, .mdf, .msc, .msi, .msix, .msixbundle, .msp, .mst, .nsh, .pif, .ps, .ps1, .psc1, .reg, .rgs, .scr, .sct, .shb, .shs, .svg, .sys, .u3p, .vb, .vbe, .vbs, .vbscript, .vxd, .ws,. sc, .wsf e .wsh.

O Database Mail usa o contexto de segurança do Microsoft Windows do usuário atual para controlar o acesso aos arquivos. Os usuários que fazem login com o SQL Server Authentication não podem anexar arquivos usando o parâmetro `@file_attachments` com o procedimento armazenado `sp_send_dbmail`. O Windows não permite que o SQL Server forneça credenciais de um computador remoto para outro computador remoto. Portanto, o Database Mail não pode anexar arquivos de um compartilhamento de rede quando o comando é executado a partir de um computador diferente do computador que esteja executando o SQL Server.

No entanto, você pode usar tarefas do SQL Server Agent para anexar arquivos. Para ter mais informações sobre o SQL Server Agent, consulte [Usar o agente do SQL Server para o Amazon RDS](Appendix.SQLServer.CommonDBATasks.Agent.md) e [SQL Server Agent](https://docs.microsoft.com/en-us/sql/ssms/agent/sql-server-agent) na documentação da Microsoft.

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

Quando você configura o Database Mail em uma instância de banco de dados Multi-AZ, a configuração não é propagada automaticamente para o secundário. Recomendamos converter a instância Multi-AZ em uma instância Single-AZ, configurar o Database Mail e, em seguida, converter a instância de banco de dados de volta para Multi-AZ. Em seguida, os nós primário e secundário têm a configuração do Database Mail.

Se você criar uma réplica de leitura a partir da instância Multi-AZ que tenha o Database Mail configurado, a réplica herdará a configuração, mas sem a senha para o servidor SMTP. Atualize a conta Database Mail com a senha.

## Remover a restrição de SMTP (porta 25)
<a name="SQLServer.DBMail.SMTP"></a>

Por padrão, a AWS bloqueia o tráfego de saída no SMTP (porta 25) para instâncias de banco de dados do RDS para SQL Server. Isso é feito para evitar spam com base nas políticas do proprietário da interface de rede elástica. É possível remover essa restrição, se necessário. Consulte mais informações em [Como removo a restrição à porta 25 de uma instância do Amazon EC2 ou de uma função do Lambda?](https://repost.aws/knowledge-center/ec2-port-25-throttle) 

# Suporte ao armazenamento de instâncias para o banco de dados tempdb no Amazon RDS for SQL Server
<a name="SQLServer.InstanceStore"></a>

Um *armazenamento de instâncias* fornece armazenamento temporário em nível de bloco para a instância de banco de dados. Esse armazenamento está localizado em discos que estão anexados fisicamente ao computador host. Esses discos têm armazenamento de instância de memória expressa não volátil (NVMe) baseado em unidades de estado sólido (SSDs). Esse armazenamento é otimizado para baixa latência, performance de E/S aleatória muito alto e alta taxa de transferência de leitura sequencial.

Ao colocar arquivos de dados `tempdb` e arquivos de log `tempdb` no armazenamento de instâncias, você pode obter latências de leitura e gravação mais baixas em comparação com o armazenamento padrão com base no Amazon EBS.

**nota**  
Os arquivos de banco de dados do SQL Server e de log do banco de dados não são colocados no armazenamento de instâncias.

## Habilitar o armazenamento de instâncias
<a name="SQLServer.InstanceStore.Enable"></a>

Quando o RDS provisiona instâncias de banco de dados com um dos seguintes tipos de instância, o banco de dados `tempdb` é automaticamente colocado no armazenamento de instâncias:
+ db.m5d
+ db.r5d
+ db.x2iedn

Para habilitar o armazenamento de instâncias, siga um destes procedimentos:
+ Crie uma instância de banco de dados do SQL Server usando um desses tipos de instância. Para obter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).
+ Modifique uma instância de banco de dados SQL Server existente para usar uma delas. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).

O armazenamento de instâncias está disponível em todas as regiões da AWS onde um ou mais desses tipos de instância são compatíveis. Para obter mais informações sobre as classes de instância `db.m5d` e `db.r5d`, consulte [Classes de instâncias de banco de dados do ](Concepts.DBInstanceClass.md). Para obter mais informações sobre as classes de instância compatíveis pelo Amazon RDS for SQL Server, consulte [Suporte a classes de instâncias de banco de dados para o Microsoft SQL Server](SQLServer.Concepts.General.InstanceClasses.md).

## Considerações de localização e tamanho do arquivo
<a name="SQLServer.InstanceStore.Files"></a>

Em instâncias sem armazenamento de instâncias, o RDS armazena os arquivos de dados e de logs `tempdb` no diretório `D:\rdsdbdata\DATA`. Ambos os arquivos começam em 8 MB por padrão.

Em instâncias com um armazenamento de instâncias, o RDS armazena os arquivos de dados e de logs `tempdb` no diretório `T:\rdsdbdata\DATA`.

Quando `tempdb` tem apenas um arquivo de dados (`tempdb.mdf`) e um arquivo de log (`templog.ldf`), `templog.ldf` inicia em 8 MB por padrão e `tempdb.mdf` inicia em 80% ou mais da capacidade de armazenamento da instância. Vinte por cento da capacidade de armazenamento ou 200 GB, o que for menor, é mantido livre para começar. Múltiplos arquivos de dados `tempdb` dividem os 80% do espaço em disco uniformemente, enquanto os arquivos de log sempre têm um tamanho inicial de 8 MB.

Por exemplo, se você modificar sua classe de instância de banco de dados de `db.m5.2xlarge` para `db.m5d.2xlarge`, o tamanho dos arquivos de dados `tempdb` aumenta de 8 MB cada para 234 GB no total.

**nota**  
Além dos arquivos de dados e de log `tempdb` no armazenamento de instâncias (`T:\rdsdbdata\DATA`), você ainda pode criar arquivos de dados e de log `tempdb` extras no volume de dados (`D:\rdsdbdata\DATA`). Esses arquivos sempre têm um tamanho inicial de 8 MB.

## Considerações sobre backup
<a name="SQLServer.InstanceStore.Backups"></a>

Talvez seja necessário reter backups por longos períodos, incorrendo em custos ao longo do tempo. Os blocos de `tempdb` dados e log podem mudar muitas vezes dependendo da carga de trabalho. Isso pode aumentar consideravelmente o tamanho do snapshot de banco de dados.

Quando `tempdb` está no armazenamento de instâncias, os snapshots não incluem arquivos temporários. Isso significa que os tamanhos de snapshots são menores e consomem menos a alocação de backup gratuita em comparação com o armazenamento de somente EBS.

## Erros completos de disco
<a name="SQLServer.InstanceStore.DiskFull"></a>

Se você usar todo o espaço disponível no armazenamento de instâncias, poderá receber erros como os seguintes:
+  O log de transações do banco de dados 'tempdb' está cheio devido a 'ACTIVE\$1TRANSACTION'. 
+ Não foi possível alocar espaço para o objeto dbo.SORT temporary run storage: 140738941419520' no banco de dados 'tempdb' porque o grupo de arquivos 'PRIMÁRIO' está cheio. Crie espaço em disco excluindo arquivos desnecessários, soltando objetos no grupo de arquivos, adicionando arquivos adicionais ao grupo de arquivos ou definindo o crescimento automático para arquivos existentes no grupo de arquivos.

Você pode executar um ou mais dos procedimentos a seguir quando o armazenamento de instâncias estiver cheio:
+ Ajuste sua carga de trabalho ou a maneira como você usa `tempdb`.
+ Aumente a escala para usar uma classe de instância de banco de dados com mais armazenamento NVMe.
+ Pare de usar o armazenamento de instâncias e use uma classe de instância com apenas armazenamento do EBS.
+ Use um modo misto adicionando dados secundários ou arquivos de log para `tempdb` no volume do EBS.

## Remover o armazenamento de instâncias
<a name="SQLServer.InstanceStore.Disable"></a>

Para remover o armazenamento de instâncias, modifique a instância de banco de dados do SQL Server para usar um tipo de instância que não comporte o armazenamento de instâncias como db.m5, db.r5 ou db.x1e.

**nota**  
Quando você remove o armazenamento de instâncias, os arquivos temporários são movidos para o diretório `D:\rdsdbdata\DATA` e reduzidos em tamanho para 8 MB.

# Usar eventos estendidos com Amazon RDS for Microsoft SQL Server
<a name="SQLServer.ExtendedEvents"></a>

Você pode usar eventos estendidos no Microsoft SQL Server para capturar informações de depuração e solucionar problemas do Amazon RDS for SQL Server. Os eventos estendidos substituem o SQL Trace e o Server Profiler, que foram defasados pela Microsoft. Os eventos estendidos são semelhantes aos traços do Profiler, mas com controle mais granular nos eventos que estão sendo monitorados. Os eventos estendidos são compatíveis com as versões 2016 do SQL Server e posteriores do Amazon RDS. Para obter mais informações, consulte [Visão geral de eventos estendidos](https://docs.microsoft.com/en-us/sql/relational-databases/extended-events/extended-events) na documentação da Microsoft.

Os eventos estendidos são ativados automaticamente para usuários com privilégios de usuário primário no Amazon RDS for SQL Server.

**Topics**
+ [Limitações e recomendações](#SQLServer.ExtendedEvents.Limits)
+ [Configuração de eventos estendidos no RDS for SQL Server](#SQLServer.ExtendedEvents.Config)
+ [Considerações para implantações Multi-AZ](#SQLServer.ExtendedEvents.MAZ)
+ [Consultando arquivos de eventos estendidos](#SQLServer.ExtendedEvents.Querying)

## Limitações e recomendações
<a name="SQLServer.ExtendedEvents.Limits"></a>

Ao usar eventos estendidos do RDS for SQL Server, as seguintes limitações se aplicam:
+ Os eventos estendidos são compatíveis apenas com as Edições Enterprise e Standard.
+ Você não pode alterar as sessões de eventos estendidos padrão.
+ Defina o modo de partição de memória de sessão como `NONE`.
+ O modo de retenção de eventos de sessão pode ser `ALLOW_SINGLE_EVENT_LOSS` ou `ALLOW_MULTIPLE_EVENT_LOSS`.
+ Os destinos de monitoramento de eventos para Windows (ETW) não são compatíveis.
+ Verifique se os destinos dos arquivo estão no diretório `D:\rdsdbdata\log`.
+ Para alvos de correspondência de pares, defina a propriedade `respond_to_memory_pressure` como `1`.
+ A memória de destino do buffer de anel não pode ser maior que 4 MB.
+ As seguintes ações não são aceitas:
  + `debug_break`
  + `create_dump_all_threads`
  + `create_dump_single_threads`
+ O evento `rpc_completed` é compatível com as seguintes versões e posteriores: 15.0.4083.2, 14.0.3370.1, 13.0.5865.1, 12.0.6433.1, 11.0.7507.2

## Configuração de eventos estendidos no RDS for SQL Server
<a name="SQLServer.ExtendedEvents.Config"></a>

No RDS for SQL Server, você pode configurar os valores de determinados parâmetros de sessões de eventos estendidos. A tabela a seguir descreve os parâmetros configuráveis.


| Nome do parâmetro | Descrição | Valor padrão do RDS | Valor mínimo | Valor máximo | 
| --- | --- | --- | --- | --- | 
| xe\$1session\$1max\$1memory | Especifica a quantidade máxima de memória a ser alocada à sessão para buffer de eventos. Esse valor corresponde à configuração max\$1memory da sessão do evento. | 4 MB | 4 MB | 8 MB | 
| xe\$1session\$1max\$1event\$1size | Especifica o tamanho máximo de memória permitido para eventos grandes. Esse valor corresponde à configuração max\$1event\$1size da sessão do evento. | 4 MB | 4 MB | 8 MB | 
| xe\$1session\$1max\$1dispatch\$1latency | Especifica a quantidade de tempo em que os eventos são armazenados em buffer na memória antes de serem despachados para destinos de sessão de eventos estendidos. Esse valor corresponde à configuração max\$1dispatch\$1latency da sessão do evento. | 30 segundos | 1 segundo | 30 segundos | 
| xe\$1file\$1target\$1size | Especifica o tamanho máximo do destino do arquivo. Esse valor corresponde à configuração max\$1file\$1size do destino do arquivo. | 100 MB | 10 MB | 1 GB | 
| xe\$1file\$1retention | Especifica o tempo de retenção em dias para arquivos gerados pelos destinos de arquivo das sessões de evento. | 7 dias | 0 dias | 7 dias | 

**nota**  
Definir `xe_file_retention` como zero remove os arquivos.xel automaticamente depois que o bloqueio nesses arquivos é liberado pelo SQL Server. O bloqueio é liberado sempre que um arquivo.xel atinge o limite de tamanho definido em `xe_file_target_size`.

Você pode usar o procedimento `rdsadmin.dbo.rds_show_configuration` armazenado para mostrar os valores atuais desses parâmetros. Por exemplo, use a instrução SQL a seguir para visualizar a configuração atual do `xe_session_max_memory`.

```
exec rdsadmin.dbo.rds_show_configuration 'xe_session_max_memory'
```

Você pode usar o procedimento `rdsadmin.dbo.rds_set_configuration` armazenado para modificá-los. Por exemplo, use a instrução SQL `xe_session_max_memory` a seguir para definir como 4 MB.

```
exec rdsadmin.dbo.rds_set_configuration 'xe_session_max_memory', 4
```

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

Quando você cria uma sessão de evento estendida em uma instância de banco de dados principal, ela não se propaga para a réplica em espera. Você pode fazer failover e criar a sessão de evento estendida na nova instância de banco de dados principal. Ou você pode remover e ler a configuração Multi-AZ para propagar a sessão de evento estendida para a réplica em espera. O RDS interrompe todas as sessões de evento estendidas não padrão na réplica em espera, de modo que essas sessões não consumam recursos no modo de espera. Por isso, depois que uma réplica em espera se tornar a instância de banco de dados principal, inicie manualmente as sessões de eventos estendidas no novo primário.

**nota**  
Essa abordagem se aplica a grupos de disponibilidade sempre ativos e ao espelhamento do banco de dados.

Você também pode usar um trabalho do SQL Server Agent para monitorar a réplica em espera e iniciar as sessões se a espera se tornar a primária. Por exemplo, use a consulta a seguir na etapa de trabalho do SQL Server Agent para reiniciar sessões de evento em uma instância de banco de dados principal.

```
BEGIN
    IF (DATABASEPROPERTYEX('rdsadmin','Updateability')='READ_WRITE'
    AND DATABASEPROPERTYEX('rdsadmin','status')='ONLINE'
    AND (DATABASEPROPERTYEX('rdsadmin','Collation') IS NOT NULL OR DATABASEPROPERTYEX('rdsadmin','IsAutoClose')=1)
    )
    BEGIN
        IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe1')
            ALTER EVENT SESSION xe1 ON SERVER STATE=START
        IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe2')
            ALTER EVENT SESSION xe2 ON SERVER STATE=START
    END
END
```

Essa consulta reinicia as sessões de evento `xe1` e `xe2` em uma instância de banco de dados principal se essas sessões estiverem em um estado interrompido. Você também pode adicionar uma programação com um intervalo conveniente a essa consulta.

## Consultando arquivos de eventos estendidos
<a name="SQLServer.ExtendedEvents.Querying"></a>

Você pode usar o SQL Server Management Studio ou a função `sys.fn_xe_file_target_read_file` para visualizar dados de eventos estendidos que usam destinos de arquivo. Para obter mais informações sobre essa função, consulte [sys.fn\$1xe\$1file\$1target\$1read\$1file (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-functions/sys-fn-xe-file-target-read-file-transact-sql) na documentação da Microsoft.

Destinos de arquivos de eventos estendidos só podem gravar arquivos no diretório `D:\rdsdbdata\log` no RDS para SQL Server.

Como exemplo, use a consulta SQL a seguir para listar o conteúdo de todos os arquivos de sessões de eventos estendidos cujos nomes começam com `xe`.

```
SELECT * FROM sys.fn_xe_file_target_read_file('d:\rdsdbdata\log\xe*', null,null,null);
```

# Acesso aos backups de logs de transações com o RDS para SQL Server
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess"></a>

Com acesso aos backup de logs de transações do RDS para SQL Server, é possível listar os arquivos de log de transações de um banco de dados e copiá-los em um bucket de destino do Amazon S3. Ao copiar backups de logs de transações em um bucket do Amazon S3, você pode usá-los em combinação com backups de banco de dados completos e diferenciais para realizar restaurações do banco de dados a um ponto anterior no tempo. Use procedimentos armazenados no RDS para configurar o acesso aos backups de logs de transações, listar os backups de logs de transações disponíveis e copiá-los em seu bucket do Amazon S3.

O acesso aos backups de logs de transações fornece os seguintes recursos e benefícios:
+ Listar e visualizar os metadados dos backups de logs de transações disponíveis de um banco de dados em uma instância de banco de dados do RDS para SQL Server.
+ Copiar os backups de logs de transações disponíveis do RDS para SQL Server em um bucket de destino do Amazon S3.
+ Executar restaurações a um ponto anterior no tempo de bancos de dados sem a necessidade de restaurar uma instância de banco de dados inteira. Para obter informações sobre como restaurar uma instância de banco de dados, consulte [Restaurar uma instância de banco de dados para um momento especificado no Amazon RDS](USER_PIT.md).

## Disponibilidade e suporte
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Availability"></a>

O acesso aos backups de logs de transações é compatível em todas as regiões.da AWS. O acesso a backups de logs de transações está disponível para todas as edições e versões do Microsoft SQL Server compatíveis com o Amazon RDS. 

## Requisitos
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Requirements"></a>

Os requisitos a seguir devem ser atendidos antes de ativar o acesso aos backups de logs de transações: 
+  Os backups automatizados devem ser ativados na instância de banco de dados e a retenção do backup deve ser definida como um valor de um ou mais dias. Para ter mais informações sobre como ativar backups automatizados e configurar uma política de retenção, consulte [Ativar backups automáticos](USER_WorkingWithAutomatedBackups.Enabling.md). 
+ Um bucket do Amazon S3 deve existir na mesma conta e região da instância de banco de dados de origem. Antes de ativar o acesso aos backups de logs de transações, selecione um bucket existente do Amazon S3 ou [crie um bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingaBucket.html) para usar em seus arquivos de backup de logs de transações.
+ Uma política de permissões de bucket do Amazon S3 deve ser configurada da seguinte forma para que o Amazon RDS copie arquivos de log de transações nela:

  1. Defina a propriedade da conta do objeto no bucket como **Bucket Owner Preferred** (Propriedade do bucket preferencial).

  1. Adicione a política a seguir. Não haverá nenhuma política por padrão, então use as listas de controle de acesso (ACL) do bucket para editar a política do bucket e adicioná-la.

  

  O exemplo a seguir usa um ARN para especificar um recurso. Recomendamos usar as chaves de contexto de condição global `SourceArn` e `SourceAccount` em relacionamentos de confiança baseados em recursos a fim de limitar as permissões do serviço a um recurso específico. Para ter mais informações sobre como trabalhar com ARNs, consulte [Amazon resource names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) (Nomes de recursos da Amazon (ARNs)) e [Nomes de recurso da Amazon (ARNs) no Amazon RDS](USER_Tagging.ARN.md).

    
**Example de uma política de permissões do Amazon S3 para acesso a backups de logs de transações**  

------
#### [ JSON ]

****  

  ```
      {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Only allow writes to my bucket with bucket owner full control",
              "Effect": "Allow",
              "Principal": {
                  "Service": "backups.rds.amazonaws.com"
              },
              "Action": "s3:PutObject",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/{customer_path}/*",
              "Condition": {
                  "StringEquals": {
                      "s3:x-amz-acl": "bucket-owner-full-control",
                      "aws:sourceAccount": "{customer_account}",
                      "aws:sourceArn": "{db_instance_arn}"
                  }
              }
          }
      ]
  }
  ```

------
+ Um AWS Identity and Access Management (perfil do IAM) para acessar o bucket do Amazon S3. Se você já tiver uma função do IAM, você pode usá-la. Você pode optar por criar uma nova função do IAM ao adicionar a opção `SQLSERVER_BACKUP_RESTORE` usando o Console de gerenciamento da AWS. Você também pode criar uma nova manualmente. Para ter mais informações sobre como criar e configurar um perfil do IAM com `SQLSERVER_BACKUP_RESTORE`, consulte [Criar manualmente uma função do IAM para backup e restauração nativos](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM).
+ A opção `SQLSERVER_BACKUP_RESTORE` deve ser adicionada a um grupo de opções em sua instância de banco de dados. Para ter mais informações sobre a adição da opção `SQLSERVER_BACKUP_RESTORE`, consulte [Suporte para backup e restauração nativos no SQL Server](Appendix.SQLServer.Options.BackupRestore.md).
**nota**  
Se sua instância de banco de dados tiver a criptografia de armazenamento habilitada, será necessário fornecer as ações e a chave do AWS KMS (KMS) no perfil do IAM indicado no grupo nativo de opções de backup e restauração.

  Opcionalmente, se você pretende usar o procedimento armazenado `rds_restore_log` para realizar restaurações do banco de dados a um ponto anterior no tempo, recomendamos usar o mesmo caminho do Amazon S3 para o grupo nativo de opções de backup e restauração e acesso aos backups de logs de transações. Esse método garante que, quando o Amazon RDS assume a função do grupo de opções para realizar as funções de log de restauração, ele tenha acesso para recuperar backups de logs de transações do mesmo caminho do Amazon S3.
+ Se a instância de banco de dados for criptografada, independentemente do tipo de criptografia (chave gerenciada pela AWS ou chave gerenciada pelo cliente), você deverá fornecer uma chave do KMS gerenciada pelo cliente no perfil do IAM e no procedimento armazenado `rds_tlog_backup_copy_to_S3`. 

## Limitações e recomendações
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Limitations"></a>

O acesso aos backups de logs de transações tem as seguintes limitações e recomendações:
+  Você pode listar e copiar até os últimos sete dias de backups de logs de transações para qualquer instância de banco de dados que tenha a retenção de backup configurada entre um a 35 dias. 
+  Um bucket do Amazon S3 utilizado para acessar backups de logs de transações deve existir na mesma conta e região da instância de banco de dados de origem. Não há suporte à cópia entre contas e regiões. 
+  Somente um bucket do Amazon S3 pode ser configurado como destino para copiar backups de logs de transações. Você pode selecionar um novo bucket de destino do Amazon S3 com o procedimento armazenado `rds_tlog_copy_setup`. Para ter mais informações sobre como selecionar um novo bucket de destino do Amazon S3, consulte [Configurar o acesso aos backups de logs de transações](USER.SQLServer.AddlFeat.TransactionLogAccess.Enabling.md).
+  Você não poderá especificar a chave do KMS ao usar o procedimento armazenado `rds_tlog_backup_copy_to_S3` se sua instância do RDS não estiver ativada para criptografia de armazenamento. 
+  A cópia de várias contas não é compatível. O perfil do IAM utilizado para cópia só permitirá o acesso de gravação aos buckets do Amazon S3 na conta do proprietário da instância de banco de dados. 
+  Somente duas tarefas simultâneas de qualquer tipo podem ser executadas em uma instância de banco de dados do RDS para SQL Server. 
+  Somente uma tarefa de cópia pode ser executada em um único banco de dados em um determinado momento. Se você quiser copiar backups de logs de transações para vários bancos de dados na instância de banco de dados, utilize uma tarefa de cópia separada para cada banco de dados. 
+  Se você copiar um backup de logs de transações que já existe com o mesmo nome no bucket do Amazon S3, o backup de logs de transações existente será substituído. 
+  Você só pode executar os procedimentos armazenados que são fornecidos com acesso aos backups de logs de transações na instância de banco de dados primária. Não é possível executar esses procedimentos armazenados em uma réplica de leitura do RDS para SQL Server nem em uma instância secundária de um cluster de banco de dados multi-AZ. 
+  Se a instância de banco de dados do RDS para SQL Server for reinicializada enquanto o procedimento armazenado `rds_tlog_backup_copy_to_S3` estiver em execução, a tarefa será reiniciada automaticamente desde o início, quando a instância de banco de dados estiver on-line novamente. Todos os backups de logs de transações que tenha sido copiado no bucket do Amazon S3 enquanto a tarefa estiver em execução antes da reinicialização serão substituídos. 
+ Os bancos de dados do sistema Microsoft SQL Server e o banco de dados `RDSAdmin` não podem ser configurados para acesso aos backups de logs de transações.
+  A cópia em buckets criptografados pela SSE-KMS não é compatível. 

# Configurar o acesso aos backups de logs de transações
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Enabling"></a>

Para configurar o acesso aos backups de logs de transações, complete a lista de requisitos na seção [Requisitos](USER.SQLServer.AddlFeat.TransactionLogAccess.md#USER.SQLServer.AddlFeat.TransactionLogAccess.Requirements) e, depois, execute o procedimento armazenado `rds_tlog_copy_setup`. O procedimento permitirá o acesso ao recurso de backups de logs de transações em nível de instância de banco de dados. Você não precisa executá-lo para cada banco de dados individual na instância de banco de dados. 

**Importante**  
O usuário do banco de dados deve receber a função `db_owner` no SQL Server em cada banco de dados para configurar e usar o recurso de acesso aos backups de logs de transações.

**Example uso:**  

```
exec msdb.dbo.rds_tlog_copy_setup
@target_s3_arn='arn:aws:s3:::amzn-s3-demo-bucket/myfolder';
```

O seguinte parâmetro é obrigatório:
+ `@target_s3_arn`: o ARN do bucket de destino do Amazon S3 no qual copiar arquivos de backup de logs de transações.

**Example de definir um bucket de destino do Amazon S3:**  

```
exec msdb.dbo.rds_tlog_copy_setup @target_s3_arn='arn:aws:s3:::amzn-s3-demo-logging-bucket/mytestdb1';
```

Para validar a configuração, chame o procedimento armazenado `rds_show_configuration`.

**Example de validar a configuração:**  

```
exec rdsadmin.dbo.rds_show_configuration @name='target_s3_arn_for_tlog_copy';
```

Para modificar o acesso aos backups de logs de transações para apontar para um bucket diferente do Amazon S3, você pode visualizar o valor atual do bucket do Amazon S3 e executar novamente o procedimento armazenado `rds_tlog_copy_setup` utilizando um novo valor para o `@target_s3_arn`.

**Example de visualizar o bucket existente do Amazon S3 configurado para acesso aos backups de logs de transações**  

```
exec rdsadmin.dbo.rds_show_configuration @name='target_s3_arn_for_tlog_copy';
```

**Example de atualização para um novo bucket de destino do Amazon S3**  

```
exec msdb.dbo.rds_tlog_copy_setup @target_s3_arn='arn:aws:s3:::amzn-s3-demo-logging-bucket1/mynewfolder';
```

# Listar os backups de logs de transações disponíveis
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Listing"></a>

Com o RDS para SQL Server, os bancos de dados configurados para usar o modelo de recuperação completo e uma retenção de backup de instância de banco de dados definida para um ou mais dias têm os backups de logs de transações ativados automaticamente. Ao permitir o acesso aos backups de logs de transações, eles ficam disponíveis por até sete dias para você copiar em seu bucket do Amazon S3.

Depois de ativar o acesso aos backups de logs de transações, você pode começar a usá-lo para listar e copiar os arquivos de backup de logs de transações disponíveis.

**Listar backups de logs de transações**

Para listar todos os backups de logs de transações disponíveis para um banco de dados individual, chame a função `rds_fn_list_tlog_backup_metadata`. Você pode utilizar uma cláusula `ORDER BY` ou `WHERE` ao chamar a função.

**Example de listar e filtrar os arquivos de backup de logs de transações disponíveis**  

```
SELECT * from msdb.dbo.rds_fn_list_tlog_backup_metadata('mydatabasename');
SELECT * from msdb.dbo.rds_fn_list_tlog_backup_metadata('mydatabasename') WHERE rds_backup_seq_id = 3507;
SELECT * from msdb.dbo.rds_fn_list_tlog_backup_metadata('mydatabasename') WHERE backup_file_time_utc > '2022-09-15 20:44:01' ORDER BY backup_file_time_utc DESC;
```

![\[Saída de rds_fn_list_tlog_backup_metadata\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/sql_accesstransactionlogs_func.png)


A função `rds_fn_list_tlog_backup_metadata` retorna o seguinte resultado:


****  

| Nome da coluna | Tipo de dados | Descrição | 
| --- | --- | --- | 
| `db_name` | sysname | O nome do banco de dados fornecido para listar os backups de logs de transações. | 
| `db_id` | int | O identificador interno do banco de dados para o parâmetro de entrada `db_name`. | 
| `family_guid` | uniqueidentifier | O ID exclusivo do banco de dados original na criação. Esse valor permanece o mesmo quando o banco de dados é restaurado, mesmo com um nome de banco de dados diferente. | 
| `rds_backup_seq_id` | int | O ID que o RDS utiliza internamente para manter um número de sequência de cada arquivo de backup de logs de transações. | 
| `backup_file_epoch` | bigint | A época em que um arquivo de backup de transações foi gerado. | 
| `backup_file_time_utc` | datetime | O valor UTC convertido em tempo para o valor `backup_file_epoch`. | 
| `starting_lsn` | numérico (25,0) | O número de sequência de logs do primeiro registro de log ou do mais antigo de um arquivo de backup de logs de transações. | 
| `ending_lsn` | numérico (25,0) | O número de sequência de logs do último ou do próximo registro de log de um arquivo de backup de logs de transações. | 
| `is_log_chain_broken` | bit | Um valor booliano que indica se a cadeia de logs está rompida entre o arquivo de backup de logs de transações atual e o anterior. | 
| `file_size_bytes` | bigint | O tamanho do conjunto de backup transacional em bytes. | 
| `Error` | varchar(4000) | Mensagem de erro se a função `rds_fn_list_tlog_backup_metadata` gerar uma exceção. NULL se não houver exceções. | 

# Copiar backups de logs de transações
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Copying"></a>

Para copiar um conjunto de backups de logs de transações disponíveis para um banco de dados individual em seu bucket do Amazon S3, chame o procedimento armazenado `rds_tlog_backup_copy_to_S3`. O procedimento armazenado `rds_tlog_backup_copy_to_S3` iniciará uma nova tarefa para copiar os backups de logs de transações. 

**nota**  
O procedimento armazenado `rds_tlog_backup_copy_to_S3` copiará os backups de logs de transações sem validação em relação ao atributo `is_log_chain_broken`. Por esse motivo, você deve confirmar manualmente uma cadeia de logs ininterrupta antes de executar o procedimento armazenado `rds_tlog_backup_copy_to_S3`. Para obter mais explicações, consulte [Validar a cadeia de logs de backup de logs de transações](#USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.LogChain).

**Example uso do procedimento armazenado `rds_tlog_backup_copy_to_S3`**  

```
exec msdb.dbo.rds_tlog_backup_copy_to_S3
	@db_name='mydatabasename',
	[@kms_key_arn='arn:aws:kms:region:account-id:key/key-id'],	
	[@backup_file_start_time='2022-09-01 01:00:15'],
	[@backup_file_end_time='2022-09-01 21:30:45'],
	[@starting_lsn=149000000112100001],
	[@ending_lsn=149000000120400001],
	[@rds_backup_starting_seq_id=5],
	[@rds_backup_ending_seq_id=10];
```

Os seguintes parâmetros de entrada estão disponíveis:


****  

| Parameter | Descrição | 
| --- | --- | 
| `@db_name` | O nome do banco de dados do qual copiar backups de logs de transações | 
| `@kms_key_arn` |  Uma chave do KMS gerenciada pelo cliente. Se você criptografar a instância de banco de dados com uma chave do KMS gerenciada pela AWS, será necessário criar uma chave gerenciada pelo cliente. Se criptografar a instância de banco de dados com uma chave gerenciada pelo cliente, você poderá usar o mesmo ARN da chave do KMS. | 
| `@backup_file_start_time` | O carimbo de data e hora UTC conforme fornecido na coluna `[backup_file_time_utc]` da função `rds_fn_list_tlog_backup_metadata`. | 
| `@backup_file_end_time` | O carimbo de data e hora UTC conforme fornecido na coluna `[backup_file_time_utc]` da função `rds_fn_list_tlog_backup_metadata`. | 
| `@starting_lsn` | O número de sequência de logs (LSN) conforme fornecido na coluna `[starting_lsn]` da função `rds_fn_list_tlog_backup_metadata` | 
| `@ending_lsn` | O número de sequência de logs (LSN) conforme fornecido na coluna `[ending_lsn]` da função `rds_fn_list_tlog_backup_metadata`. | 
| `@rds_backup_starting_seq_id` | O ID de sequência conforme fornecido na coluna `[rds_backup_seq_id]` da função `rds_fn_list_tlog_backup_metadata`. | 
| `@rds_backup_ending_seq_id` | O ID de sequência conforme fornecido na coluna `[rds_backup_seq_id]` da função `rds_fn_list_tlog_backup_metadata`. | 

Você pode especificar um conjunto de parâmetros de hora, LSN ou ID de sequência. Somente um conjunto de parâmetros é necessário.

Você também pode especificar apenas um único parâmetro em qualquer um dos conjuntos. Por exemplo, ao fornecer um valor somente para o parâmetro `backup_file_end_time`, todos os arquivos de backup de logs de transações disponíveis antes desse período dentro do limite de sete dias serão copiados em seu bucket do Amazon S3. 

Veja a seguir as combinações válidas de parâmetros de entrada para o procedimento armazenado `rds_tlog_backup_copy_to_S3`.


****  

| Parâmetros fornecidos | Resultado esperado | 
| --- | --- | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3  <br />	@db_name = 'testdb1',<br />            @backup_file_start_time='2022-08-23 00:00:00',<br />            @backup_file_end_time='2022-08-30 00:00:00';</pre>  | Copia os backups de logs de transações dos últimos sete dias e existentes entre o intervalo fornecido de`backup_file_start_time` e `backup_file_end_time`. Neste exemplo, o procedimento armazenado copiará os backups de logs de transações que foram gerados entre “2022-08-23 00:00:00” e “2022-08-30 00:00:00”.  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />           @db_name = 'testdb1',<br />           @backup_file_start_time='2022-08-23 00:00:00';</pre>  | Copia os backups de logs de transações dos últimos sete dias e a partir do `backup_file_start_time` fornecido. Neste exemplo, o procedimento armazenado copiará os backups de logs de transações de “2022-08-23 00:00:00” até o último backup de logs de transações.  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />          @db_name = 'testdb1',<br />          @backup_file_end_time='2022-08-30 00:00:00';</pre>  | Copia os backups de logs de transações dos últimos sete dias até o `backup_file_end_time` fornecido. Neste exemplo, o procedimento armazenado copiará os backups de logs de transações que foram gerados de “2022-08-23 00:00:00” até “2022-08-30 00:00:00”.  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />         @db_name='testdb1',<br />         @starting_lsn =1490000000040007,<br />         @ending_lsn =  1490000000050009;</pre>  | Copia os backups de logs de transações disponíveis dos últimos sete dias e entre o intervalo fornecido do `starting_lsn` e `ending_lsn`. Neste exemplo, o procedimento armazenado copiará backups de logs de transações dos últimos sete dias com um intervalo de LSN entre 1490000000040007 e 1490000000050009.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />        @db_name='testdb1',<br />        @starting_lsn =1490000000040007;</pre>  |  Copia os backups de logs de transações disponíveis dos últimos sete dias, a partir do `starting_lsn` fornecido. Neste exemplo, o procedimento armazenado copiará os backups de logs de transações do LSN 1490000000040007 até o último backup de logs de transações.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />        @db_name='testdb1',<br />        @ending_lsn  =1490000000050009;</pre>  |  Copia os backups de logs de transações disponíveis dos últimos sete dias, até o `ending_lsn` fornecido. Neste exemplo, o procedimento armazenado copiará backups de logs de transações a partir dos últimos sete dias até o lsn 1490000000050009.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />       @db_name='testdb1',<br />       @rds_backup_starting_seq_id= 2000,<br />       @rds_backup_ending_seq_id= 5000;</pre>  |  Copia os backups de logs de transações disponíveis dos últimos sete dias e existentes entre o intervalo fornecido de `rds_backup_starting_seq_id` e `rds_backup_ending_seq_id`. Neste exemplo, o procedimento armazenado copiará os backups de logs de transações dos últimos sete dias e dentro do intervalo de ID da sequência de backup do rds fornecido, começando de seq\$1id 2000 até seq\$1id 5000.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />       @db_name='testdb1',<br />       @rds_backup_starting_seq_id= 2000;</pre>  |  Copia os backups de logs de transações disponíveis dos últimos sete dias, a partir do `rds_backup_starting_seq_id` fornecido. Neste exemplo, o procedimento armazenado copiará os backups de logs de transações de seq\$1id 2000 até o último backup de logs de transações.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />      @db_name='testdb1',<br />      @rds_backup_ending_seq_id= 5000;</pre>  |  Copia os backups de logs de transações disponíveis dos últimos sete dias, até o `rds_backup_ending_seq_id` fornecido. Neste exemplo, o procedimento armazenado copiará backups de logs de transações a partir dos últimos sete dias, até seq\$1id 5000.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />      @db_name='testdb1',<br />      @rds_backup_starting_seq_id= 2000;<br />      @rds_backup_ending_seq_id= 2000;</pre>  |  Copia um único backup de logs de transações com o `rds_backup_starting_seq_id` fornecido, se disponível nos últimos sete dias. Neste exemplo, o procedimento armazenado copiará um único backup de logs de transações que tenha um seq\$1id de 2000, se houver nos últimos sete dias.   | 

## Validar a cadeia de logs de backup de logs de transações
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.LogChain"></a>

 Os bancos de dados configurados para acesso aos backups de logs de transações devem ter a retenção automatizada de backup ativada. A retenção automatizada de backup define os bancos de dados na instância de banco de dados de acordo com o modelo de recuperação `FULL`. Para ser compatível com a restauração a um ponto anterior no tempo de um banco de dados, evite alterar o modelo de recuperação do banco de dados, o que pode ocasionar uma cadeia de registros interrompida. Recomendamos manter o banco de dados definido como o modelo de recuperação `FULL`.

Para validar manualmente a cadeia de logs antes de copiar os backups de logs de transações, chame a função `rds_fn_list_tlog_backup_metadata` e revise os valores na coluna `is_log_chain_broken`. Um valor de “1" indica que a cadeia de logs foi interrompida entre o backup de logs atual e o backup de logs anterior.

O exemplo a seguir mostra uma cadeia de logs interrompida na saída do procedimento armazenado `rds_fn_list_tlog_backup_metadata`. 

![\[Saída de rds_fn_list_tlog_backup_metadata mostrando uma cadeia de logs interrompida.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/sql_accesstransactionlogs_logchain_error.png)


Em uma cadeia de logs normal, o valor do número de sequência de log (LSN) para first\$1lsn para determinado rds\$1sequence\$1id deve corresponder ao valor de last\$1lsn no rds\$1sequence\$1id anterior. Na imagem, o rds\$1sequence\$1id de 45 tem um valor first\$1lsn 90987, que não corresponde ao valor last\$1lsn de 90985 do rds\$1sequence\$1id 44 anterior.

Para ter mais informações sobre a arquitetura de logs de transações e os números de sequência de log do SQL Server, consulte [Transaction Log Logical Architecture](https://learn.microsoft.com/en-us/sql/relational-databases/sql-server-transaction-log-architecture-and-management-guide?view=sql-server-ver15#Logical_Arch) (Arquitetura lógica do log de transações) na documentação do Microsoft SQL Server.

# Estrutura de arquivos e pastas do bucket do Amazon S3
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.S3namingConvention"></a>

Os backups de logs de transações têm a seguinte estrutura padrão e convenção de nomenclatura em um bucket do Amazon S3:
+ Uma nova pasta é criada no caminho `target_s3_arn` de cada banco de dados com a estrutura de nomenclatura `{db_id}.{family_guid}`.
+ Dentro da pasta, os backups de logs de transações têm uma estrutura de nome de arquivo `{db_id}.{family_guid}.{rds_backup_seq_id}.{backup_file_epoch}`.
+ Você pode ver os detalhes de `family_guid,db_id,rds_backup_seq_id and backup_file_epoch` da função `rds_fn_list_tlog_backup_metadata`.

O exemplo a seguir mostra a estrutura de pastas e arquivos de um conjunto de backups de logs de transações em um bucket do Amazon S3.

![\[Estrutura de buckets do Amazon S3 com acesso aos logs de transações\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/sql_accesstransactionlogs_s3.png)


# Acompanhar o status de tarefas
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.TrackTaskStatus"></a>

 Para acompanhar o status de suas tarefas de cópia, chame o procedimento armazenado `rds_task_status`. Se você não fornecer nenhum parâmetro, o procedimento armazenado retornará o status de todas as tarefas. 

**Example uso:**  

```
exec msdb.dbo.rds_task_status
  @db_name='database_name',
  @task_id=ID_number;
```

Os seguintes parâmetros são opcionais:
+ `@db_name` – o nome do banco de dados do qual o status será exibido.
+ `@task_id` – o nome do ID da tarefa do qual o status será exibido.

**Example de listagem do status de um ID de tarefa específico:**  

```
exec msdb.dbo.rds_task_status @task_id=5;
```

**Example de listagem do status de uma tarefa e banco de dados específicos:**  

```
exec msdb.dbo.rds_task_status@db_name='my_database',@task_id=5;
```

**Example de listagem de todas as tarefas e seus status de um banco de dados específico:**  

```
exec msdb.dbo.rds_task_status @db_name='my_database';
```

**Example de listagem de todas as tarefas e seus status na instância de banco de dados atual**  

```
exec msdb.dbo.rds_task_status;
```

# Cancelar uma tarefa
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.CancelTask"></a>

Para cancelar uma tarefa em execução, chame o procedimento armazenado `rds_cancel_task`.

**Example uso:**  

```
exec msdb.dbo.rds_cancel_task @task_id=ID_number;
```

O seguinte parâmetro é obrigatório:
+ `@task_id` – o ID da tarefa a ser cancelada. Você pode visualizar o ID da tarefa chamando o procedimento armazenado `rds_task_status`.

Para ter mais informações sobre como visualizar e cancelar tarefas em execução, consulte [Importar e exportar bancos de dados do SQL Server usando backup e restauração nativos](SQLServer.Procedural.Importing.md).

# Solução de problemas de acesso aos backups de logs de transações
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Troubleshooting"></a>

Os problemas a seguir podem ocorrer ao usar os procedimentos armazenados para acesso aos backups de logs de transações.


****  

| Procedimento armazenado | Mensagem de erro | Problema | Sugestões de solução de problemas | 
| --- | --- | --- | --- | 
| rds\$1tlog\$1copy\$1setup | Os backups estão desativados nessa instância de banco de dados. Ative backups de instâncias de banco de dados com uma retenção de pelo menos “1" e tente novamente. | Backups automatizados não estão ativados para a instância de banco de dados. |  A retenção de backup da instância de banco de dados deve ser ativada com uma retenção de pelo menos um dia. Para ter mais informações sobre como ativar backups automatizados e configurar a retenção de backups, consulte [Período de retenção de backup](USER_WorkingWithAutomatedBackups.BackupRetention.md).  | 
| rds\$1tlog\$1copy\$1setup | Erro ao executar o procedimento armazenado rds\$1tlog\$1copy\$1setup. Reconecte-se ao endpoint do RDS e tente novamente. | Ocorreu um erro interno. | Reconecte-se ao endpoint do RDS e execute o procedimento armazenado `rds_tlog_copy_setup` novamente. | 
| rds\$1tlog\$1copy\$1setup | A execução do procedimento armazenado rds\$1tlog\$1backup\$1copy\$1setup em uma transação não é compatível. Verifique se a sessão não tem transações abertas e tente novamente.  | Houve uma tentativa de realizar o procedimento armazenado em uma transação com o uso de `BEGIN` e `END`. | Evite utilizar `BEGIN` e `END` ao executar o procedimento armazenado `rds_tlog_copy_setup`. | 
| rds\$1tlog\$1copy\$1setup | O nome do bucket do S3 para o parâmetro de entrada`@target_s3_arn` deve conter pelo menos um caractere diferente de um espaço.  | Um valor incorreto foi fornecido para o parâmetro de entrada `@target_s3_arn`. | O parâmetro de entrada `@target_s3_arn` deve especificar o ARN completo do bucket do Amazon S3. | 
| rds\$1tlog\$1copy\$1setup | A opção `SQLSERVER_BACKUP_RESTORE` não está ativada ou está em processo de ativação. Ative a opção ou tente novamente mais tarde.  | A opção `SQLSERVER_BACKUP_RESTORE` não está ativada na instância de banco de dados ou estava apenas ativada e com a ativação interna pendente. | Ative a opção `SQLSERVER_BACKUP_RESTORE` conforme especificado na seção Requirements (Requisitos). Aguarde alguns minutos e execute o procedimento armazenado `rds_tlog_copy_setup` novamente. | 
| rds\$1tlog\$1copy\$1setup | O arn de destino do S3 para o parâmetro de entrada `@target_s3_arn` não pode estar em branco nem ser nulo.  | Um valor `NULL` foi fornecido para o parâmetro de entrada `@target_s3_arn` ou o valor não foi fornecido. | O parâmetro de entrada `@target_s3_arn` deve especificar o ARN completo do bucket do Amazon S3. | 
| rds\$1tlog\$1copy\$1setup | O arn de destino do S3 para o parâmetro de entrada `@target_s3_arn` deve começar com arn:aws.  | O parâmetro de entrada `@target_s3_arn` foi fornecido sem `arn:aws` na frente. | O parâmetro de entrada `@target_s3_arn` deve especificar o ARN completo do bucket do Amazon S3. | 
| rds\$1tlog\$1copy\$1setup | O ARN de destino do S3 já está definido com o valor fornecido.  | O procedimento armazenado `rds_tlog_copy_setup` foi executado anteriormente e configurado com um ARN do bucket do Amazon S3. | Para modificar o valor do bucket do Amazon S3 para acesso aos backups de logs de transações, forneça um `target S3 ARN` diferente. | 
| rds\$1tlog\$1copy\$1setup | Não é possível gerar credenciais para ativar o acesso aos backups de logs de transações. Confirme o ARN do caminho do S3 fornecido com `rds_tlog_copy_setup` e tente novamente mais tarde.  | Houve um erro não especificado ao gerar credenciais para permitir o acesso aos backups de logs de transações. | Revise a configuração e tente novamente.  | 
| rds\$1tlog\$1copy\$1setup | Você não pode executar o procedimento armazenado rds\$1tlog\$1copy\$1setup enquanto houver tarefas pendentes. Aguarde até que as tarefas pendentes sejam concluídas e tente novamente.  | Somente duas tarefas podem ser executadas por vez. Há tarefas pendentes aguardando conclusão. | Visualize as tarefas pendentes e aguarde a conclusão delas. Para ter mais informações sobre monitoramento do status da tarefa, consulte [Acompanhar o status de tarefas](USER.SQLServer.AddlFeat.TransactionLogAccess.TrackTaskStatus.md).  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Uma tarefa de cópia de arquivos de backup T-log já foi emitida para o banco de dados: %s com ID da tarefa: %d, tente novamente mais tarde.  | Somente uma tarefa de cópia pode ser executada em um único banco de dados em um determinado momento. Há uma tarefa de cópia pendente aguardando conclusão. | Visualize as tarefas pendentes e aguarde a conclusão delas. Para ter mais informações sobre monitoramento do status da tarefa, consulte [Acompanhar o status de tarefas](USER.SQLServer.AddlFeat.TransactionLogAccess.TrackTaskStatus.md).  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Pelo menos um destes três conjuntos de parâmetros deve ser fornecido. SET-1:(@backup\$1file\$1start\$1time, @backup\$1file\$1end\$1time) \$1 SET-2:(@starting\$1lsn, @ending\$1lsn) \$1 SET-3:(@rds\$1backup\$1starting\$1seq\$1id, @rds\$1backup\$1ending\$1seq\$1id)  | Nenhum dos três conjuntos de parâmetros foi fornecido, ou um conjunto de parâmetros fornecido não tem um parâmetro obrigatório. | Você pode especificar parâmetros de hora, lsn ou ID de sequência. É necessário um destes três conjuntos de parâmetros. Para ter mais informações sobre os parâmetros obrigatórios, consulte [Copiar backups de logs de transações](USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.md). | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Os backups estão desativados em sua instância. Ative os backups e tente novamente em algum momento. | Backups automatizados não estão ativados para a instância de banco de dados. |  Para ter mais informações sobre como ativar backups automatizados e configurar a retenção de backups, consulte [Período de retenção de backup](USER_WorkingWithAutomatedBackups.BackupRetention.md).  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Não é possível encontrar o banco de dados %s fornecido.  | O valor fornecido para o parâmetro de entrada `@db_name` não corresponde ao nome do banco de dados na instância de banco de dados. | Utilize o nome de banco de dados correto. Para listar todos os bancos de dados por nome, execute `SELECT * from sys.databases` | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Não é possível executar o procedimento armazenado rds\$1tlog\$1backup\$1copy\$1to\$1S3 para bancos de dados do sistema do SQL Server nem para o banco de dados rdsadmin.  | O valor fornecido para o parâmetro de entrada `@db_name` corresponde ao nome do banco de dados do sistema do SQL Server ou ao banco de dados RDSAdmin. | Os seguintes bancos de dados não podem ser usados com acesso aos backups de logs de transações: `master, model, msdb, tempdb, RDSAdmin.`  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | O nome do banco de dados do parâmetro de entrada @db\$1name não pode estar em branco nem ser nulo.  | Um valor fornecido para o parâmetro de entrada `@db_name` estava em branco ou `NULL`. | Utilize o nome de banco de dados correto. Para listar todos os bancos de dados por nome, execute `SELECT * from sys.databases` | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | O período de retenção do backup da instância de banco de dados deve ser definido como pelo menos 1 para executar o procedimento armazenado rds\$1tlog\$1backup\$1copy\$1setup.  | Backups automatizados não estão ativados para a instância de banco de dados. | Para ter mais informações sobre como ativar backups automatizados e configurar a retenção de backups, consulte [Período de retenção de backup](USER_WorkingWithAutomatedBackups.BackupRetention.md). | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Erro ao executar o procedimento armazenado rds\$1tlog\$1backup\$1copy\$1to\$1S3. Reconecte-se ao endpoint do RDS e tente novamente.  | Ocorreu um erro interno. | Reconecte-se ao endpoint do RDS e execute o procedimento armazenado `rds_tlog_backup_copy_to_S3` novamente. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Somente um destes três conjuntos de parâmetros deve ser fornecido. SET-1:(@backup\$1file\$1start\$1time, @backup\$1file\$1end\$1time) \$1 SET-2:(@starting\$1lsn, @ending\$1lsn) \$1 SET-3:(@rds\$1backup\$1starting\$1seq\$1id, @rds\$1backup\$1ending\$1seq\$1id)  | Vários conjuntos de parâmetros foram fornecidos. | Você pode especificar parâmetros de hora, lsn ou ID de sequência. É necessário um destes três conjuntos de parâmetros. Para ter mais informações sobre os parâmetros obrigatórios, consulte [Copiar backups de logs de transações](USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.md).  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | A execução do procedimento armazenado rds\$1tlog\$1backup\$1copy\$1to\$1S3 em uma transação não é compatível. Verifique se a sessão não tem transações abertas e tente novamente.  | Houve uma tentativa de realizar o procedimento armazenado em uma transação com o uso de `BEGIN` e `END`. | Evite utilizar `BEGIN` e `END` ao executar o procedimento armazenado `rds_tlog_backup_copy_to_S3`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Os parâmetros fornecidos estão fora do período de retenção de logs de backup de transações. Para listar os arquivos de backup de logs de transações disponíveis, execute a função rds\$1fn\$1list\$1tlog\$1backup\$1metadata.  | Não há backups de logs transacionais disponíveis para os parâmetros de entrada fornecidos que se encaixem na janela de retenção de cópias. | Tente novamente com um conjunto válido de parâmetros. Para ter mais informações sobre os parâmetros obrigatórios, consulte [Copiar backups de logs de transações](USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.md). | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Houve um erro de permissão no processamento da solicitação. O bucket deve estar na mesma conta e região da instância de banco de dados e confirme as permissões da política de bucket do S3 em relação ao modelo na documentação pública.  | Foi detectado um problema com o bucket do S3 fornecido ou com suas permissões de política. | Confirme se sua configuração de acesso aos backups de logs de transações está correta. Para ter mais informações sobre os requisitos de configuração para seu bucket do S3, consulte [Requisitos](USER.SQLServer.AddlFeat.TransactionLogAccess.md#USER.SQLServer.AddlFeat.TransactionLogAccess.Requirements). | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Não é permitido executar o procedimento armazenado `rds_tlog_backup_copy_to_S3` em uma instância de réplica de leitura do RDS.  | Houve uma tentativa de realizar o procedimento armazenado em uma instância de réplica de leitura do RDS. | Conecte-se à instância de banco de dados primária do RDS para executar o procedimento armazenado `rds_tlog_backup_copy_to_S3`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | O LSN para o parâmetro de entrada `@starting_lsn` deve ser menor que `@ending_lsn`.  | O valor fornecido para o parâmetro de entrada `@starting_lsn` foi maior do que o valor fornecido para o parâmetro de entrada `@ending_lsn`. | O valor fornecido para o parâmetro de entrada `@starting_lsn` foi menor do que o valor fornecido para o parâmetro de entrada `@ending_lsn`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | O procedimento armazenado `rds_tlog_backup_copy_to_S3` só pode ser executado pelos membros da função `db_owner` no banco de dados de origem.  | A função `db_owner` não foi concedida para a conta que está tentando executar o procedimento armazenado `rds_tlog_backup_copy_to_S3` no `db_name` fornecido. | A conta que executa o procedimento armazenado deve ter permissão com a função `db_owner` para o `db_name` fornecido. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | O ID de sequência do parâmetro de entrada `@rds_backup_starting_seq_id` deve ser menor ou igual a `@rds_backup_ending_seq_id`.  | O valor fornecido para o parâmetro de entrada `@rds_backup_starting_seq_id` foi maior do que o valor fornecido para o parâmetro de entrada `@rds_backup_ending_seq_id`. | O valor fornecido para o parâmetro de entrada `@rds_backup_starting_seq_id` foi menor do que o valor fornecido para o parâmetro de entrada `@rds_backup_ending_seq_id`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | A opção SQLSERVER\$1BACKUP\$1RESTORE não está ativada ou está em processo de ativação. Ative a opção ou tente novamente mais tarde.  | A opção `SQLSERVER_BACKUP_RESTORE` não está ativada na instância de banco de dados ou estava apenas ativada e com a ativação interna pendente. | Ative a opção `SQLSERVER_BACKUP_RESTORE` conforme especificado na seção Requirements (Requisitos). Aguarde alguns minutos e execute o procedimento armazenado `rds_tlog_backup_copy_to_S3` novamente. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | A hora de início do parâmetro de entrada `@backup_file_start_time` deve ser menor do que `@backup_file_end_time`.  | O valor fornecido para o parâmetro de entrada `@backup_file_start_time` foi maior do que o valor fornecido para o parâmetro de entrada `@backup_file_end_time`. | O valor fornecido para o parâmetro de entrada `@backup_file_start_time` foi menor do que o valor fornecido para o parâmetro de entrada `@backup_file_end_time`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Não conseguimos processar a solicitação devido à falta de acesso. Confira sua configuração e permissões para o recurso.  | Pode haver um problema com as permissões do bucket do Amazon S3, ou o bucket do Amazon S3 fornecido está em outra conta ou região. | As permissões da política de bucket do Amazon S3 devem ter permissão para permitir o acesso ao RDS. Um bucket do Amazon S3 deve existir na mesma conta e região da instância de banco de dados. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Você não pode fornecer um ARN de chave do KMS como parâmetro de entrada para o procedimento armazenado para instâncias que não são criptografadas para armazenamento.  | Quando a criptografia de armazenamento não está ativada na instância de banco de dados, o parâmetro de entrada `@kms_key_arn` não deve ser fornecido. | Não forneça um parâmetro de entrada para `@kms_key_arn`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Você deve fornecer um ARN de chave do KMS como parâmetro de entrada para o procedimento armazenado para instâncias criptografadas para armazenamento.  | Quando a criptografia de armazenamento está ativada na instância de banco de dados, o parâmetro de entrada `@kms_key_arn` deve ser fornecido. | Forneça um parâmetro de entrada para `@kms_key_arn` com um valor que corresponda ao ARN do bucket do Amazon S3 a ser usado para backups de logs de transações. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Você deve executar o procedimento armazenado `rds_tlog_copy_setup` e definir o `@target_s3_arn` antes de executar o procedimento armazenado `rds_tlog_backup_copy_to_S3`.  | O procedimento de configuração do acesso aos backups de logs de transações não foi concluído antes da tentativa de executar o procedimento armazenado `rds_tlog_backup_copy_to_S3`. | Execute o procedimento armazenado `rds_tlog_copy_setup` antes de executar o procedimento armazenado `rds_tlog_backup_copy_to_S3`. Para ter mais informações sobre como executar o procedimento de configuração para acesso aos backups de logs de transações, consulte [Configurar o acesso aos backups de logs de transações](USER.SQLServer.AddlFeat.TransactionLogAccess.Enabling.md).  | 

# Opções para o mecanismo de banco de dados do Microsoft SQL Server
<a name="Appendix.SQLServer.Options"></a>

Nesta seção, você pode encontrar descrições de opções que estão disponíveis para instâncias do Amazon RDS que executam o mecanismo do banco de dados do Microsoft SQL Server. Para habilitar essas opções, adicione-as a um grupo de opções e, em seguida, associe o grupo de opções à sua instância de banco de dados. Para obter mais informações, consulte [Trabalhar com grupos de opções](USER_WorkingWithOptionGroups.md). 

Se você está procurando recursos opcionais que não são adicionados por meio de grupos de opções do RDS (como SSL, Autenticação do Microsoft Windows e integração do Amazon S3), consulte [Recursos adicionais do Microsoft SQL Server no Amazon RDS](User.SQLServer.AdditionalFeatures.md).

O Amazon RDS suporta as seguintes opções de instâncias de banco de dados do Microsoft SQL Server. 


****  

| Opção | ID da opção | Edições do mecanismo | 
| --- | --- | --- | 
|  [Servidores vinculados ao Oracle OLEDB](Appendix.SQLServer.Options.LinkedServers_Oracle_OLEDB.md)  |  `OLEDB_ORACLE`  |  SQL Server Enterprise Edition SQL Server Standard Edition  | 
|  [Backup e restauração nativos](Appendix.SQLServer.Options.BackupRestore.md)  |  `SQLSERVER_BACKUP_RESTORE`  |  SQL Server Enterprise Edition SQL Server Standard Edition SQL Server Web Edition SQL Server Express Edition  | 
|  [Transparent Data Encryption](Appendix.SQLServer.Options.TDE.md)  |  `TRANSPARENT_DATA_ENCRYPTION` (console do RDS) `TDE` (AWS CLI e API do RDS)  |  SQL Server 2016–2022 Enterprise Edition SQL Server 2022 Standard Edition | 
|  [Auditoria do SQL Server](Appendix.SQLServer.Options.Audit.md)  |  `SQLSERVER_AUDIT`  |  No RDS, a partir do SQL Server 2016, todas as edições do SQL Server comportam auditorias em nível de servidor, e a edição Enterprise também aceita auditorias em nível de banco de dados. Começando com o SQL Server SQL Server 2016 (13.x) SP1, todas as edições oferecem suporte a auditorias em nível de servidor e banco de dados. Para obter mais informações, consulte [Auditoria do SQL Server (Mecanismo de banco de dados)](https://docs.microsoft.com/sql/relational-databases/security/auditing/sql-server-audit-database-engine?view=sql-server-2017) na documentação do SQL Server. | 
|  [SQL Server Analysis Services](Appendix.SQLServer.Options.SSAS.md)  |  `SSAS`  |  SQL Server Enterprise Edition SQL Server Standard Edition  | 
|  [SQL Server Integration Services](Appendix.SQLServer.Options.SSIS.md)  |  `SSIS`  |  SQL Server Enterprise Edition SQL Server Standard Edition  | 
|  [SQL Server Reporting Services](Appendix.SQLServer.Options.SSRS.md)  |  `SSRS`  |  SQL Server Enterprise Edition SQL Server Standard Edition  | 
|  [Microsoft Distributed Transaction Coordinator](Appendix.SQLServer.Options.MSDTC.md)  |  `MSDTC`  |  No RDS, a partir do SQL Server 2016, todas as edições do SQL Server comportam transações distribuídas.  | 
|  [Administrador de recursos do SQL Server](Appendix.SQLServer.Options.ResourceGovernor.md)  |  `RESOURCE_GOVERNOR`  |  SQL Server Enterprise Edition SQL Server 2022 Developer Edition  | 

## Listas de opções disponíveis para versões e edições do SQL Server
<a name="Appendix.SQLServer.Options.Describe"></a>

Você pode usar o comando da `describe-option-group-options` AWS CLI para listar as opções disponíveis para versões e edições do SQL Server e as configurações para essas opções.

O exemplo a seguir mostra as opções e as configurações de opção para o SQL Server 2019 Enterprise Edition. A opção `--engine-name` é obrigatória.

```
aws rds describe-option-group-options --engine-name sqlserver-ee --major-engine-version 15.00
```

A saída será semelhante à seguinte.

```
{
    "OptionGroupOptions": [
        {
            "Name": "MSDTC",
            "Description": "Microsoft Distributed Transaction Coordinator",
            "EngineName": "sqlserver-ee",
            "MajorEngineVersion": "15.00",
            "MinimumRequiredMinorEngineVersion": "4043.16.v1",
            "PortRequired": true,
            "DefaultPort": 5000,
            "OptionsDependedOn": [],
            "OptionsConflictsWith": [],
            "Persistent": false,
            "Permanent": false,
            "RequiresAutoMinorEngineVersionUpgrade": false,
            "VpcOnly": false,
            "OptionGroupOptionSettings": [
                {
                    "SettingName": "ENABLE_SNA_LU",
                    "SettingDescription": "Enable support for SNA LU protocol",
                    "DefaultValue": "true",
                    "ApplyType": "DYNAMIC",
                    "AllowedValues": "true,false",
                    "IsModifiable": true,
                    "IsRequired": false,
                    "MinimumEngineVersionPerAllowedValue": []
                },
        ...

        {
            "Name": "TDE",
            "Description": "SQL Server - Transparent Data Encryption",
            "EngineName": "sqlserver-ee",
            "MajorEngineVersion": "15.00",
            "MinimumRequiredMinorEngineVersion": "4043.16.v1",
            "PortRequired": false,
            "OptionsDependedOn": [],
            "OptionsConflictsWith": [],
            "Persistent": true,
            "Permanent": false,
            "RequiresAutoMinorEngineVersionUpgrade": false,
            "VpcOnly": false,
            "OptionGroupOptionSettings": []
        }
    ]
}
```

# Suporte para servidores vinculados ao Oracle OLEDB no Amazon RDS para SQL Server
<a name="Appendix.SQLServer.Options.LinkedServers_Oracle_OLEDB"></a>

Os servidores vinculados ao Oracle Provider para OLEDB no RDS para SQL Server possibilitam que você acesse fontes de dados externas em um banco de dados Oracle. Você pode ler dados de fontes de dados Oracle remotas e executar comandos em servidores de banco de dados Oracle remotos fora de sua instância de banco de dados do RDS para SQL Server. Usando servidores vinculados ao Oracle OLEDB, você pode:
+ Acessar diretamente fontes de dados que não sejam o SQL Server
+ Consultar diversas fontes de dados do Oracle com a mesma consulta sem mover os dados
+ Emitir consultas, atualizações, comandos e transações distribuídos em fontes de dados em um ecossistema corporativo
+ Integrar conexões com um banco de dados Oracle a partir do pacote Microsoft Business Intelligence (SSIS, SSRS, SSAS)
+ Migrar de um banco de dados Oracle para o RDS para SQL Server

Você pode ativar um ou mais servidores vinculados para Oracle em uma instância de banco de dados existente ou nova do RDS para SQL Server. Depois, é possível integrar fontes de dados Oracle externas à sua instância de banco de dados.

**Contents**
+ [Versões e regiões compatíveis](#LinkedServers_Oracle_OLEDB.VersionRegionSupport)
+ [Limitações e recomendações](#LinkedServers_Oracle_OLEDB.Limitations)
+ [Ativar servidores vinculados ao Oracle](#LinkedServers_Oracle_OLEDB.Enabling)
  + [Criar o grupo de opções para OLEDB\$1ORACLE](#LinkedServers_Oracle_OLEDB.OptionGroup)
  + [Adicionar a opção `OLEDB_ORACLE` ao grupo de opções](#LinkedServers_Oracle_OLEDB.Add)
  + [Modificar a opção de versão do `OLEDB_ORACLE` para outra versão](#LinkedServers_Oracle_OLEDB.Modify)
  + [Associar o grupo de opções à instância de banco de dados](#LinkedServers_Oracle_OLEDB.Apply)
+ [Modificar propriedades do provedor do OLEDB](#LinkedServers_Oracle_OLEDB.ModifyProviderProperties)
+ [Modificar propriedades do driver OLEDB](#LinkedServers_Oracle_OLEDB.ModifyDriverProperties)
+ [Desativar servidores vinculados ao Oracle](#LinkedServers_Oracle_OLEDB.Disable)

## Versões e regiões compatíveis
<a name="LinkedServers_Oracle_OLEDB.VersionRegionSupport"></a>

O RDS para SQL Server é compatível com servidores vinculados ao Oracle OLEDB em todas as regiões para as edições SQL Server Standard e Enterprise Edition nas seguintes versões:
+ SQL Server 2022, todas as versões
+ SQL Server 2019, todas as versões
+ SQL Server 2017, todas as versões

Os servidores vinculados ao Oracle OLEDB são compatíveis com as seguintes versões do banco de dados Oracle:
+ Oracle Database 21c, todas as versões
+ Oracle Database 19c, todas as versões
+ Oracle Database 18c, todas as versões

Os servidores vinculados ao Oracle OLEDB são compatíveis com as seguintes versões do driver OLEDB Oracle:
+ 21.7
+ 21.16

## Limitações e recomendações
<a name="LinkedServers_Oracle_OLEDB.Limitations"></a>

Lembre-se das seguintes limitações e recomendações que se aplicam aos servidores vinculados ao Oracle OLEDB:
+ Permita o tráfego de rede adicionando a porta TCP aplicável no grupo de segurança para cada instância de banco de dados do RDS para SQL Server. Por exemplo, se você estiver configurando um servidor vinculado entre uma instância de banco de dados Oracle do EC2 e uma instância de banco de dados do RDS para SQL Server, deverá permitir o tráfego do endereço IP da instância de banco de dados Oracle do EC2. Você também deve permitir o tráfego na porta que o SQL Server está usando para escutar a comunicação do banco de dados. Para obter mais informações sobre grupos de segurança, consulte [Controlar acesso com grupos de segurança](Overview.RDSSecurityGroups.md).
+ Execute uma reinicialização da instância de banco de dados do RDS para SQL Server depois de ativar, desativar ou modificar a opção `OLEDB_ORACLE` em seu grupo de opções. O status do grupo de opções é `pending_reboot` para esses eventos e é obrigatório. Para instâncias multi-AZ do RDS para SQL Server com a opção “Sempre ativa” ou “Espelhamento” habilitada, um failover é esperado quando a instância é reiniciada após a criação ou restauração da nova instância.
+ Somente a autenticação simples é compatível com nome de usuário e senha para a fonte de dados Oracle.
+ Não há suporte aos drivers do Open Database Connectivity (ODBC). Somente as versões do driver OLEDB listadas acima são compatíveis.
+ Transações distribuídas (XA) são compatíveis. Para ativar transações distribuídas, ative a opção `MSDTC` no Grupo de Opções para sua instância de banco de dados e garanta que as transações XA estejam ativadas. Para obter mais informações, consulte [Suporte para o Microsoft Distributed Transaction Coordinator no RDS for SQL Server](Appendix.SQLServer.Options.MSDTC.md).
+ A criação de nomes de fonte de dados (DSNs) para usar como atalho para uma cadeia de conexão não é compatível.
+ O rastreamento do driver OLEDB não é compatível. Você pode usar o SQL Server Extended Events para rastrear eventos do OLEDB. Para obter mais informações, consulte [Set up Extended Events in RDS for SQL Server](https://aws.amazon.com/blogs/database/set-up-extended-events-in-amazon-rds-for-sql-server/) (Configurar eventos estendidos no RDS para SQL Server).
+ O acesso à pasta de catálogos de um servidor vinculado Oracle não é compatível com ouso do SQL Server Management Studio (SSMS).

## Ativar servidores vinculados ao Oracle
<a name="LinkedServers_Oracle_OLEDB.Enabling"></a>

Ative servidores vinculados ao Oracle adicionando a opção `OLEDB_ORACLE` à sua instância de banco de dados do RDS para SQL Server. Use o seguinte processo:

1. Crie um grupo de opções ou selecione um existente.

1. Adicione a opção `OLEDB_ORACLE` ao grupo de opções.

1. Selecione uma versão do driver OLEDB para usar.

1. Associe o grupo de opções à instância de banco de dados.

1. Reinicialize a instância de banco de dados.

### Criar o grupo de opções para OLEDB\$1ORACLE
<a name="LinkedServers_Oracle_OLEDB.OptionGroup"></a>

Para trabalhar com servidores vinculados ao Oracle, crie um grupo de opções ou modifique um grupo de opções que corresponda à edição do SQL Server e à versão da instância de banco de dados que você pretende usar. Para concluir esse procedimento, use o Console de gerenciamento da AWS ou a AWS CLI.

#### Console
<a name="LinkedServers_Oracle_OLEDB.OptionGroup.Console"></a>

O procedimento a seguir cria um grupo de opções para o SQL Server Standard Edition 2019.

**Como criar o grupo de opções**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Escolha **Create group (Criar grupo)**.

1. Na janela **Create option group (Criar grupo de opções)**, faça o seguinte:

   1. Em **Name** (Nome), insira um nome para o grupo de opções que seja exclusivo na sua conta da AWS, como **oracle-oledb-se-2019**. O nome pode conter somente letras, números e hifens.

   1. Em **Descrição**, insira uma breve descrição do grupo de opções, como **OLEDB\$1ORACLE option group for SQL Server SE 2019**. A descrição é usada para fins de exibição.

   1. Em **Engine (Mecanismo)**, selecione **sqlserver-se**.

   1. Em **Major engine version** (Versão do mecanismo principal), selecione **15.00**.

1. Escolha **Criar**.

#### CLI
<a name="LinkedServers_Oracle_OLEDB.OptionGroup.CLI"></a>

O procedimento a seguir cria um grupo de opções para o SQL Server Standard Edition 2019.

**Como criar o grupo de opções**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds create-option-group \
      --option-group-name oracle-oledb-se-2019 \
      --engine-name sqlserver-se \
      --major-engine-version 15.00 \
      --option-group-description "OLEDB_ORACLE option group for SQL Server SE 2019"
  ```

  Para Windows:

  ```
  aws rds create-option-group ^
      --option-group-name oracle-oledb-se-2019 ^
      --engine-name sqlserver-se ^
      --major-engine-version 15.00 ^
      --option-group-description "OLEDB_ORACLE option group for SQL Server SE 2019"
  ```

### Adicionar a opção `OLEDB_ORACLE` ao grupo de opções
<a name="LinkedServers_Oracle_OLEDB.Add"></a>

Depois, use o Console de gerenciamento da AWS ou a AWS CLI para adicionar a opção `OLEDB_ORACLE` ao grupo de opções.

#### Console
<a name="LinkedServers_Oracle_OLEDB.Add.Console"></a>

**Como adicionar a opção OLEDB\$1ORACLE**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Selecione o grupo de opções que você acabou de criar, que é **oracle-oledb-se-2019** neste exemplo.

1. Escolha **Add option (Adicionar opção)**.

1. Em **Option details** (Detalhes da opção), selecione **OLEDB\$1ORACLE** em **Option name** (Nome da opção).

1. Em **Versão**, escolha a versão do driver OLEDB Oracle que você deseja instalar.

1. Em **Scheduling (Programação)**, escolha se deseja adicionar a opção imediatamente ou na próxima janela de manutenção.

1. Escolha **Add option (Adicionar opção)**.

#### CLI
<a name="LinkedServers_Oracle_OLEDB.Add.CLI"></a>

**Como adicionar a opção OLEDB\$1ORACLE**
+ Adicione a opção `OLEDB_ORACLE` ao grupo de opções.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds add-option-to-option-group \
      --option-group-name oracle-oledb-se-2019 \
      --options OptionName=OLEDB_ORACLE, OptionVersion=21.16 \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds add-option-to-option-group ^
      --option-group-name oracle-oledb-se-2019 ^
      --options OptionName=OLEDB_ORACLE, OptionVersion=21.16 ^
      --apply-immediately
  ```

### Modificar a opção de versão do `OLEDB_ORACLE` para outra versão
<a name="LinkedServers_Oracle_OLEDB.Modify"></a>

Para modificar a versão da opção `OLEDB_ORACLE` para outra versão, use o Console de gerenciamento da AWS ou a AWS CLI.

#### Console
<a name="LinkedServers_Oracle_OLEDB.Modify.Console"></a>

**Como modificar a opção OLEDB\$1ORACLE**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Selecione o grupo de opções com a opção `OLEDB_ORACLE` (**oracle-oledb-se-2019** no exemplo anterior).

1. Escolha **Modify option** (Modificar opção).

1. Em **Option details** (Detalhes da opção), selecione **OLEDB\$1ORACLE** em **Option name** (Nome da opção).

1. Em **Versão**, escolha a versão do driver OLEDB Oracle que você deseja usar.

1. Em **Programação**, escolha se deseja adicionar a opção imediatamente ou na próxima janela de manutenção.

1. Escolha **Modify option** (Modificar opção).

#### CLI
<a name="LinkedServers_Oracle_OLEDB.Add.CLI"></a>

Para modificar a versão da opção `OLEDB_ORACLE`, use o comando [https://docs.aws.amazon.com/cli/latest/reference/rds/add-option-to-option-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/add-option-to-option-group.html) da AWS CLI com o grupo de opções e a versão da opção que você deseja usar.

**Como modificar a opção OLEDB\$1ORACLE**
+   
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds add-option-to-option-group \
      --option-group-name oracle-oledb-se-2019 \
      --options OptionName=OLEDB_ORACLE, OptionVersion=21.7 \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds add-option-to-option-group ^
      --option-group-name oracle-oledb-se-2019 ^
      --options OptionName=OLEDB_ORACLE, OptionVersion=21.7 ^
      --apply-immediately
  ```

### Associar o grupo de opções à instância de banco de dados
<a name="LinkedServers_Oracle_OLEDB.Apply"></a>

Para associar o grupo de opções `OLEDB_ORACLE` e o grupo de parâmetros à sua instância de banco de dados, use o Console de gerenciamento da AWS ou a AWS CLI 

#### Console
<a name="LinkedServers_Oracle_OLEDB.Apply.Console"></a>

Para concluir a ativação de servidores vinculados para Oracle, associe o grupo de opções `OLEDB_ORACLE` a uma instância de banco de dados nova ou existente:
+ Para uma nova instância de banco de dados, associe-os ao executar a instância. Para obter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).
+ Para uma instância de banco de dados existente, associe-os modificando a instância. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).

#### CLI
<a name="LinkedServers_Oracle_OLEDB.Apply.CLI"></a>

É possível associar o grupo de opções `OLEDB_ORACLE` e o grupo de parâmetros a uma instância de banco de dados nova ou existente.

**Como criar uma instância com o grupo de opções `OLEDB_ORACLE` e o grupo de parâmetros**
+ Especifique o mesmo tipo de mecanismo de banco de dados e a versão principal que você usou ao criar o grupo de opções.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier mytestsqlserveroracleoledbinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 15.0.4236.7.v1 \
      --allocated-storage 100 \
      --manage-master-user-password \
      --master-username admin \
      --storage-type gp2 \
      --license-model li \
      --domain-iam-role-name my-directory-iam-role \
      --domain my-domain-id \
      --option-group-name oracle-oledb-se-2019 \
      --db-parameter-group-name my-parameter-group-name
  ```

  Para Windows:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier mytestsqlserveroracleoledbinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 15.0.4236.7.v1 ^
      --allocated-storage 100 ^
      --manage-master-user-password ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --domain-iam-role-name my-directory-iam-role ^
      --domain my-domain-id ^
      --option-group-name oracle-oledb-se-2019 ^
      --db-parameter-group-name my-parameter-group-name
  ```

**Como modificar uma instância e associar o grupo de opções `OLEDB_ORACLE`**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier mytestsqlserveroracleoledbinstance \
      --option-group-name oracle-oledb-se-2019 \
      --db-parameter-group-name my-parameter-group-name \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier mytestsqlserveroracleoledbinstance ^
      --option-group-name oracle-oledb-se-2019 ^
      --db-parameter-group-name my-parameter-group-name ^
      --apply-immediately
  ```

## Modificar propriedades do provedor do OLEDB
<a name="LinkedServers_Oracle_OLEDB.ModifyProviderProperties"></a>

Você pode visualizar e alterar as propriedades do provedor do OLEDB. Somente o usuário `master` pode realizar essa tarefa. Todos os servidores vinculados para Oracle criados na instância de banco de dados usam as mesmas propriedades desse provedor do OLEDB. Chame o procedimento armazenado `sp_MSset_oledb_prop` para alterar as propriedades do provedor do OLEDB.

Como alterar as propriedades do provedor do OLEDB

```
				
USE [master]
GO
EXEC sp_MSset_oledb_prop N'OraOLEDB.Oracle', N'AllowInProcess', 1 
EXEC sp_MSset_oledb_prop N'OraOLEDB.Oracle', N'DynamicParameters', 0
GO
```

As seguintes propriedades podem ser modificadas:


****  

| Nome da propriedade | Valor recomendado (1 = ativado, 0 = desativado) | Descrição | 
| --- | --- | --- | 
| `Dynamic parameter` | 1 | Permite espaços reservados para SQL (representados por “?”) em consultas parametrizadas. | 
| `Nested queries` | 1 | Permite declarações `SELECT` aninhadas na cláusula `FROM`, como subconsultas. | 
| `Level zero only` | 0 | Somente interfaces OLEDB de nível básico são chamadas em relação ao provedor. | 
| `Allow inprocess` | 1 | Se ativado, o Microsoft SQL Server permite que o provedor seja instanciado como um servidor em processo. Defina essa propriedade como 1 para usar servidores vinculados Oracle. | 
| `Non transacted updates` | 0 | Se for diferente de zero, o SQL Server permitirá atualizações. | 
| `Index as access path` | Falso | Se for diferente de zero, o SQL Server tentará usar índices do provedor para buscar dados. | 
| `Disallow adhoc access` | Falso | Se definido, o SQL Server não permitirá a execução de consultas de passagem no provedor do OLEDB. Embora essa opção possa ser marcada, às vezes é apropriado executar consultas de passagem. | 
| `Supports LIKE operator` | 1 | Indica que o provedor é compatível com consultas usando a palavra-chave LIKE. | 

## Modificar propriedades do driver OLEDB
<a name="LinkedServers_Oracle_OLEDB.ModifyDriverProperties"></a>

Você pode visualizar e alterar as propriedades do driver OLEDB ao criar um servidor vinculado para Oracle. Somente o usuário `master` pode realizar essa tarefa. As propriedades do driver definem como o driver OLEDB manipula os dados ao trabalhar com uma fonte de dados Oracle remota. As propriedades do driver são específicas de cada servidor vinculado Oracle criado na instância de banco de dados. Chame o procedimento armazenado `master.dbo.sp_addlinkedserver` para alterar as propriedades do driver OLEDB.

Exemplo: Para criar um servidor vinculado e alterar a propriedade `FetchSize` do driver OLEDB

```
	
EXEC master.dbo.sp_addlinkedserver
@server = N'Oracle_link2',
@srvproduct=N'Oracle',
@provider=N'OraOLEDB.Oracle',
@datasrc=N'my-oracle-test.cnetsipka.us-west-2.rds.amazonaws.com:1521/ORCL',
@provstr='FetchSize=200'
GO
```

```
	
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname=N'Oracle_link2',
@useself=N'False',
@locallogin=NULL,
@rmtuser=N'master',
@rmtpassword='Test#1234'
GO
```

**nota**  
Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.

## Desativar servidores vinculados ao Oracle
<a name="LinkedServers_Oracle_OLEDB.Disable"></a>

Para desabilitar servidores vinculados ao Oracle, remova a opção `OLEDB_ORACLE` do grupo de opções.

**Importante**  
Remover a opção não exclui as configurações de servidor vinculado existentes na instância de banco de dados. Você deve descartá-los manualmente para removê-los da instância de banco de dados.  
Você pode reativar a opção `OLEDB_ORACLE` após a remoção para reutilizar as configurações do servidor vinculado definidas anteriormente na instância de banco de dados.

### Console
<a name="LinkedServers_Oracle_OLEDB.Disable.Console"></a>

O procedimento a seguir remove a opção `OLEDB_ORACLE`.

**Como remover a opção OLEDB\$1ORACLE do grupo de opções**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Selecione o grupo de opções com a opção `OLEDB_ORACLE` (`oracle-oledb-se-2019` nos exemplos anteriores).

1. Selecione **Delete option (Excluir opção)**.

1. Em **Deletion options** (Opções de exclusão), selecione **OLEDB\$1ORACLE** em **Options to delete** (Opções a serem excluídas).

1. Em **Apply immediately** (Aplicar imediatamente), selecione **Yes** (Sim) para excluí-la imediatamente ou **No** (Não) para excluí-la na próxima janela de manutenção.

1. Escolha **Excluir**.

### CLI
<a name="LinkedServers_Oracle_OLEDB.Disable.CLI"></a>

O procedimento a seguir remove a opção `OLEDB_ORACLE`.

**Como remover a opção OLEDB\$1ORACLE do grupo de opções**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds remove-option-from-option-group \
      --option-group-name oracle-oledb-se-2019 \
      --options OLEDB_ORACLE \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name oracle-oledb-se-2019 ^
      --options OLEDB_ORACLE ^
      --apply-immediately
  ```

# Servidores vinculados ao Teradata ODBC no RDS para SQL Server
<a name="USER_SQLServerTeradata"></a>

O suporte para servidores vinculados ao driver ODBC Teradata no RDS para SQL Server possibilita que você acesse fontes de dados externas em um banco de dados Teradata. É possível ler dados e executar comandos em servidores de banco de dados Teradata remotos fora da instância do RDS para SQL Server. Use servidores vinculados ao ODBC Teradata para habilitar os seguintes recursos:
+ Acesse diretamente fontes de dados que não sejam o SQL Server.
+ Consulte diversas fontes de dados do Teradata com a mesma consulta sem mover os dados.
+ Emita consultas, atualizações, comandos e transações distribuídos em fontes de dados em um ecossistema corporativo.
+ Integre conexões a um banco de dados do Teradata por meio do pacote Microsoft Business Intelligence (SSIS, SSRS, SSAS).
+ Migre de um banco de dados Teradata para o RDS para SQL Server.

É possível ativar um ou mais servidores vinculados para Teradata em uma instância de banco de dados existente ou nova do RDS para SQL Server. Depois, é possível integrar fontes de dados externas do Teradata à sua instância de banco de dados.

**Topics**
+ [Versões e regiões compatíveis](#USER_SQLServerTeradata.VersionRegionSupport)
+ [Limitações e recomendações](#USER_SQLServerTeradata.LimitsandRecommendations)
+ [Considerações para implantações Multi-AZ](#USER_SQLServerTeradata.MultiAZ)
+ [Ativar servidores vinculados ao Teradata](USER_SQLServerTeradata.Activate.md)
+ [Criar servidores vinculados ao Teradata](USER_SQLServerTeradata.CreateLinkedServers.md)
+ [Desativar servidores vinculados ao Teradata](USER_SQLServerTeradata.Deactivate.md)

## Versões e regiões compatíveis
<a name="USER_SQLServerTeradata.VersionRegionSupport"></a>

O RDS para SQL Server comporta servidores vinculados ao ODBC Teradata em todas as Regiões da AWS para SQL Server Standard e Enterprise Edition nas seguintes versões:
+ SQL Server 2022, todas as versões
+ SQL Server 2019, todas as versões
+ SQL Server 2017, todas as versões

As versões do banco de dados Teradata a seguir comportam a vinculação com o RDS para SQL Server
+ Teradata 17.20, todas as versões

## Limitações e recomendações
<a name="USER_SQLServerTeradata.LimitsandRecommendations"></a>

As seguintes limitações se aplicam aos servidores vinculados ao ODBC Teradata:
+ O RDS para SQL Server aceita apenas a autenticação simples com nome de usuário e senha para a origem do Teradata.
+ O RDS para SQL Server aceita somente o driver ODBC Teradata versão 17.20.0.33.
+ O RDS para SQL Server não comporta a criação de nomes de fonte de dados (DSNs) a serem usados como atalhos para uma string de conexão.
+ O RDS para SQL Server não aceita o rastreamento do driver ODBC. Use o SQL Server Extended Events para rastrear eventos do ODBC. Para obter mais informações, consulte [Set up Extended Events in RDS for SQL Server](https://aws.amazon.com/blogs/database/set-up-extended-events-in-amazon-rds-for-sql-server/) (Configurar eventos estendidos no RDS para SQL Server).
+ O RDS para SQL Server não aceita o acesso à pasta de catálogos de um servidor vinculado Teradata durante o uso do SQL Server Management Studio (SSMS).

Pense nas seguintes recomendações ao usar servidores vinculados ao ODBC Teradata:
+ Permita o tráfego de rede adicionando a porta TCP aplicável no grupo de segurança para cada instância de banco de dados do RDS para SQL Server. Por exemplo, se você estiver configurando um servidor vinculado entre uma instância de banco de dados do EC2 Teradata e uma instância de banco de dados do RDS para SQL Server, deverá permitir o tráfego do endereço IP da instância de banco de dados do EC2 Teradata. Você também deve permitir o tráfego na porta que a instância de banco de dados do RDS para SQL Server está usando para escutar a comunicação do banco de dados. Para obter mais informações sobre grupos de segurança, consulte [Controlar acesso com grupos de segurança](Overview.RDSSecurityGroups.md).
+ Transações distribuídas (XA) são compatíveis. Para ativar transações distribuídas, ative a opção `MSDTC` no grupo de opções para sua instância de banco de dados e garanta que as transações XA estejam ativadas. Para ter mais informações, consulte [Suporte para o Microsoft Distributed Transaction Coordinator no RDS for SQL Server](Appendix.SQLServer.Options.MSDTC.md).
+ O ODBC Teradata vinculado aceita SSL/TLS, desde que configurado no Servidor Teradata. Para ter mais informações, consulte [Enable TLS Connectivity on Teradata Vantage](https://docs.teradata.com/r/Enterprise_IntelliFlex_Lake_VMware/Teradata-Call-Level-Interface-Version-2-Reference-for-Workstation-Attached-Systems-20.00/Mainframe-TLS-Connectivity-Supplement/Enable-TLS-Connectivity-on-Teradata-Vantage).

## Considerações para implantações Multi-AZ
<a name="USER_SQLServerTeradata.MultiAZ"></a>

Atualmente, o RDS para SQL Server não replica servidores vinculados ao servidor de banco de dados espelhado (ou ao servidor secundário do grupo de disponibilidade Always On) em uma implantação Multi-AZ. Se os servidores vinculados forem adicionados antes que a configuração seja alterada para adicionar espelhamento ou Always On, os servidores vinculados serão copiados para os servidores vinculados existentes.

Também é possível criar os servidores vinculados na instância primária, fazer failover para a instância do servidor de alta disponibilidade e, depois, criar os servidores vinculados novamente para que estejam nas duas instâncias do RDS para SQL Server. 

# Ativar servidores vinculados ao Teradata
<a name="USER_SQLServerTeradata.Activate"></a>

Ative servidores vinculados ao Teradata adicionando a opção `ODBC_TERADATA` à sua instância de banco de dados do RDS para SQL Server. Use o seguinte processo:

**Topics**
+ [Criar o grupo de opções para `ODBC_TERADATA`](#USER_SQLServerTeradata.Activate.CreateOG)
+ [Adicionar a opção `ODBC_TERADATA` ao grupo de opções](#USER_SQLServerTeradata.Activate.AddOG)
+ [Associar a opção `ODBC_TERADATA` à instância de banco de dados](#USER_SQLServerTeradata.Activate.AssociateOG)

## Criar o grupo de opções para `ODBC_TERADATA`
<a name="USER_SQLServerTeradata.Activate.CreateOG"></a>

Para trabalhar com servidores vinculados ao Teradata, crie um grupo de opções ou modifique um grupo de opções que corresponda à edição do SQL Server e à versão da instância de banco de dados que você pretende usar. Para concluir esse procedimento, use o Console de gerenciamento da AWS ou a AWS CLI.

### Console
<a name="USER_SQLServerTeradata.Activate.CreateOG.Console"></a>

Use o procedimento a seguir para criar um grupo de opções para o SQL Server Standard Edition 2019.

**Como criar o grupo de opções**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Escolha **Create group (Criar grupo)**.

1. Na janela **Create option group (Criar grupo de opções)**, faça o seguinte:

   1. Em **Name** (Nome), insira um nome para o grupo de opções que seja exclusivo na sua Conta da AWS, como `teradata-odbc-se-2019`. O nome pode conter somente letras, números e hifens. 

   1. Em **Descrição**, insira uma breve descrição do grupo de opções.

   1. Em **Engine (Mecanismo)**, selecione **sqlserver-se**.

   1. Em **Major engine version** (Versão do mecanismo principal), selecione **15.00**.

1. Escolha **Criar**.

### AWS CLI
<a name="USER_SQLServerTeradata.Activate.CreateOG.CLI"></a>

O procedimento a seguir cria um grupo de opções para o SQL Server Standard Edition 2019.

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

```
aws rds create-option-group \
    --option-group-name teradata-odbc-se-2019 \
    --engine-name sqlserver-se \
    --major-engine-version 15.00 \
    --option-group-description "ODBC_TERADATA option group for SQL Server SE 2019"
```

**Example**  
Para Windows:  

```
aws rds create-option-group ^
    --option-group-name teradata-odbc-se-2019 ^
    --engine-name sqlserver-se ^
    --major-engine-version 15.00 ^
    --option-group-description "ODBC_TERADATA option group for SQL Server SE 2019"
```

## Adicionar a opção `ODBC_TERADATA` ao grupo de opções
<a name="USER_SQLServerTeradata.Activate.AddOG"></a>

Depois, use o Console de gerenciamento da AWS ou a AWS CLI para adicionar a opção `ODBC_Teradata` ao grupo de opções.

### Console
<a name="USER_SQLServerTeradata.Activate.AddOG.Console"></a>

Use o procedimento a seguir para criar um grupo de opções para o SQL Server Standard Edition 2019.

**Como adicionar a opção `ODBC_TERADATA`**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Escolha o novo grupo de opções.

1. Escolha **Add option (Adicionar opção)**.

1. Em **Detalhes da opção**:

   1. Escolha **ODBC\$1TERADATA** para **Nome da opção**.

   1. Em `17.20.33.00` para **Versão da opção**.

1. Em Programação, escolha se deseja adicionar a opção imediatamente ou na próxima janela de manutenção.

1. Escolha **Add option (Adicionar opção)**.

### AWS CLI
<a name="USER_SQLServerTeradata.Activate.AddOG.CLI"></a>

O procedimento a seguir adiciona a opção `ODBC_TERADATA` ao grupo de opções.

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

```
aws rds add-option-to-option-group \
    --option-group-name teradata-odbc-se-2019 \
    --options "OptionName=ODBC_TERADATA,OptionVersion=17.20.33.00" \
    --apply-immediately
```

**Example**  
Para Windows:  

```
aws rds add-option-to-option-group ^
    --option-group-name teradata-odbc-se-2019 ^
    --options "OptionName=ODBC_TERADATA,OptionVersion=17.20.33.00" ^
    --apply-immediately
```

## Associar a opção `ODBC_TERADATA` à instância de banco de dados
<a name="USER_SQLServerTeradata.Activate.AssociateOG"></a>

Para associar o grupo de opções `ODBC_TERADATA` à instância de banco de dados, use o Console de gerenciamento da AWS ou a AWS CLI.

### Console
<a name="USER_SQLServerTeradata.Activate.AssociateOG.Console"></a>

Para concluir a ativação de servidores vinculados para Teradata, associe o grupo de opções a uma instância de banco de dados nova ou existente:
+ Para uma nova instância de banco de dados, associe-o ao executar a instância. Para ter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).
+ Para uma instância de banco de dados existente, associe-o modificando a instância. Para ter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).

### AWS CLI
<a name="USER_SQLServerTeradata.Activate.AssociateOG.CLI"></a>

Especifique o mesmo tipo de mecanismo de banco de dados e a versão principal que você usou ao criar o grupo de opções.

Para Linux, macOS ou Unix:

```
aws rds create-db-instance \
    --db-instance-identifier mytestsqlserverteradataodbcinstance \
    --db-instance-class db.m5.2xlarge \
    --engine sqlserver-se \
    --engine-version 15.00 \
    --license-model license-included \
    --allocated-storage 100 \
    --master-username admin \
    --master-user-password password \
    --storage-type gp2 \
    --option-group-name teradata-odbc-se-2019
```

Para Windows:

```
aws rds create-db-instance ^
    --db-instance-identifier mytestsqlserverteradataodbcinstance ^
    --db-instance-class db.m5.2xlarge ^
    --engine sqlserver-se ^
    --engine-version 15.00 ^
    --license-model license-included ^ 
    --allocated-storage 100 ^
    --master-username admin ^
    --master-user-password password ^
    --storage-type gp2 ^
    --option-group-name teradata-odbc-se-2019
```

Para modificar uma instância e associar o novo grupo de opções: 

Para Linux, macOS ou Unix:

```
aws rds modify-db-instance \
    --db-instance-identifier mytestsqlserverteradataodbcinstance \
    --option-group-name teradata-odbc-se-2019 \
    --apply-immediately
```

Para Windows:

```
aws rds modify-db-instance ^
    --db-instance-identifier mytestsqlserverteradataodbcinstance ^
    --option-group-name teradata-odbc-se-2019 ^
    --apply-immediately
```

# Criar servidores vinculados ao Teradata
<a name="USER_SQLServerTeradata.CreateLinkedServers"></a>

Para criar um servidor vinculado ao Teradata, execute os seguintes comandos:

```
EXECUTE master.dbo.sp_addlinkedserver 
    @server = N'LinkedServer_NAME', 
    @srvproduct=N'', 
    @provider=N'MSDASQL', 
    @provstr=N'"PROVIDER=MSDASQL;DRIVER={Teradata Database ODBC Driver 17.20};
                DBCName=Server;UID=user_name;PWD=user_password;
                UseDataEncryption=YES/NO;SSLMODE=PREFER/ALLOW/DISABLE>;"', 
    @catalog='database'
```

```
EXECUTE master.dbo.sp_addlinkedsrvlogin 
    @rmtsrvname = N'LinkedServer_NAME', 
    @locallogin = NULL , 
    @useself = N'False', 
    @rmtuser = N'user_name', 
    @rmtpassword = N'user_password'
```

Um exemplo dos comandos acima é mostrado aqui:

```
EXECUTE master.dbo.sp_addlinkedserver 
    @server = N'LinkedServerToTeradata', 
    @srvproduct=N'', 
    @provider=N'MSDASQL', 
    @provstr=N'"PROVIDER=MSDASQL;DRIVER={Teradata Database ODBC Driver 17.20};
                DBCName=my-teradata-test.cnetsipka.us-west-2.rds.amazonaws.com;
                UID=master;
                PWD=Test#1234;
                UseDataEncryption=YES;
                SSLMODE=PREFER;"', 
    @catalog='MyTestTeradataDB'

EXECUTE master.dbo.sp_addlinkedsrvlogin 
    @rmtsrvname = N'LinkedServerToTeradata', 
    @locallogin = NULL , 
    @useself = N'False', 
    @rmtuser = N'master', 
    @rmtpassword = N'Test#1234'
```

**nota**  
Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.

# Desativar servidores vinculados ao Teradata
<a name="USER_SQLServerTeradata.Deactivate"></a>

Para desativar servidores vinculados ao Teradata, remova a opção `ODBC_TERADATA` do grupo de opções.

**Importante**  
Excluir a opção não exclui as configurações de servidor vinculado existentes na instância de banco de dados. Você deve descartá-los manualmente para removê-los da instância de banco de dados.  
Você pode reativar a `ODBC_TERADATA` após a remoção para reutilizar as configurações do servidor vinculado definidas anteriormente na instância de banco de dados.

## Console
<a name="USER_SQLServerTeradata.Deactivate.Console"></a>

Como remover a opção `ODBC_TERADATA` do grupo de opções

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Escolha o grupo de opções com a opção `ODBC_TERADATA`. 

1. Escolha **Excluir**.

1. Em **Opções de exclusão**, escolha `ODBC_TERADATA` em **Opções a serem excluídas**.

1. Em **Apply immediately** (Aplicar imediatamente), selecione **Yes** (Sim) para excluí-la imediatamente ou **No** (Não) para excluí-la na próxima janela de manutenção.

1. Escolha **Excluir**.

## AWS CLI
<a name="USER_SQLServerTeradata.Deactivate.CLI"></a>

O comando a seguir remove a opção `ODBC_TERADATA`.

Para Linux, macOS ou Unix:

```
aws rds remove-option-from-option-group \
    --option-group-name teradata-odbc-se-2019 \
    --options ODBC_TERADATA \
    --apply-immediately
```

Para Windows:

```
aws rds remove-option-from-option-group ^
    --option-group-name teradata-odbc-se-2019 ^
    --options ODBC_TERADATA ^
    --apply-immediately
```

# Suporte para backup e restauração nativos no SQL Server
<a name="Appendix.SQLServer.Options.BackupRestore"></a>

Usando backup e restauração nativos para bancos de dados do SQL Server, é possível criar um backup diferencial ou completo do banco de dados no local e armazenar os arquivos de backup no Amazon S3. Em seguida, você pode restaurar para uma instância de banco de dados existente do Amazon RDS que executa o SQL Server. Você também pode fazer backup de um banco de dados do RDS for SQL Server, armazená-lo no Amazon S3 e restaurá-lo em outros locais. Além disso, você pode restaurar o backup em um servidor local ou em uma instância de banco de dados do Amazon RDS diferente que executa o SQL Server. Para obter mais informações, consulte [Importar e exportar bancos de dados do SQL Server usando backup e restauração nativos](SQLServer.Procedural.Importing.md).

O Amazon RDS é compatível com o backup e restauração nativos para bancos de dados do Microsoft SQL Server usando arquivos de backup diferencial e completo (arquivos .bak).

## Adicionar a opção de backup e restauração nativos
<a name="Appendix.SQLServer.Options.BackupRestore.Add"></a>

O processo geral para adicionar a opção de backup e restauração nativos a uma instância de banco de dados é o seguinte:

1. Crie um novo grupo de opções, ou copie ou modifique um existente.

1. Adicione a opção `SQLSERVER_BACKUP_RESTORE` ao grupo de opções.

1. Associe uma função do AWS Identity and Access Management (IAM) à opção. A função do IAM deve ter acesso a um bucket do S3 para armazenar os backups do banco de dados.

   Ou seja, ela deve ter como opção definir um nome de recurso da Amazon (ARN) válido no formato `arn:aws:iam::account-id:role/role-name`. Para obter mais informações, consulte [Nomes de recurso da Amazon (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-iam) na *Referência geral da AWS*.

   A função do IAM também deve ter um relacionamento de confiança e uma política de permissões anexadas. A relação de confiança permite que o RDS assuma a função e a política de permissões define as ações que a função pode executar. Para obter mais informações, consulte [Criar manualmente uma função do IAM para backup e restauração nativos](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM).

1. Associe o grupo de opções à instância de banco de dados.

Após adicionar a opção de backup e restauração nativos, você não precisará reiniciar a instância de banco de dados. Assim que o grupo de opções estiver ativo, você poderá começar a fazer backup e restaurar imediatamente.

### Console
<a name="Add.Native.Backup.Restore.Console"></a>

**Como adicionar a opção de backup e restauração nativos**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Crie um grupo de opções ou use um existente. Para obter informações sobre como criar um grupo de opções de banco de dados personalizado, consulte [Criar um grupo de opções](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create).

   Para usar um grupo de opções existente, vá para a próxima etapa.

1. Adicione a opção **SQLSERVER\$1BACKUP\$1RESTORE** ao grupo de opções. Para mais informações sobre a adição de opções, consulte [Adicionar uma opção a um grupo de opções](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption).

1. Execute um destes procedimentos:
   + Para usar uma função do IAM existente e as configurações do Amazon S3, escolha uma função do IAM existente para a **IAM Role (Função do IAM)**. Se você usar uma função do IAM existente, o RDS usará as configurações do Amazon S3 definidas para essa função.
   + Para criar uma nova função e definir novas configurações do Amazon S3, faça o seguinte: 

     1. Em **Perfil do IAM**, selecione **Criar uma nova função**.

     1. Em **S3 bucket name** (Nome do bucket do S3), escolha um bucket do S3 na lista.

     1. Em **S3 prefix (optional)**, (Prefixo do S3 - opcional) especifique um prefixo a ser utilizado para os arquivos armazenados no bucket do Amazon S3. 

        Esse prefixo pode incluir um caminho de arquivo, mas isso não é necessário. Se você fornecer um prefixo, o RDS anexará esse prefixo a todos os arquivos de backup. O RDS usa o prefixo durante uma restauração para identificar arquivos relacionados e ignorar arquivos irrelevantes. Por exemplo, você pode usar o bucket do S3 para outros fins, além de manter arquivos de backup. Nesse caso, você pode usar o prefixo para que o RDS execute backup nativo e restaure apenas em uma pasta específica e suas subpastas.

        Se você deixar o prefixo em branco, o RDS não usará um prefixo para identificar arquivos de backup ou arquivos a serem restaurados. Como resultado, durante uma restauração com vários arquivos, o RDS tenta restaurar todos os arquivos em todas as pastas do bucket do S3.

     1. Marque a caixa de seleção **Enable encryption** (Habilitar criptografia) para criptografar o arquivo de backup. Deixe a caixa de seleção desmarcada (o padrão) para deixar o arquivo de backup não criptografado.

        Se você escolheu **Enable encryption** (Habilitar criptografia), escolha uma chave de criptografia para **AWS KMS key**. Para obter mais informações sobre as chaves de criptografia, consulte [Getting started](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html) (Conceitos básicos) no *Guia do desenvolvedor do AWS Key Management Service*.

1. Escolha **Add option (Adicionar opção)**.

1. Aplique o grupo de opções a uma instância de banco de dados nova ou existente:
   + Para uma nova instância de banco de dados, aplique o grupo de opções ao executar a instância. Para obter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md). 
   + Para uma instância de banco de dados existente, aplique o grupo de opções modificando a instância e anexando o novo grupo de opções. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md). 

### CLI
<a name="Add.Native.Backup.Restore.CLI"></a>

Este procedimento faz as seguintes pressuposições:
+ Você está adicionando a opção SQLSERVER\$1BACKUP\$1RESTORE a um grupo de opções que já existe. Para mais informações sobre a adição de opções, consulte [Adicionar uma opção a um grupo de opções](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption).
+ Você está associando a opção a uma função do IAM que já existe e tem acesso a um bucket do S3 para armazenar os backups.
+ Você está aplicando o grupo de opções a uma instância de banco de dados que já existe. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md). 

**Como adicionar a opção de backup e restauração nativos**

1. Adicione a opção `SQLSERVER_BACKUP_RESTORE` ao grupo de opções.  
**Example**  

   Para Linux, macOS ou Unix:

   ```
   aws rds add-option-to-option-group \
   	--apply-immediately \
   	--option-group-name mybackupgroup \
   	--options "OptionName=SQLSERVER_BACKUP_RESTORE, \
   	  OptionSettings=[{Name=IAM_ROLE_ARN,Value=arn:aws:iam::account-id:role/role-name}]"
   ```

   Para Windows:

   ```
   aws rds add-option-to-option-group ^
   	--option-group-name mybackupgroup ^
   	--options "[{\"OptionName\": \"SQLSERVER_BACKUP_RESTORE\", ^
   	\"OptionSettings\": [{\"Name\": \"IAM_ROLE_ARN\", ^
   	\"Value\": \"arn:aws:iam::account-id:role/role-name"}]}]" ^
   	--apply-immediately
   ```
**nota**  
Ao usar o prompt de comando do Windows, você deve fazer o escape das aspas duplas (") no código JSON, prefixando-as com uma barra invertida (\$1).

1. Aplique o grupo de opções à instância de banco de dados.  
**Example**  

   Para Linux, macOS ou Unix:

   ```
   aws rds modify-db-instance \
   	--db-instance-identifier mydbinstance \
   	--option-group-name mybackupgroup \
   	--apply-immediately
   ```

   Para Windows:

   ```
   aws rds modify-db-instance ^
   	--db-instance-identifier mydbinstance ^
   	--option-group-name mybackupgroup ^
   	--apply-immediately
   ```

## Modificar as configurações de opções de backup e restauração nativos
<a name="Appendix.SQLServer.Options.BackupRestore.ModifySettings"></a>

Após ativar a opção de backup e restauração nativos, você poderá modificar as configurações dela. Para mais informações sobre como modificar as configurações da opção, consulte [Modificar uma configuração de opção](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption).

## Remover a opção de backup e restauração nativos
<a name="Appendix.SQLServer.Options.BackupRestore.Remove"></a>

Você pode desativar o backup e a restauração nativos, removendo a opção da instância de banco de dados. Após remover a opção de backup e restauração nativos, você não precisará reiniciar a instância de banco de dados. 

Para remover a opção de backup e restauração nativos de uma instância de banco de dados, siga um destes procedimentos: 
+ Remova a opção do grupo de opções ao qual ela pertence. Essa alteração afeta todas as instâncias de bancos de dados que usam o grupo de opções. Para obter mais informações, consulte [Remover uma opção de um grupo de opções](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption). 
+ Modifique a instância do banco de dados e especifique um grupo de opções diferente que não inclua a opção de backup e restauração nativos. Essa alteração afeta uma única instância de banco de dados. Você pode especificar um grupo de opções padrão (vazio) ou criar um grupo de opções personalizado diferente. Para ter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md). 

# Suporte para criptografia de dados transparente no SQL Server
<a name="Appendix.SQLServer.Options.TDE"></a>

O Amazon RDS suporta o uso de Criptografia de Dados Transparente (TDE) para criptografar dados armazenados em suas instâncias de banco de dados executando o Microsoft SQL Server. O TDE criptografa os dados automaticamente antes de gravá-los no armazenamento e os descriptografa automaticamente quando os são lidos. 

O Amazon RDS oferece suporte a TDE para as seguintes versões e edições do SQL Server:
+ SQL Server 2022 Standard e Enterprise Editions
+ SQL Server 2019 Standard e Enterprise Edition
+ SQL Server 2017 Enterprise Edition
+ SQL Server 2016 Enterprise Edition

**nota**  
O RDS para SQL Server não aceita o TDE para bancos de dados somente leitura.

A criptografia de dados transparente para o SQL Server permite o gerenciamento de chaves de criptografia usando uma arquitetura de chave de duas camadas. Um certificado, que é gerado a partir da chave mestre do banco de dados, é usado para proteger as chaves de criptografia de dados. A chave de criptografia do banco de dados executa a criptografia e a decodificação reais dos dados no banco de dados do usuário. O Amazon RDS faz backup e gerencia a chave primária do banco de dados e o certificado TDE.

A criptografia de dados transparente é usada em cenários em que você precisa criptografar dados confidenciais. Por exemplo, você pode querer fornecer arquivos de dados e backups a terceiros ou abordar problemas de conformidade regulatórios relacionados à segurança. Não é possível criptografar os bancos de dados do sistema para o SQL Server, como os bancos de dados `model` ou `master`.

Uma discussão detalhada sobre a Transparent Data Encryption não está no escopo deste guia, mas você deve entender os pontos fortes e fracos de segurança de cada algoritmo e chave de criptografia. Para obter informações sobre a criptografia de dados transparente para o SQL Server, consulte o tópico sobre a [Transparent Data Encryption (TDE)](http://msdn.microsoft.com/en-us/library/bb934049.aspx) no site da Microsoft.

**Topics**
+ [Ativar o TDE para o RDS para SQL Server](#TDE.Enabling)
+ [Criptografar dados no RDS para SQL Server](TDE.Encrypting.md)
+ [Fazer backup e restaurar certificados TDE no RDS para SQL Server](TDE.BackupRestoreRDS.md)
+ [Fazer backup e restaurar certificados TDE para bancos de dados on-premises](TDE.BackupRestoreOnPrem.md)
+ [Desativar o TDE para o RDS para SQL Server](TDE.Disabling.md)

## Ativar o TDE para o RDS para SQL Server
<a name="TDE.Enabling"></a>

Para ativar a Transparent Data Encryption para uma instância de banco de dados do RDS para SQL Server, especifique a opção TDE em um grupo de opções do RDS associado a essa instância de banco de dados.

1. Determine se a instância de banco de dados já está associada a um grupo de opções que tenha a opção TDE. Para visualizar o grupo de opções ao qual uma instância de banco de dados está associada, use o console do RDS, o comando [describe-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) da AWS CLI ou a operação [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html) da API.

1.  Se a instância de banco de dados não estiver associada a um grupo de opções que tenha o TDE ativado, você terá duas opções. Você pode criar um grupo de opções e adicionar a opção TDE ou pode modificar o grupo de opções associado para adicioná-lo.
**nota**  
No console do RDS, a opção é chamada `TRANSPARENT_DATA_ENCRYPTION`. Na AWS CLI e na API do RDS, ele é chamado `TDE`.

   Para obter informações sobre como criar ou modificar um grupo de opções, consulte [Trabalhar com grupos de opções](USER_WorkingWithOptionGroups.md). Para obter informações sobre como adicionar uma opção a um grupo de opções, consulte [Adicionar uma opção a um grupo de opções](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption).

1.  Associe a instância de banco de dados ao grupo de opções com a opção TDE. Para obter informações sobre como associar uma instância de banco de dados a um grupo de opções, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).

### Considerações de grupos de opções
<a name="TDE.Options"></a>

A opção TDE é uma opção persistente. Não é possível removê-lo de um grupo de opções, a menos que todas as instâncias e backups de banco de dados não estejam mais associados ao grupo de opções. Quando você adiciona a opção TDE a um grupo de opções, o grupo de opções só pode ser associado a instâncias de banco de dados que usam TDE. Para mais informações sobre opções persistentes em um grupo de opções, consulte [Visão geral de grupos de opções](USER_WorkingWithOptionGroups.md#Overview.OptionGroups). 

Como a opção TDE é uma opção persistente, você pode ter um conflito entre o grupo de opções e uma instância de banco de dados associada. Pode haver um conflito nas seguintes situações:
+ O grupo de opções atual tem a opção TDE, e você o substitui por um grupo de opções sem a opção TDE.
+ Faça uma restauração a partir de um snapshot de banco de dados para uma nova instância de banco de dados sem um grupo de opções que contenha a opção TDE. Para ter mais informações sobre esse cenário, consulte [Considerações sobre grupos de opções](USER_CopySnapshot.md#USER_CopySnapshot.Options). 

### Considerações de performance do SQL Server
<a name="TDE.Perf"></a>

O uso da Transparent Data Encryption pode afetar a performance de uma instância de banco de dados do SQL Server.

O performance de bancos de dados descriptografados também pode ser degradado se os bancos de dados estiverem em uma instância de banco de dados que tenha pelo menos um banco de dados criptografado. Como resultado, recomendamos que você mantenha bancos de dados criptografados e descriptografados em instâncias de banco de dados separadas.

# Criptografar dados no RDS para SQL Server
<a name="TDE.Encrypting"></a>

Quando a opção TDE é adicionada a um grupo de opções, o Amazon RDS gera um certificado que é usado no processo de criptografia. Você pode então usar o certificado para executar instruções de SQL que criptografam dados em um banco de dados na instância do banco de dados.

O exemplo a seguir usa o certificado criado pelo RDS chamado `RDSTDECertificateName` para criptografar um banco de dados chamado `myDatabase`.

```
 1. ---------- Turning on TDE -------------
 2. 
 3. -- Find an RDS TDE certificate to use
 4. USE [master]
 5. GO
 6. SELECT name FROM sys.certificates WHERE name LIKE 'RDSTDECertificate%'
 7. GO
 8. 
 9. USE [myDatabase]
10. GO
11. -- Create a database encryption key (DEK) using one of the certificates from the previous step
12. CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256
13. ENCRYPTION BY SERVER CERTIFICATE [RDSTDECertificateName]
14. GO
15. 
16. -- Turn on encryption for the database
17. ALTER DATABASE [myDatabase] SET ENCRYPTION ON
18. GO
19. 
20. -- Verify that the database is encrypted
21. USE [master]
22. GO
23. SELECT name FROM sys.databases WHERE is_encrypted = 1
24. GO
25. SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys
26. GO
```

O tempo necessário para criptografar um banco de dados do SQL Server usando o TDE depende de vários fatores. Eles incluem o tamanho da instância de banco de dados, se a instância usa o armazenamento de IOPS provisionadas, o volume de dados e outros fatores.

# Fazer backup e restaurar certificados TDE no RDS para SQL Server
<a name="TDE.BackupRestoreRDS"></a>

O RDS para SQL Server fornece procedimentos armazenados para backup, restauração e eliminação de certificados TDE. O RDS para SQL Server também fornece uma função para visualizar certificados TDE de usuário restaurados.

Os certificados TDE do usuário são usados para restaurar bancos de dados para o RDS para SQL Server que estão on-premises e têm o TDE ativado. Esses certificados têm o prefixo `UserTDECertificate_`. Depois de restaurar bancos de dados e antes de disponibilizá-los para uso, o RDS modifica os bancos de dados que têm o TDE ativado para usar certificados TDE gerados pelo RDS. Esses certificados têm o prefixo `RDSTDECertificate`.

Certificados TDE do usuário permanecem na instância de banco de dados do RDS para SQL Server, a menos que você os descarte usando os procedimentos armazenados `rds_drop_tde_certificate`. Para ter mais informações, consulte [Descartar certificados TDE restaurados](#TDE.BackupRestoreRDS.Drop).

Você pode usar um certificado TDE de usuário para restaurar outros bancos de dados da instância de banco de dados de origem. Os bancos de dados a serem restaurados devem usar o mesmo certificado TDE e ter o TDE ativado. Você não precisa importar (restaurar) o mesmo certificado novamente. 

**Topics**
+ [Pré-requisitos](#TDE.BackupRestoreRDS.Prereqs)
+ [Limitações](#TDE.Limitations)
+ [Fazer backup de um certificado TDE](#TDE.BackupRestoreRDS.Backup)
+ [Restaurar um certificado TDE](#TDE.BackupRestoreRDS.Restore)
+ [Visualizar certificados TDE restaurados](#TDE.BackupRestoreRDS.Show)
+ [Descartar certificados TDE restaurados](#TDE.BackupRestoreRDS.Drop)

## Pré-requisitos
<a name="TDE.BackupRestoreRDS.Prereqs"></a>

Para fazer backup ou restaurar certificados TDE no RDS para SQL Server, realize as tarefas a seguir. As três primeiras são descritos em [Configurar o backup e a restauração nativos](SQLServer.Procedural.Importing.Native.Enabling.md).

1. Crie buckets de uso geral ou buckets de diretório do Amazon S3 para armazenar arquivos para backup e restauração.

   Recomendamos que você use buckets separados para backups de banco de dados e backups de certificados TDE.

1. Crie um perfil do IAM para fazer backup e restaurar arquivos.

   O perfil do IAM deve ser um usuário e um administrador da AWS KMS key.

   Ao usar buckets de diretório, nenhuma permissão adicional é necessária além das permissões exigidas para [Criar manualmente uma função do IAM para backup e restauração nativos](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM) com buckets de diretório.

   Quando se usam recursos do S3, o perfil do IAM também exige as seguintes permissões, além daquelas exigidas para [Criar manualmente uma função do IAM para backup e restauração nativos](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM):
   + `s3:GetBucketAcl`, `s3:GetBucketLocation` e `s3:ListBucket` no recurso de bucket do S3

1. Adicionar a opção `SQLSERVER_BACKUP_RESTORE` a um grupo de opções em sua instância de banco de dados.

   Além da opção `TRANSPARENT_DATA_ENCRYPTION` (`TDE`).

1. Verifique se você tem uma chave do KMS de criptografia simétrica. Você tem as seguintes opções:
   + Se você tiver uma chave do KMS em sua conta, poderá usá-la. Nenhuma outra ação é necessária.
   + Se você não tiver uma chave do KMS de criptografia simétrica em sua conta, crie uma seguindo as instruções em [Criar chaves](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk), no *Guia do desenvolvedor do AWS Key Management Service*.

1. Habilite a integração com o Amazon S3 para transferir arquivos entre a instância de banco de dados e o Amazon S3.

   Para ter informações sobre a integração com o Amazon S3, consulte [Integrar uma instância de banco de dados do Amazon RDS for SQL Server ao Amazon S3](User.SQLServer.Options.S3-integration.md).

   Observe que os buckets de diretório não permitem a integração do S3. Essa etapa é necessária somente para [Fazer backup e restaurar certificados TDE para bancos de dados on-premises](TDE.BackupRestoreOnPrem.md).

## Limitações
<a name="TDE.Limitations"></a>

O uso de procedimentos armazenados para fazer backup e restaurar certificados TDE tem as seguintes limitações:
+ As duas opções `SQLSERVER_BACKUP_RESTORE` e `TRANSPARENT_DATA_ENCRYPTION` (`TDE`) devem ser adicionadas ao grupo de opções associado à sua instância de banco de dados.
+ O backup e a restauração de certificados TDE não são compatíveis com instâncias de banco de dados multi-AZ.
+ O cancelamento de tarefas de backup e restauração de certificados TDE não é compatível.
+ Não é possível usar um certificado TDE de usuário para criptografia TDE de nenhum outro banco de dados em sua instância de banco de dados do RDS para SQL Server. Você pode usá-lo para restaurar somente outros bancos de dados da instância de banco de dados de origem que tem o TDE ativado e que usam o mesmo certificado TDE.
+ Você pode descartar apenas certificados TDE do usuário.
+ O número máximo de certificados TDE do usuário compatível com o RDS é dez. Se o número exceder dez, descarte os certificados TDE não utilizados e tente novamente.
+ O nome do certificado não pode estar em branco nem ser nulo.
+ Ao restaurar um certificado, o nome dele não pode incluir a palavra-chave `RDSTDECERTIFICATE` e deve iniciar com o prefixo `UserTDECertificate_`.
+ O parâmetro `@certificate_name` pode incluir apenas os seguintes caracteres: a-z, 0-9, @, \$1, \$1 e sublinhado (\$1).
+ A extensão do arquivo `@certificate_file_s3_arn` deve ser .cer (não diferencia maiúsculas de minúsculas).
+ A extensão do arquivo para `@private_key_file_s3_arn` deve ser .pvk (não diferencia maiúsculas de minúsculas).
+ Os metadados do S3 do arquivo de chave privada devem incluir a tag `x-amz-meta-rds-tde-pwd`. Para obter mais informações, consulte [Fazer backup e restaurar certificados TDE para bancos de dados on-premises](TDE.BackupRestoreOnPrem.md).
+ O RDS para SQL Server não aceita o uso de chaves entre contas para o TDE.

## Fazer backup de um certificado TDE
<a name="TDE.BackupRestoreRDS.Backup"></a>

Para fazer backup de certificados TDE, use o procedimento armazenado `rds_backup_tde_certificate`. Ele tem a sintaxe a seguir.

```
EXECUTE msdb.dbo.rds_backup_tde_certificate
    @certificate_name='UserTDECertificate_certificate_name | RDSTDECertificatetimestamp',
    @certificate_file_s3_arn='arn:aws:s3:::bucket_name/certificate_file_name.cer',
    @private_key_file_s3_arn='arn:aws:s3:::bucket_name/key_file_name.pvk',
    @kms_password_key_arn='arn:aws:kms:region:account-id:key/key-id',
    [@overwrite_s3_files=0|1];
```

Os seguintes parâmetros são obrigatórios:
+ `@certificate_name`: o nome do certificado TDE do qual fazer backup.
+ `@certificate_file_s3_arn`: o nome do recurso da Amazon (ARN) de destino do arquivo de backup do certificado no Amazon S3.
+ `@private_key_file_s3_arn`: o ARN do S3 de destino do arquivo de chave privada que protege o certificado TDE.
+ `@kms_password_key_arn`: o ARN da chave do KMS simétrica usada para criptografar a senha da chave privada.

O parâmetro a seguir é opcional:
+ `@overwrite_s3_files`: indica se os arquivos de chave privada e certificados existentes devem ser substituídos no S3:
  + `0`: não substitui os arquivos existentes. Esse valor é o padrão.

    Definir `@overwrite_s3_files` como 0 retornará um erro se já existir um arquivo.
  + `1` – substitui um arquivo existente que tenha o nome especificado, ainda que ele não seja um arquivo de backup.

**Example Fazer backup de um certificado TDE**  

```
EXECUTE msdb.dbo.rds_backup_tde_certificate
    @certificate_name='RDSTDECertificate20211115T185333',
    @certificate_file_s3_arn='arn:aws:s3:::TDE_certs/mycertfile.cer',
    @private_key_file_s3_arn='arn:aws:s3:::TDE_certs/mykeyfile.pvk',
    @kms_password_key_arn='arn:aws:kms:us-west-2:123456789012:key/AKIAIOSFODNN7EXAMPLE',
    @overwrite_s3_files=1;
```

## Restaurar um certificado TDE
<a name="TDE.BackupRestoreRDS.Restore"></a>

Use o procedimento armazenado `rds_restore_tde_certificate` para restaurar (importar) certificados TDE do usuário. Ele tem a sintaxe a seguir.

```
EXECUTE msdb.dbo.rds_restore_tde_certificate
    @certificate_name='UserTDECertificate_certificate_name',
    @certificate_file_s3_arn='arn:aws:s3:::bucket_name/certificate_file_name.cer',
    @private_key_file_s3_arn='arn:aws:s3:::bucket_name/key_file_name.pvk',
    @kms_password_key_arn='arn:aws:kms:region:account-id:key/key-id';
```

Os seguintes parâmetros são obrigatórios:
+ `@certificate_name`: o nome do certificado TDE a ser restaurado. O nome deve iniciar com o prefixo `UserTDECertificate_`.
+ `@certificate_file_s3_arn`: o ARN do S3 do arquivo de backup usado para restaurar o certificado TDE.
+ `@private_key_file_s3_arn`: o ARN do S3 do arquivo de backup da chave privada do certificado TDE a ser restaurado.
+ `@kms_password_key_arn`: o ARN da chave do KMS simétrica usada para criptografar a senha da chave privada.

**Example Restaurar um certificado TDE**  

```
EXECUTE msdb.dbo.rds_restore_tde_certificate
    @certificate_name='UserTDECertificate_myTDEcertificate',
    @certificate_file_s3_arn='arn:aws:s3:::TDE_certs/mycertfile.cer',
    @private_key_file_s3_arn='arn:aws:s3:::TDE_certs/mykeyfile.pvk',
    @kms_password_key_arn='arn:aws:kms:us-west-2:123456789012:key/AKIAIOSFODNN7EXAMPLE';
```

## Visualizar certificados TDE restaurados
<a name="TDE.BackupRestoreRDS.Show"></a>

Use a função `rds_fn_list_user_tde_certificates` para visualizar certificados TDE do usuário restaurados (importados). Ele tem a sintaxe a seguir.

```
SELECT * FROM msdb.dbo.rds_fn_list_user_tde_certificates();
```

A saída será semelhante à seguinte. Nem todas as colunas são exibidas aqui.


|  |  |  |  |  |  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| name | certificate\$1id | principal\$1id | pvt\$1key\$1encryption\$1type\$1desc | issuer\$1name | cert\$1serial\$1number | thumbprint | subject | start\$1date | expiry\$1date | pvt\$1key\$1last\$1backup\$1date | 
| UserTDECertificate\$1tde\$1cert | 343 | 1 | ENCRYPTED\$1BY\$1MASTER\$1KEY | AnyCompany Shipping | 79 3e 57 a3 69 fd 1d 9e 47 2c 32 67 1d 9c ca af | 0x6BB218B34110388680B FE1BA2D86C695096485B5 | AnyCompany Shipping | 2022-04-05 19:49:45.0000000 | 2023-04-05 19:49:45.0000000 | NULL | 

## Descartar certificados TDE restaurados
<a name="TDE.BackupRestoreRDS.Drop"></a>

Para descartar certificados TDE do usuário restaurados (importados) que você não está usando, utilize o procedimento armazenado `rds_drop_tde_certificate`. Ele tem a sintaxe a seguir.

```
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_certificate_name';
```

O seguinte parâmetro é obrigatório:
+ `@certificate_name`: o nome do certificado TDE a ser descartado.

Você só pode descartar certificados TDE restaurados (importados). Você não pode descartar certificados criados pelo RDS.

**Example Descartar um certificado TDE**  

```
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_myTDEcertificate';
```

# Fazer backup e restaurar certificados TDE para bancos de dados on-premises
<a name="TDE.BackupRestoreOnPrem"></a>

Você pode fazer backup de certificados TDE para bancos de dados on-premises e depois restaurá-los para o RDS para SQL Server. Você também pode restaurar um certificado TDE do RDS para SQL Server para uma instância de banco de dados on-premises.

**nota**  
O RDS para SQL Server não aceita o uso de chaves entre contas para o TDE.

O procedimento a seguir faz backup de um certificado TDE e uma chave privada. A chave privada é criptografada usando uma chave de dados gerada a partir de sua chave do KMS de criptografia simétrica.

**Para fazer backup de um certificado TDE on-premises**

1. Gere a chave de dados usando o comando [generate-data-key](https://docs.aws.amazon.com/cli/latest/reference/kms/generate-data-key.html) da AWS CLI.

   ```
   aws kms generate-data-key \
       --key-id my_KMS_key_ID \
       --key-spec AES_256
   ```

   A saída será semelhante à seguinte.

   ```
   {
   "CiphertextBlob": "AQIDAHimL2NEoAlOY6Bn7LJfnxi/OZe9kTQo/XQXduug1rmerwGiL7g5ux4av9GfZLxYTDATAAAAfjB8BgkqhkiG9w0B
   BwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMyCxLMi7GRZgKqD65AgEQgDtjvZLJo2cQ31Vetngzm2ybHDc3d2vI74SRUzZ
   2RezQy3sAS6ZHrCjfnfn0c65bFdhsXxjSMnudIY7AKw==",
   "Plaintext": "U/fpGtmzGCYBi8A2+0/9qcRQRK2zmG/aOn939ZnKi/0=",
   "KeyId": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-00ee-99ff-88dd-aa11bb22cc33"
   }
   ```

   Use a saída de texto simples na próxima etapa como a senha da chave privada.

1. Faça backup do seu certificado TDE, conforme mostrado no exemplo a seguir.

   ```
   BACKUP CERTIFICATE myOnPremTDEcertificate TO FILE = 'D:\tde-cert-backup.cer'
   WITH PRIVATE KEY (
   FILE = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\cert-backup-key.pvk',
   ENCRYPTION BY PASSWORD = 'U/fpGtmzGCYBi8A2+0/9qcRQRK2zmG/aOn939ZnKi/0=');
   ```

1. Salve o arquivo de backup do certificado no bucket de certificados do Amazon S3.

1. Salve o arquivo de backup de chave privada no bucket de certificados do S3, com a seguinte tag nos metadados do arquivo:
   + Chave: `x-amz-meta-rds-tde-pwd`
   + Valor: o valor `CiphertextBlob` da geração da chave de dados, como no exemplo a seguir.

     ```
     AQIDAHimL2NEoAlOY6Bn7LJfnxi/OZe9kTQo/XQXduug1rmerwGiL7g5ux4av9GfZLxYTDATAAAAfjB8BgkqhkiG9w0B
     BwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMyCxLMi7GRZgKqD65AgEQgDtjvZLJo2cQ31Vetngzm2ybHDc3d2vI74SRUzZ
     2RezQy3sAS6ZHrCjfnfn0c65bFdhsXxjSMnudIY7AKw==
     ```

O procedimento a seguir restaura um certificado TDE do RDS para SQL Server para uma instância de banco de dados on-premises. Copie e restaure o certificado TDE na instância de banco de dados de destino usando o backup de certificado, o arquivo de chave privada correspondente e a chave de dados. O certificado restaurado é criptografado pela chave mestra do banco de dados do novo servidor. 

**Como restaurar um certificado TDE**

1. Copie o arquivo de backup do certificado TDE e o arquivo de chave privada do Amazon S3 para a instância de destino. Para ter mais informações sobre como copiar arquivos do Amazon S3, consulte [Transferência de arquivos entre o RDS for SQL Server e o Amazon S3](Appendix.SQLServer.Options.S3-integration.using.md).

1. Use sua chave do KMS para descriptografar o texto de criptografia de saída para recuperar o texto simples da chave de dados. O texto de criptografia está localizado nos metadados do S3 do arquivo de backup de chave privada.

   ```
   aws kms decrypt \
       --key-id my_KMS_key_ID \
       --ciphertext-blob fileb://exampleCiphertextFile | base64 -d \
       --output text \
       --query Plaintext
   ```

   Use a saída de texto simples na próxima etapa como a senha da chave privada.

1. Use o comando SQL a seguir para restaurar seu certificado TDE.

   ```
   CREATE CERTIFICATE myOnPremTDEcertificate FROM FILE='D:\tde-cert-backup.cer'
   WITH PRIVATE KEY (FILE = N'D:\tde-cert-key.pvk',
   DECRYPTION BY PASSWORD = 'plain_text_output');
   ```

Para ter mais informações sobre descriptografia do KMS, consulte [descriptografar](https://docs.aws.amazon.com/cli/latest/reference/kms/decrypt.html) na seção do KMS da *Referência de comando AWS CLI*.

Depois que o certificado TDE for restaurado na instância de banco de dados de destino, você poderá restaurar bancos de dados criptografados com esse certificado.

**nota**  
Você pode usar o mesmo certificado TDE para criptografar vários bancos de dados do SQL Server na instância de banco de dados de origem. Para migrar vários bancos de dados para uma instância de destino, copie o certificado TDE associado a eles na instância de destino apenas uma vez.

# Desativar o TDE para o RDS para SQL Server
<a name="TDE.Disabling"></a>

Para desativar o TDE em uma instância de banco de dados do RDS para SQL Server, primeiro, verifique se não há objetos criptografados na instância de banco de dados. Para fazer isso, descriptografe os objetos ou descarte-os. Se houver algum objeto criptografado na instância de banco de dados, você não poderá desativar o TDE para a instância de banco de dados. Se um certificado de TDE de usuário para criptografia tiver sido restaurado (importado), ele deverá ser descartado. Ao usar o console para remover a opção TDE de um grupo de opções, o console indica que ele está processando. Além disso, um evento de erro será criado se o grupo de opções estiver associado a uma instância de banco de dados criptografada ou a um DB snapshot.

O exemplo a seguir remove a criptografia de TDE de um banco de dados chamado `customerDatabase`. 

```
 1. ------------- Removing TDE ----------------
 2. 
 3. USE [customerDatabase]
 4. GO
 5. 
 6. -- Turn off encryption of the database
 7. ALTER DATABASE [customerDatabase]
 8. SET ENCRYPTION OFF
 9. GO
10. 
11. -- Wait until the encryption state of the database becomes 1. The state is 5 (Decryption in progress) for a while
12. SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys
13. GO
14. 
15. -- Drop the DEK used for encryption
16. DROP DATABASE ENCRYPTION KEY
17. GO
18. 
19. -- Drop a user TDE certificate if it was restored (imported)
20. EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_certificate_name';
21. 
22. -- Alter to SIMPLE Recovery mode so that your encrypted log gets truncated
23. USE [master]
24. GO
25. ALTER DATABASE [customerDatabase] SET RECOVERY SIMPLE
26. GO
```

Quando todos os objetos forem descriptografados, você terá duas opções:

1. Você poderá modificar a instância de banco de dados para ser associada a um grupo de opções sem a opção TDE.

1. Você pode remover a opção TDE do grupo de opções.

# Auditoria do SQL Server
<a name="Appendix.SQLServer.Options.Audit"></a>

No Amazon RDS, você pode auditar bancos de dados do Microsoft SQL Server usando o mecanismo de auditoria interno do SQL Server. É possível criar auditorias e especificações de auditoria da mesma forma como elas são criadas para servidores de banco de dados no local. 

O RDS faz upload dos logs de auditoria concluídos no bucket do S3 usando a função do IAM que você fornece. Se você habilitar a retenção, o RDS manterá seus logs de auditoria na sua instância de banco de dados durante o período de tempo configurado.

Para obter mais informações, consulte [Auditoria do SQL Server (Mecanismo de banco de dados)](https://docs.microsoft.com/sql/relational-databases/security/auditing/sql-server-audit-database-engine) na documentação do Microsoft SQL Server.

## Auditoria do SQL Server com o recurso Database Activity Streams
<a name="Appendix.SQLServer.DAS.Audit"></a>

Você pode usar o recurso Database Activity Streams para RDS a fim de integrar eventos de auditoria do SQL Server com ferramentas de monitoramento de atividade de banco de dados da Imperva, McAfee e IBM. Para obter mais informações sobre como realizar auditoria com o recurso Database Activity Streams para o RDS SQL Server, consulte [Auditoria no Microsoft SQL Server](DBActivityStreams.md#DBActivityStreams.Overview.SQLServer-auditing) 

**Topics**
+ [Auditoria do SQL Server com o recurso Database Activity Streams](#Appendix.SQLServer.DAS.Audit)
+ [Suporte para auditoria do SQL Server](#Appendix.SQLServer.Options.Audit.Support)
+ [Adicionar a auditoria do SQL Server às opções de instância de banco de dados](Appendix.SQLServer.Options.Audit.Adding.md)
+ [Usar a auditoria do SQL Server](Appendix.SQLServer.Options.Audit.CreateAuditsAndSpecifications.md)
+ [Visualizar logs de auditoria](Appendix.SQLServer.Options.Audit.AuditRecords.md)
+ [Usar a Auditoria do SQL Server com instâncias Multi-AZ](#Appendix.SQLServer.Options.Audit.Multi-AZ)
+ [Configurar um bucket do S3](Appendix.SQLServer.Options.Audit.S3bucket.md)
+ [Criar manualmente uma função do IAM para a Auditoria do SQL Server](Appendix.SQLServer.Options.Audit.IAM.md)

## Suporte para auditoria do SQL Server
<a name="Appendix.SQLServer.Options.Audit.Support"></a>

No Amazon RDS, a partir do SQL Server 2016, todas as edições do SQL Server comportam auditorias em nível de servidor, e a edição Enterprise também aceita auditorias em nível de banco de dados. Começando com o SQL Server 2016 (13.x) SP1, todas as edições oferecem suporte a auditorias em nível de servidor e em banco de dados. Para obter mais informações, consulte [Auditoria do SQL Server (Mecanismo de banco de dados)](https://docs.microsoft.com/sql/relational-databases/security/auditing/sql-server-audit-database-engine) na documentação do SQL Server.

O RDS oferece suporte para a definição das seguintes configurações de opção para o SQL Server Audit. 


| Configuração da opção | Valores válidos | Descrição | 
| --- | --- | --- | 
| IAM\$1ROLE\$1ARN | Um nome de recurso da Amazon (ARN) válido no formato arn:aws:iam::account-id:role/role-name. | O ARN da função do IAM que concede acesso ao bucket do S3 no qual você deseja armazenar seus logs de auditoria. Para obter mais informações, consulte [Nomes de recurso da Amazon (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-iam) na Referência geral da AWS. | 
| S3\$1BUCKET\$1ARN | Um ARN válido no formato arn:aws:s3:::amzn-s3-demo-bucket ou arn:aws:s3:::amzn-s3-demo-bucket/key-prefix | O ARN do bucket do S3 no qual você deseja armazenar seus logs de auditoria. | 
| ENABLE\$1COMPRESSION | true ou false | Controla a compactação de logs de auditoria. Por padrão, a compactação está habilitada (definida como true). | 
| RETENTION\$1TIME | 0 para 840 | O tempo de retenção (em horas) durante o qual os registros de auditoria do SQL Server são mantidos em sua instância do RDS. Por padrão, a retenção está desabilitada. | 

# Adicionar a auditoria do SQL Server às opções de instância de banco de dados
<a name="Appendix.SQLServer.Options.Audit.Adding"></a>

Habilitar a Auditoria do SQL Server requer duas etapas: habilitar a opção na instância de banco de dados e habilitar o recurso no SQL Server. O processo para adicionar a opção de Auditoria do SQL Server a uma instância de banco de dados é o seguinte: 

1. Crie um novo grupo de opções, ou copie ou modifique um existente. 

1. Adicione e configure todas as opções necessárias.

1. Associe o grupo de opções à instância de banco de dados.

Depois de adicionar a opção de Auditoria do SQL Server, você não precisará reiniciar sua instância de banco de dados. Assim que o grupo de opções estiver ativo, você poderá criar auditorias e armazenar logs de auditoria no seu bucket do S3. 

**Para adicionar e configurar a Auditoria do SQL Server em um grupo de opções da instância de banco de dados**

1. Escolha uma das seguintes opções:
   + Use um grupo de opções existente.
   + Crie um grupo de opções de banco de dados personalizado e use esse grupo de opções. Para obter mais informações, consulte [Criar um grupo de opções](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create). 

1. Adicione a opção **SQLSERVER\$1AUDIT** ao grupo de opções e defina as configurações da opção. Para mais informações sobre a adição de opções, consulte [Adicionar uma opção a um grupo de opções](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption). 
   + Em **IAM role (Função do IAM)**, se você já tiver uma função do IAM com as políticas necessárias, poderá escolher essa função. Para criar uma nova função do IAM, escolha **Create a New Role (Criar uma nova função)**. Para obter informações sobre as políticas necessárias, consulte [Criar manualmente uma função do IAM para a Auditoria do SQL Server](Appendix.SQLServer.Options.Audit.IAM.md).
   + Em **Select S3 destination (Selecionar destino do S3)**, se você já tiver um bucket do S3 que deseja usar, escolha-o. Para criar um bucket do S3, escolha **Create a New S3 Bucket (Criar um bucket do S3)**. 
   + Em **Enable Compression (Habilitar compactação)**, deixe essa opção marcada para compactar arquivos de auditoria. A compactação está habilitada por padrão. Para desabilitar a compactação, desmarque **Enable Compression (Habilitar compactação)**. 
   + Em **Audit log retention (Retenção do log de auditoria)**, para manter registros de auditoria na instância de banco de dados, escolha essa opção. Especifique um tempo de retenção em horas. O tempo máximo de retenção é de 35 dias.

1. Aplique o grupo de opções a uma instância de banco de dados nova ou existente. Escolha uma das seguintes opções:
   + Se você estiver criando uma nova instância de banco de dados, aplique o grupo de opções ao executar a instância. 
   + Em uma instância de banco de dados existente, aplique o grupo de opções modificando a instância e anexando o novo grupo de opções. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md). 

## Modificar a opção de auditoria do SQL Server
<a name="Appendix.SQLServer.Options.Audit.Modifying"></a>

Depois de habilitar a opção de Auditoria do SQL Server, você poderá modificar as configurações. Para obter informações sobre como modificar as configurações da opção, consulte [Modificar uma configuração de opção](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption).

## Remover a Auditoria do SQL Server das opções de instância de banco de dados
<a name="Appendix.SQLServer.Options.Audit.Removing"></a>

Você pode desativar o recurso de Auditoria do SQL Server desabilitando auditorias e, em seguida, excluindo a opção. 

**Para remover a auditoria**

1. Desabilite todas as configurações de auditoria no SQL Server. Para saber onde as auditorias estão sendo executadas, consulte as visualizações do catálogo de segurança do SQL Server. Para obter mais informações, consulte [Visualizações do catálogo de segurança](https://docs.microsoft.com/sql/relational-databases/system-catalog-views/security-catalog-views-transact-sql) na documentação do Microsoft SQL Server. 

1. Exclua a opção de Auditoria do SQL Server da instância de banco de dados. Escolha uma das seguintes opções: 
   + Exclua a opção de Auditoria do SQL Server do grupo de opções usado pela instância de banco de dados. Essa alteração afeta todas as instâncias de bancos de dados que usam o mesmo grupo de opções. Para obter mais informações, consulte [Remover uma opção de um grupo de opções](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption).
   + Modifique a instância de banco de dados e escolha um grupo de opções sem a opção de Auditoria do SQL Server. Essa alteração afeta somente a instância de banco de dados que você modifica. Você pode especificar um grupo de opções padrão (vazio) ou criar um grupo de opções personalizado diferente. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).

1. Após a exclusão da opção de Auditoria do SQL Server da instância de banco de dados, não é necessário reiniciar a instância. Remova arquivos de auditoria desnecessários do seu bucket do S3.

# Usar a auditoria do SQL Server
<a name="Appendix.SQLServer.Options.Audit.CreateAuditsAndSpecifications"></a>

Você pode controlar auditorias de servidor, especificações de auditorias de servidor e especificações de auditoria de banco de dados da mesma maneira que você as controla para servidores de banco de dados no local.

## Criar auditorias
<a name="Appendix.SQLServer.Options.Audit.CreateAudits"></a>

Você cria auditorias de servidor da mesma maneira que as cria para servidores de banco de dados no local. Para obter informações sobre como criar auditorias de servidor, consulte [CRIAR AUDITORIA DE SERVIDOR](https://docs.microsoft.com/sql/t-sql/statements/create-server-audit-transact-sql) na documentação do Microsoft SQL Server.

Para evitar erros, siga as seguintes limitações:
+ Não exceda o número máximo de auditorias de servidor com suporte por instância de 50. 
+ Instrua o SQL Server a gravar dados em um arquivo binário.
+ Não use `RDS_` como um prefixo no nome de auditoria do servidor.
+ Para `FILEPATH`, especifique `D:\rdsdbdata\SQLAudit`.
+ Para `MAXSIZE`, especifique um tamanho entre 2 MB e 50 MB.
+ Não configure `MAX_ROLLOVER_FILES` ou `MAX_FILES`.
+ Não configure o SQL Server para encerrar a instância de banco de dados se ele não conseguir gravar o registro de auditoria.

## Criar especificações de auditoria
<a name="Appendix.SQLServer.Options.Audit.CreateSpecifications"></a>

Você cria especificações de auditoria de servidor e especificações de auditoria de banco de dados da mesma maneira que as cria para servidores de banco de dados no local. Para obter informações sobre como criar especificações de auditoria, consulte [CRIAR ESPECIFICAÇÃO DE AUDITORIA DE SERVIDOR](https://docs.microsoft.com/sql/t-sql/statements/create-server-audit-specification-transact-sql) e [CRIAR ESPECIFICAÇÃO DE AUDITORIA DE BANCO DE DADOS](https://docs.microsoft.com/sql/t-sql/statements/create-database-audit-specification-transact-sql) na documentação do Microsoft SQL Server.

Para evitar erros, não use `RDS_` como um prefixo no nome da especificação de auditoria de banco de dados ou da especificação de auditoria de servidor. 

# Visualizar logs de auditoria
<a name="Appendix.SQLServer.Options.Audit.AuditRecords"></a>

Seus logs de auditoria são armazenados em `D:\rdsdbdata\SQLAudit`.

Depois que o SQL Server terminar de gravar em um arquivo de log de auditoria—quando o arquivo atingir seu limite de tamanho—o Amazon RDS o carregará no seu bucket S3. Se a retenção estiver habilitada, o Amazon RDS moverá o arquivo para a pasta de retenção: `D:\rdsdbdata\SQLAudit\transmitted`. 

Para obter informações sobre como configurar a retenção, consulte [Adicionar a auditoria do SQL Server às opções de instância de banco de dados](Appendix.SQLServer.Options.Audit.Adding.md).

Registros de auditoria são mantidos na instância de banco de dados até que o arquivo de log de auditoria seja carregado. Você pode visualizar os registros de auditoria executando o comando a seguir.

```
SELECT   * 
	FROM     msdb.dbo.rds_fn_get_audit_file
	             ('D:\rdsdbdata\SQLAudit\*.sqlaudit'
	             , default
	             , default )
```

É possível usar o mesmo comando para visualizar registros de auditoria na sua pasta de retenção, alterando o filtro para `D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit`.

```
SELECT   * 
	FROM     msdb.dbo.rds_fn_get_audit_file
	             ('D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit'
	             , default
	             , default )
```

## Usar a Auditoria do SQL Server com instâncias Multi-AZ
<a name="Appendix.SQLServer.Options.Audit.Multi-AZ"></a>

Para instâncias Multi-AZ, o processo de envio de arquivos de log de auditoria ao Amazon S3 é semelhante ao processo para instâncias Single-AZ. No entanto, existem algumas diferenças importantes: 
+ Objetos de especificação de auditoria de banco de dados são replicados para todos os nós.
+ Auditorias de servidor e especificações de auditoria de servidor não são replicadas para nós secundários. Em vez disso, você precisa criá-las ou modificá-las manualmente.

Para capturar auditorias de servidor ou uma especificação de auditoria de servidor de ambos os nós:

1. Crie uma auditoria de servidor ou uma especificação de auditoria de servidor no nó primário.

1. Faça failover para o nó secundário e crie uma auditoria de servidor ou uma especificação de auditoria de servidor com o mesmo nome e o mesmo GUID no nó secundário. Use o parâmetro `AUDIT_GUID` para especificar o GUID.

# Configurar um bucket do S3
<a name="Appendix.SQLServer.Options.Audit.S3bucket"></a>

Os arquivos de log de auditoria são automaticamente carregados da instância de banco de dados no seu bucket do S3. As seguintes restrições se aplicam ao bucket do S3 que você usa como destino para arquivos de auditoria: 
+ Ele deve estar na mesma região da AWS e na mesma conta da AWS que a instância de banco de dados.
+ Ele não deve estar aberto ao público.
+ O proprietário do bucket também deve ser o proprietário da função do IAM.
+ Seu perfil do IAM deve ter permissões para a chave do KMS gerenciada pelo cliente associada à criptografia do lado do servidor do bucket do S3.

A chave de destino usada para armazenar os dados segue este esquema de nomenclatura: `amzn-s3-demo-bucket/key-prefix/instance-name/audit-name/node_file-name.ext` 

**nota**  
Você define o nome do intervalo e os valores do prefixo da chave com a configuração de opção (`S3_BUCKET_ARN`).

O esquema é composto pelos seguintes elementos:
+ ***amzn-s3-demo-bucket***: o nome do bucket do S3.
+ **`key-prefix`** – O prefixo de chave personalizada que você deseja usar para logs de auditoria.
+ **`instance-name`** – O nome da sua instância do Amazon RDS.
+ **`audit-name`** – O nome da auditoria.
+ **`node`** – O identificador do nó que é a origem dos logs de auditoria (`node1` ou `node2`). Há um nó para uma instância Single-AZ e dois nós de replicação para uma instância Multi-AZ. Estes não são nós primários e secundários, porque as funções de primário e secundário mudam ao longo do tempo. Em vez disso, o identificador de nó é um rótulo simples. 
  + **`node1`** – O primeiro nó de replicação (Single-AZ tem apenas um nó).
  + **`node2`** – O segundo nó de replicação (Multi-AZ tem dois nós).
+ **`file-name`** – O nome do arquivo de destino. O nome do arquivo é obtido como está no SQL Server.
+ **`ext`** – A extensão do arquivo (`zip` ou `sqlaudit`):
  + **`zip`** – Se a compactação estiver habilitada (padrão).
  + **`sqlaudit`** – Se a compactação estiver desabilitada.

# Criar manualmente uma função do IAM para a Auditoria do SQL Server
<a name="Appendix.SQLServer.Options.Audit.IAM"></a>

Normalmente, quando você cria uma nova opção, o Console de gerenciamento da AWS cria a função do IAM e a política de confiança do IAM para você. No entanto, é possível criar manualmente uma nova função do IAM para uso com Auditorias do SQL Server, para poder personalizá-la com quaisquer requisitos adicionais que você possa ter. Para fazer isso, você cria uma função do IAM e delega permissões para que o serviço do Amazon RDS possa usar seu bucket do Amazon S3. Ao criar essa função do IAM, você anexa as políticas de confiança e permissões. A política de confiança permite que o Amazon RDS assuma essa função. A política de permissão define as ações que essa função pode realizar. Para obter mais informações, consulte [Criar uma função para delegar permissões a um produto da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) no *Manual do usuário do AWS Identity and Access Management*. 

Você pode usar os exemplos nesta seção para criar as relações de confiança e as políticas de permissões necessárias.

O exemplo a seguir mostra uma relação de confiança para o SQL Server Audit. Ela usa o *principal de serviço* `rds.amazonaws.com` para permitir que o RDS grave no bucket do S3. Um *escopo principal do serviço* é um identificador que é usado para conceder permissões a um serviço. Sempre que você permitir acesso ao `rds.amazonaws.com` dessa forma, está permitindo que o RDS execute uma ação em seu nome. Para obter mais informações sobre principais de serviço, consulte [Elementos da política JSON da AWS: principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html).

**Example relação de confiança para SQL Server Audit**    
****  

```
{
	    "Version":"2012-10-17",		 	 	 
	    "Statement": [
	        {
	            "Effect": "Allow",
	            "Principal": {
	                "Service": "rds.amazonaws.com"
	            },
	            "Action": "sts:AssumeRole"
	        }
	    ]
	}
```

Recomendamos usar as chaves de contexto de condição global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) e [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) em relações baseadas em recursos para limitar as permissões do serviço a um recurso específico. Essa é a maneira mais eficiente de se proteger contra o [problema "confused deputy"](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html).

Você pode usar as duas chaves de contexto de condição global e fazer com que o valor `aws:SourceArn` contenha o ID da conta. Nesses casos, verifique se o valor `aws:SourceAccount` e a conta no `aws:SourceArn` usa o mesmo ID de conta quando eles são usados na mesma instrução.
+ Use `aws:SourceArn` se quiser acesso entre serviços para um único recurso.
+ Use `aws:SourceAccount` se você quiser permitir que qualquer recurso nessa conta seja associado ao uso entre serviços.

Na relação de confiança, certifique-se de usar a chave de contexto de condição global `aws:SourceArn` com o nome do recurso da Amazon (ARN) completo dos recursos que acessam a função. Para o SQL Server Audit, certifique-se de incluir o grupo de opções de banco de dados e as instâncias de banco de dados, conforme mostrado no exemplo a seguir.

**Example relação de confiança com a chave de contexto de condição global para SQL Server Audit**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "rds.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": [
                        "arn:aws:rds:Region:my_account_ID:db:db_instance_identifier",
                        "arn:aws:rds:Region:my_account_ID:og:option_group_name"
                    ]
                }
            }
        }
    ]
}
```

No exemplo a seguir de uma política de permissões para SQL Server Audit, especificamos um ARN para o bucket do Simple Storage Service (Amazon S3). Você pode usar ARNs para identificar uma conta, usuário ou função específica à qual deseja conceder acesso. Para obter mais informações sobre como usar ARNs, consulte [Nomes de recurso da Amazon (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).

**Example política de permissões para SQL Server Audit**    
****  

```
{
	    "Version":"2012-10-17",		 	 	 
	    "Statement": [
	        {
	            "Effect": "Allow",
	            "Action": "s3:ListAllMyBuckets",
	            "Resource": "*"
	        },
	        {
	            "Effect": "Allow",
	            "Action": [
	                "s3:ListBucket",
	                "s3:GetBucketACL",
	                "s3:GetBucketLocation"
	            ],
	            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
	        },
	        {
	            "Effect": "Allow",
	            "Action": [
	                "s3:PutObject",
	                "s3:ListMultipartUploadParts",
	                "s3:AbortMultipartUpload"
	            ],
	            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*"
	        }
	    ]
	}
```

**nota**  
A ação `s3:ListAllMyBuckets` é necessária para verificar se a mesma conta do AWS tem o bucket do S3 e a instância de banco de dados SQL Server. A ação lista os nomes dos buckets na conta.  
Os namespaces do bucket do S3 são globais. Se você excluir acidentalmente seu bucket, outro usuário poderá criar um bucket com o mesmo nome em uma conta diferente. Depois disso, os dados de auditoria do SQL Server são gravados no novo bucket.

# Suporte para o SQL Server Analysis Services no Amazon RDS for SQL Server
<a name="Appendix.SQLServer.Options.SSAS"></a>

O Microsoft SQL Server Analysis Services (SSAS) faz parte do pacote Microsoft Business Intelligence (MSBI). O SSAS é um processamento analítico online (OLAP) e uma ferramenta de mineração de dados que está instalado no SQL Server. Use o SSAS para analisar dados a fim de ajudar a tomar decisões de negócios. O SSAS difere do banco de dados relacional do SQL Server porque é otimizado para consultas e cálculos comuns em um ambiente de business intelligence.

 É possível habilitar o SSAS em instâncias de banco de dados novas ou existentes. Ele é instalado na mesma instância de banco de dados que o mecanismo de banco de dados. Para obter mais informações sobre o SSAS, consulte a [Documentação do Analysis Services](https://docs.microsoft.com/en-us/analysis-services) da Microsoft.

O Amazon RDS oferece suporte às Standard e Enterprise Editions do SSAS for SQL Server nas seguintes versões:
+ Modo tabular:
  + Versão 15.00.4043.16.v1 e posterior do SQL Server 2019
  + Versão 14.00.3223.3.v1 e posterior do SQL Server 2017
  + Versão 13.00.5426.0.v1 e posterior do SQL Server 2016
+ Modo multidimensional:
  + SQL Server 2019, versão 15.00.4153.1.v1 e posterior
  + SQL Server 2017, versão 14.00.3381.3.v1 e posterior
  + SQL Server 2016, versão 13.00.5882.1.v1 e posterior

**Contents**
+ [Limitações](#SSAS.Limitations)
+ [Ativar o SSAS](SSAS.Enabling.md)
  + [Criar um grupo de opções para o SSAS](SSAS.Enabling.md#SSAS.OptionGroup)
  + [Adicionar a opção SSAS ao grupo de opções](SSAS.Enabling.md#SSAS.Add)
  + [Associar o grupo de opções à instância de banco de dados](SSAS.Enabling.md#SSAS.Apply)
  + [Como conceder acesso de entrada ao grupo de segurança da VPC](SSAS.Enabling.md#SSAS.InboundRule)
  + [Habilitar a integração do Simple Storage Service (Simple Storage Service (Amazon S3))](SSAS.Enabling.md#SSAS.EnableS3)
+ [Implantar projetos do SSAS no Amazon RDS](SSAS.Deploy.md)
+ [Monitorar o status de uma tarefa de implantação](SSAS.Monitor.md)
+ [Como usar o SSAS no Amazon RDS](SSAS.Use.md)
  + [Configurar um usuário autenticado pelo Windows para o SSAS](SSAS.Use.md#SSAS.Use.Auth)
  + [Adicionar um usuário de domínio como administrador de banco de dados](SSAS.Use.md#SSAS.Admin)
  + [Criar um proxy do SSAS](SSAS.Use.md#SSAS.Use.Proxy)
  + [Programar o processamento de banco de dados do SSAS usando o SQL Server Agent](SSAS.Use.md#SSAS.Use.Schedule)
  + [Revogar o acesso do SSAS do proxy](SSAS.Use.md#SSAS.Use.Revoke)
+ [Fazer backup de um banco de dados do SSAS](SSAS.Backup.md)
+ [Restaurar um banco de dados do SSAS](SSAS.Restore.md)
  + [Restauração de uma instância de banco de dados para um tempo especificado](SSAS.Restore.md#SSAS.PITR)
+ [Alterar o modo SSAS](SSAS.ChangeMode.md)
+ [Desativar o SSAS](SSAS.Disable.md)
+ [Solução de problemas do SSAS](SSAS.Trouble.md)

## Limitações
<a name="SSAS.Limitations"></a>

As seguintes limitações se aplicam à utilização do SSAS no RDS for SQL Server:
+ O RDS for SQL Server oferece suporte à execução do SSAS no modo Tabular ou Multidimensional. Para obter mais informações, consulte [Comparar soluções tabulares e multidimensionais](https://docs.microsoft.com/en-us/analysis-services/comparing-tabular-and-multidimensional-solutions-ssas) na documentação da Microsoft.
+ É possível usar apenas um modo SSAS de cada vez. Antes de alterar os modos, certifique-se de excluir todos os bancos de dados SSAS.

  Para ter mais informações, consulte [Alterar o modo SSAS](SSAS.ChangeMode.md).
+ As instâncias Multi-AZ não são compatíveis.
+ As instâncias devem usar o Active Directory autogerenciado ou o AWS Directory Service for Microsoft Active Directorypara autenticação SSAS. Para ter mais informações, consulte [Trabalhar com o Active Directory com o RDS para SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).
+ Os usuários não recebem acesso de administrador do servidor do SSAS, mas podem receber acesso de administrador no nível de banco de dados.
+ A única porta compatível para acessar o SSAS é a 2383.
+ Não é possível implantar projetos diretamente. Nós fornecemos um procedimento armazenado do RDS para fazer isso. Para obter mais informações, consulte [Implantar projetos do SSAS no Amazon RDS](SSAS.Deploy.md).
+ O processamento durante a implantação não é compatível.
+ O uso de arquivos .xmla para implantação não é compatível.
+ Os arquivos de entrada de projeto e os arquivos de saída de backup de banco de dados do SSAS podem estar somente na pasta `D:\S3` na instância de banco de dados.

# Ativar o SSAS
<a name="SSAS.Enabling"></a>

Use o seguinte processo para ativar o SSAS para a instância de banco de dados:

1. Crie um grupo de opções ou selecione um existente.

1. Adicione a opção `SSAS` ao grupo de opções.

1. Associe o grupo de opções à instância de banco de dados.

1. Permita acesso de entrada ao grupo de segurança da nuvem privada virtual (VPC) para a porta do ouvinte do SSRS.

1. Ative a integração do Simple Storage Service (Amazon S3).

## Criar um grupo de opções para o SSAS
<a name="SSAS.OptionGroup"></a>

Use o Console de gerenciamento da AWS ou a AWS CLI para criar um grupo de opções que corresponda à versão e ao mecanismo do SQL Server da instância de banco de dados que você planeja usar.

**nota**  
Também é possível usar um grupo de opções existente se ele for para a versão e o mecanismo e corretos do SQL Server.

### Console
<a name="SSAS.OptionGroup.Console"></a>

O procedimento do console a seguir cria um grupo de opções para o SQL Server Standard Edition 2017.

**Como criar o grupo de opções**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Escolha **Create group (Criar grupo)**.

1. No painel **Create option group (Criar grupo de opções)**, faça o seguinte:

   1. Em **Name** (Nome), insira um nome para o grupo de opções que seja exclusivo na sua conta da AWS, como **ssas-se-2017**. O nome pode conter somente letras, números e hifens.

   1. Em **Descrição**, insira uma breve descrição do grupo de opções, como **SSAS option group for SQL Server SE 2017**. A descrição é usada para fins de exibição.

   1. Em **Engine (Mecanismo)**, selecione **sqlserver-se**.

   1. Em **Major engine version (Versão principal do mecanismo)**, selecione **14.00**.

1. Escolha **Criar**.

### CLI
<a name="SSAS.OptionGroup.CLI"></a>

O exemplo de CLI a seguir cria um grupo de opções para o SQL Server Standard Edition 2017.

**Como criar o grupo de opções**
+ Use um dos seguintes comandos.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds create-option-group \
      --option-group-name ssas-se-2017 \
      --engine-name sqlserver-se \
      --major-engine-version 14.00 \
      --option-group-description "SSAS option group for SQL Server SE 2017"
  ```

  Para Windows:

  ```
  aws rds create-option-group ^
      --option-group-name ssas-se-2017 ^
      --engine-name sqlserver-se ^
      --major-engine-version 14.00 ^
      --option-group-description "SSAS option group for SQL Server SE 2017"
  ```

## Adicionar a opção SSAS ao grupo de opções
<a name="SSAS.Add"></a>

Depois, use o Console de gerenciamento da AWS ou a AWS CLI para adicionar a opção `SSAS` ao grupo de opções.

### Console
<a name="SSAS.Add.Console"></a>

**Como adicionar a opção SSAS**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Selecione o grupo de opções que você acabou de criar.

1. Escolha **Add option (Adicionar opção)**.

1. Em **Option details (Detalhes da opção)**, selecione **SSAS** em **Option name (Nome da opção)**.

1. Em **Configurações de opção**, faça o seguinte:

   1. Para **Max memory** (Memória máxima), insira um valor de 10 a 80.

      **Max memory (Memória máxima)** especifica o limite superior acima do qual o SSAS começa a liberar memória de forma mais agressiva para liberar espaço a solicitações que estão em execução e a novas solicitações de alta prioridade. O número é uma porcentagem da memória total da instância de banco de dados. Os valores permitidos são de 10–80 e o padrão é 45.

   1. Para **Mode** (Modo), escolha o modo de servidor SSAS, **Tabular** ou **Multidimensional**.

      Se você não vir a opção de configuração **Mode** (Modo), significa que o modo multidimensional não é compatível com sua região da AWS. Para ter mais informações, consulte [Limitações](Appendix.SQLServer.Options.SSAS.md#SSAS.Limitations).

      **Tabular** é o padrão.

   1. Em **Security groups (Grupos de segurança)**, selecione o grupo de segurança da VPC a ser associado à opção.
**nota**  
A porta para acessar o SSAS, 2383, é preenchida automaticamente.

1. Em **Scheduling (Programação)**, escolha se deseja adicionar a opção imediatamente ou na próxima janela de manutenção.

1. Escolha **Add option (Adicionar opção)**.

### CLI
<a name="SSAS.Add.CLI"></a>

**Como adicionar a opção SSAS**

1. Crie um arquivo JSON, por exemplo `ssas-option.json`, com os seguintes parâmetros:
   + `OptionGroupName` – O nome do grupo de opções que você criou ou selecionou anteriormente (`ssas-se-2017` no exemplo a seguir).
   + `Port` – A porta que você usa para acessar o SSAS. A única porta compatível é a 2383.
   + `VpcSecurityGroupMemberships` – Associações a grupos de segurança da VPC para a instância de banco de dados do RDS.
   + `MAX_MEMORY` – O limite superior acima do qual o SSAS deve começar a liberar memória de forma mais agressiva para liberar espaço a solicitações que estão em execução e a novas solicitações de alta prioridade. O número é uma porcentagem da memória total da instância de banco de dados. Os valores permitidos são de 10–80 e o padrão é 45.
   + `MODE` – O modo de servidor SSAS, `Tabular` ou `Multidimensional`. `Tabular` é o padrão.

     Se você receber um erro dizendo que a opção de configuração `MODE` não é válida, isso significa que o modo multidimensional não é aceito em sua região da AWS. Para ter mais informações, consulte [Limitações](Appendix.SQLServer.Options.SSAS.md#SSAS.Limitations).

   Veja a seguir um exemplo de arquivo JSON com configurações de opção SSAS.

   ```
   {
   "OptionGroupName": "ssas-se-2017",
   "OptionsToInclude": [
   	{
   	"OptionName": "SSAS",
   	"Port": 2383,
   	"VpcSecurityGroupMemberships": ["sg-0abcdef123"],
   	"OptionSettings": [{"Name":"MAX_MEMORY","Value":"60"},{"Name":"MODE","Value":"Multidimensional"}]
   	}],
   "ApplyImmediately": true
   }
   ```

1. Adicione a opção `SSAS` ao grupo de opções.  
**Example**  

   Para Linux, macOS ou Unix:

   ```
   aws rds add-option-to-option-group \
       --cli-input-json file://ssas-option.json \
       --apply-immediately
   ```

   Para Windows:

   ```
   aws rds add-option-to-option-group ^
       --cli-input-json file://ssas-option.json ^
       --apply-immediately
   ```

## Associar o grupo de opções à instância de banco de dados
<a name="SSAS.Apply"></a>

É possível usar o console ou a CLI para associar o grupo de opções à instância de banco de dados.

### Console
<a name="SSAS.Apply.Console"></a>

Associe o grupo de opções a uma instância de banco de dados nova ou existente:
+ Para uma nova instância de banco de dados, associe o grupo de opções à instância de banco de dados ao executar a instância. Para obter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).
+ Para uma instância de banco de dados existente, modifique a instância e associe o novo grupo de opções a ela. Para ter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).
**nota**  
Se você usar uma instância existente, ela já deve ter um domínio do Active Directory e uma função do AWS Identity and Access Management (IAM) associados a ela. Se você criar uma nova instância, especifique um domínio do Active Directory e uma função do IAM existentes. Para ter mais informações, consulte [Trabalhar com o Active Directory com o RDS para SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).

### CLI
<a name="SSAS.Apply.CLI"></a>

É possível associar o grupo de opções a uma instância de banco de dados nova ou existente.

**nota**  
Se você usar uma instância existente, ela já deve ter um domínio do Active Directory e uma função do IAM associados a ela. Se você criar uma nova instância, especifique um domínio do Active Directory e uma função do IAM existentes. Para ter mais informações, consulte [Trabalhar com o Active Directory com o RDS para SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).

**Como criar uma instância de banco de dados que usa o grupo de opções**
+ Especifique o mesmo tipo de mecanismo de banco de dados e a versão principal que você usou ao criar o grupo de opções.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier myssasinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 14.00.3223.3.v1 \
      --allocated-storage 100 \
      --manage-master-user-password \
      --master-username admin \
      --storage-type gp2 \
      --license-model li \
      --domain-iam-role-name my-directory-iam-role \
      --domain my-domain-id \
      --option-group-name ssas-se-2017
  ```

  Para Windows:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier myssasinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 14.00.3223.3.v1 ^
      --allocated-storage 100 ^
      --manage-master-user-password ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --domain-iam-role-name my-directory-iam-role ^
      --domain my-domain-id ^
      --option-group-name ssas-se-2017
  ```

**Como modificar uma instância de banco de dados para associar o grupo de opções**
+ Use um dos seguintes comandos.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier myssasinstance \
      --option-group-name ssas-se-2017 \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier myssasinstance ^
      --option-group-name ssas-se-2017 ^
      --apply-immediately
  ```

## Como conceder acesso de entrada ao grupo de segurança da VPC
<a name="SSAS.InboundRule"></a>

Crie uma regra de entrada para a porta de listener do SSAS especificada no grupo de segurança da VPC associado à instância de banco de dados. Para obter mais informações sobre como configurar um grupo de segurança, consulte [Fornecer acesso à instância de banco de dados na VPC criando um grupo de segurança](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup).

## Habilitar a integração do Simple Storage Service (Simple Storage Service (Amazon S3))
<a name="SSAS.EnableS3"></a>

Para baixar arquivos de configuração de modelo para seu host para implantação, use a integração do Simple Storage Service (Simple Storage Service (Amazon S3)). Para ter mais informações, consulte [Integrar uma instância de banco de dados do Amazon RDS for SQL Server ao Amazon S3](User.SQLServer.Options.S3-integration.md). 

# Implantar projetos do SSAS no Amazon RDS
<a name="SSAS.Deploy"></a>

No RDS, não é possível implantar projetos do SSAS diretamente usando o SQL Server Management Studio (SSMS). Para implantar projetos, use um procedimento armazenado do RDS.

**nota**  
O uso de arquivos .xmla para implantação não é compatível.

Antes de implantar projetos, certifique-se do seguinte:
+ A integração do Simple Storage Service (Simple Storage Service (Amazon S3)) está habilitada. Para ter mais informações, consulte [Integrar uma instância de banco de dados do Amazon RDS for SQL Server ao Amazon S3](User.SQLServer.Options.S3-integration.md).
+ A configuração `Processing Option` está definida como `Do Not Process`. Essa configuração significa que nenhum processamento ocorrerá após a implantação.
+ Você tem os arquivos `myssasproject.asdatabase` e `myssasproject.deploymentoptions`. Eles são gerados automaticamente quando você cria o projeto do SSAS.

**Como implantar um projeto do SSAS no RDS**

1. Baixe o arquivo `.asdatabase` (modelo do SSAS) no bucket do S3 para a instância de banco de dados, conforme mostrado no exemplo a seguir. Para obter mais informações sobre os parâmetros de download, consulte [Baixar arquivos de um bucket do Amazon S3 em uma instância de banco de dados SQL Server](Appendix.SQLServer.Options.S3-integration.using.md#Appendix.SQLServer.Options.S3-integration.using.download).

   ```
   exec msdb.dbo.rds_download_from_s3 
   @s3_arn_of_file='arn:aws:s3:::bucket_name/myssasproject.asdatabase', 
   [@rds_file_path='D:\S3\myssasproject.asdatabase'],
   [@overwrite_file=1];
   ```

1. Baixe o arquivo `.deploymentoptions` no bucket do S3 para a instância de banco de dados.

   ```
   exec msdb.dbo.rds_download_from_s3
   @s3_arn_of_file='arn:aws:s3:::bucket_name/myssasproject.deploymentoptions', 
   [@rds_file_path='D:\S3\myssasproject.deploymentoptions'],
   [@overwrite_file=1];
   ```

1. Implante o projeto.

   ```
   exec msdb.dbo.rds_msbi_task
   @task_type='SSAS_DEPLOY_PROJECT',
   @file_path='D:\S3\myssasproject.asdatabase';
   ```

# Monitorar o status de uma tarefa de implantação
<a name="SSAS.Monitor"></a>

Para rastrear o status da tarefa de implantação (ou de download), chame a função `rds_fn_task_status`. Ela leva dois parâmetros. O primeiro parâmetro sempre deve ser `NULL` porque ele não se aplica ao SSAS. O segundo parâmetro aceita um ID de tarefa. 

Para ver uma lista de todas as tarefas, defina o primeiro parâmetro como `NULL` e o segundo parâmetro como `0`, conforme mostrado no seguinte exemplo.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,0);
```

Para obter uma tarefa específica, defina o primeiro parâmetro como `NULL` e o segundo parâmetro como o ID da tarefa, conforme mostrado no exemplo a seguir.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,42);
```

A função `rds_fn_task_status` retorna as informações a seguir.


| Parâmetro de saída | Descrição | 
| --- | --- | 
| `task_id` | O ID da tarefa. | 
| `task_type` | No SSAS, as tarefas podem ter os seguintes tipos de tarefa: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/SSAS.Monitor.html)  | 
| `database_name` | Não aplicável a tarefas do SSAS. | 
| `% complete` | O progresso da tarefa em porcentagem. | 
| `duration (mins)` | A quantidade de tempo gasta na tarefa, em minutos. | 
| `lifecycle` |  O status da tarefa. Os possíveis status são os seguintes: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/SSAS.Monitor.html)  | 
| `task_info` | Informações adicionais sobre a tarefa. Se um erro ocorrer durante o processamento, essa coluna conterá informações sobre o erro. Para ter mais informações, consulte [Solução de problemas do SSAS](SSAS.Trouble.md). | 
| `last_updated` | A data e hora em que o status da tarefa foi atualizado pela última vez. | 
| `created_at` | A data e hora em que a tarefa foi criada. | 
| `S3_object_arn` |  Não aplicável a tarefas do SSAS.  | 
| `overwrite_S3_backup_file` | Não aplicável a tarefas do SSAS. | 
| `KMS_master_key_arn` |  Não aplicável a tarefas do SSAS.  | 
| `filepath` |  Não aplicável a tarefas do SSAS.  | 
| `overwrite_file` |  Não aplicável a tarefas do SSAS.  | 
| `task_metadata` | Metadados associados à tarefa do SSAS. | 

# Como usar o SSAS no Amazon RDS
<a name="SSAS.Use"></a>

Depois de implantar o projeto do SSAS, será possível processar diretamente o banco de dados OLAP no SSMS.

**Como usar o SSAS no RDS**

1. No SSMS, conecte-se ao SSAS usando o nome de usuário e a senha do domínio do Active Directory.

1. Expanda **Databases (Bancos de dados)**. Será exibido o banco de dados recém-implantado do SSAS.

1. Localize a string de conexão e atualize o nome de usuário e a senha para dar acesso ao banco de dados da fonte do SQL. Isso é necessário para processar objetos SSAS.

   1. Para o modo Tabular, faça o seguinte:

      1. Escolha a guia **Connections** (Conexões).

      1. Abra o menu de contexto (clique com o botão direito do mouse) do objeto de conexão e escolha **Properties** (Propriedades).

      1. Atualize o nome de usuário e a senha na string de conexão.

   1. Para o modo Multidimensional, faça o seguinte:

      1. Expanda a guia **Data Sources** (Origem dos dados).

      1. Abra o menu de contexto (clique com o botão direito do mouse) para o objeto de origem dos dados e escolha **Properties** (Propriedades).

      1. Atualize o nome de usuário e a senha na string de conexão.

1. Abra o menu de contexto (clique com o botão direito do mouse) para o banco de dados do SSAS que você criou e selecione **Process Database (Processar banco de dados)**.

   Dependendo do tamanho dos dados de entrada, a operação de processamento pode levar vários minutos para ser concluída.

**Topics**
+ [Configurar um usuário autenticado pelo Windows para o SSAS](#SSAS.Use.Auth)
+ [Adicionar um usuário de domínio como administrador de banco de dados](#SSAS.Admin)
+ [Criar um proxy do SSAS](#SSAS.Use.Proxy)
+ [Programar o processamento de banco de dados do SSAS usando o SQL Server Agent](#SSAS.Use.Schedule)
+ [Revogar o acesso do SSAS do proxy](#SSAS.Use.Revoke)

## Configurar um usuário autenticado pelo Windows para o SSAS
<a name="SSAS.Use.Auth"></a>

O usuário administrador principal (às vezes chamado de usuário primário) pode usar o exemplo de código a seguir para configurar um logon autenticado pelo Windows e conceder as permissões de procedimento necessárias. Isso concede permissões ao usuário do domínio para executar tarefas do cliente SSAS, usar procedimentos de transferência de arquivos do S3, criar credenciais e trabalhar com o proxy do SQL Server Agent. Para obter mais informações, consulte [Credenciais (mecanismo de banco de dados)](https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/credentials-database-engine?view=sql-server-ver15) e [Criar um proxy do SQL Server Agent](https://docs.microsoft.com/en-us/sql/ssms/agent/create-a-sql-server-agent-proxy?view=sql-server-ver15) na documentação da Microsoft.

Você pode conceder algumas ou todas as seguintes permissões, conforme necessário, aos usuários autenticados pelo Windows.

**Example**  

```
-- Create a server-level domain user login, if it doesn't already exist
USE [master]
GO
CREATE LOGIN [mydomain\user_name] FROM WINDOWS
GO

-- Create domain user, if it doesn't already exist
USE [msdb]
GO
CREATE USER [mydomain\user_name] FOR LOGIN [mydomain\user_name]
GO

-- Grant necessary privileges to the domain user
USE [master]
GO
GRANT ALTER ANY CREDENTIAL TO [mydomain\user_name]
GO

USE [msdb]
GO
GRANT EXEC ON msdb.dbo.rds_msbi_task TO [mydomain\user_name] with grant option
GRANT SELECT ON msdb.dbo.rds_fn_task_status TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_task_status TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_cancel_task TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_download_from_s3 TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_upload_to_s3 TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_delete_from_filesystem TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_gather_file_details TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_add_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_update_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_grant_login_to_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_revoke_login_from_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_delete_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_enum_login_for_proxy to [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_enum_proxy_for_subsystem TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_sqlagent_proxy TO [mydomain\user_name] with grant option
ALTER ROLE [SQLAgentUserRole] ADD MEMBER [mydomain\user_name]
GO
```

## Adicionar um usuário de domínio como administrador de banco de dados
<a name="SSAS.Admin"></a>

É possível adicionar um usuário de domínio como administrador de banco de dados do SSAS das seguintes maneiras:
+ Um administrador de banco de dados pode usar o SSMS para criar uma função com privilégios `admin` e adicionar usuários a essa função.
+ É possível usar o procedimento armazenado a seguir.

  ```
  exec msdb.dbo.rds_msbi_task
  @task_type='SSAS_ADD_DB_ADMIN_MEMBER',
  @database_name='myssasdb',
  @ssas_role_name='exampleRole',
  @ssas_role_member='domain_name\domain_user_name';
  ```

  Os seguintes parâmetros são obrigatórios:
  + `@task_type` – O tipo da tarefa do MSBI, nesse caso `SSAS_ADD_DB_ADMIN_MEMBER`.
  + `@database_name` – O nome do banco de dados do SSAS ao qual você está concedendo privilégios de administrador.
  + `@ssas_role_name` – O nome da função de administrador de banco de dados do SSAS. Se a função ainda não existir, ela será criada.
  + `@ssas_role_member` – O usuário do banco de dados do SSAS que você está adicionando à função de administrador.

## Criar um proxy do SSAS
<a name="SSAS.Use.Proxy"></a>

Para poder programar o processamento do banco de dados do SSAS usando o SQL Server Agent, crie uma credencial do SSAS e um proxy SSAS. Execute esses procedimentos como um usuário autenticado pelo Windows.

**Para criar a credencial do SSAS**
+ Crie a credencial para o proxy. Para fazer isso, você pode usar o SSMS ou a seguinte instrução SQL.

  ```
  USE [master]
  GO
  CREATE CREDENTIAL [SSAS_Credential] WITH IDENTITY = N'mydomain\user_name', SECRET = N'mysecret'
  GO
  ```
**nota**  
`IDENTITY` deve ser um login autenticado por domínio. Substitua `mysecret` pela senha do login autenticado por domínio.

**Para criar o proxy do SSIS**

1. Use a seguinte instrução SQL para criar o proxy.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_add_proxy @proxy_name=N'SSAS_Proxy',@credential_name=N'SSAS_Credential',@description=N''
   GO
   ```

1. Use a seguinte instrução SQL para conceder acesso ao proxy para outros usuários.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name=N'SSAS_Proxy',@login_name=N'mydomain\user_name'
   GO
   ```

1. Use a seguinte instrução SQL para dar ao subsistema do SSAS acesso ao proxy.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='GRANT_SUBSYSTEM_ACCESS',@proxy_name='SSAS_Proxy',@proxy_subsystem='SSAS'
   GO
   ```

**Como visualizar o proxy e as concessões no proxy**

1. Use a seguinte instrução SQL para visualizar os beneficiários do proxy.

   ```
   USE [msdb]
   GO
   EXEC sp_help_proxy
   GO
   ```

1. Use a seguinte instrução SQL para visualizar as concessões do subsistema.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_enum_proxy_for_subsystem
   GO
   ```

## Programar o processamento de banco de dados do SSAS usando o SQL Server Agent
<a name="SSAS.Use.Schedule"></a>

Depois de criar a credencial e o proxy e conceder acesso SSAS ao proxy, você pode criar um trabalho do SQL Server Agent para programar o processamento do banco de dados do SSAS.

**Para programar processamento de banco de dados do SSAS**
+ Use o SSMS ou o T-SQL para criar o trabalho do SQL Server Agent. O exemplo a seguir usa T-SQL. Você pode configurar ainda mais seu programa de trabalho por meio do SSMS ou o T-SQL.
  + O parâmetro `@command` descreve o comando XML for Analysis (XMLA) a ser executado pelo trabalho do SQL Server Agent. Este exemplo configura o processamento de banco de dados multidimensional do SSAS.
  + O parâmetro `@server` descreve o nome do servidor do SSAS de destino do trabalho do SQL Server Agent.

    Para chamar o serviço do SSAS na mesma instância de banco de dados do RDS em que o trabalho do SQL Server Agent reside, use `localhost:2383`.

    Para chamar o serviço do SSAS de fora da instância de banco de dados do RDS, use o endpoint do RDS. Você também pode usar o endpoint do Kerberos Active Directory (AD) (`your-DB-instance-name.your-AD-domain-name`) se as instâncias de banco de dados do RDS forem unidas pelo mesmo domínio. Para instâncias de banco de dados externas, certifique-se de configurar corretamente o grupo de segurança da VPC associado à instância de banco de dados do RDS para uma conexão segura.

  Você pode editar ainda mais a consulta para oferecer suporte a várias operações XMLA. Faça edições modificando diretamente a consulta T-SQL ou usando a interface do usuário do SSMS após a criação do trabalho do SQL Server Agent.

  ```
  USE [msdb]
  GO
  DECLARE @jobId BINARY(16)
  EXEC msdb.dbo.sp_add_job @job_name=N'SSAS_Job', 
      @enabled=1, 
      @notify_level_eventlog=0, 
      @notify_level_email=0, 
      @notify_level_netsend=0, 
      @notify_level_page=0, 
      @delete_level=0, 
      @category_name=N'[Uncategorized (Local)]', 
      @job_id = @jobId OUTPUT
  GO
  EXEC msdb.dbo.sp_add_jobserver 
      @job_name=N'SSAS_Job', 
      @server_name = N'(local)'
  GO
  EXEC msdb.dbo.sp_add_jobstep @job_name=N'SSAS_Job', @step_name=N'Process_SSAS_Object', 
      @step_id=1, 
      @cmdexec_success_code=0, 
      @on_success_action=1, 
      @on_success_step_id=0, 
      @on_fail_action=2, 
      @on_fail_step_id=0, 
      @retry_attempts=0, 
      @retry_interval=0, 
      @os_run_priority=0, @subsystem=N'ANALYSISCOMMAND', 
      @command=N'<Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
          <Parallel>
              <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                  xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" 
                  xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine/200" 
                  xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200" xmlns:ddl300="http://schemas.microsoft.com/analysisservices/2011/engine/300" 
                  xmlns:ddl300_300="http://schemas.microsoft.com/analysisservices/2011/engine/300/300" xmlns:ddl400="http://schemas.microsoft.com/analysisservices/2012/engine/400" 
                  xmlns:ddl400_400="http://schemas.microsoft.com/analysisservices/2012/engine/400/400" xmlns:ddl500="http://schemas.microsoft.com/analysisservices/2013/engine/500" 
                  xmlns:ddl500_500="http://schemas.microsoft.com/analysisservices/2013/engine/500/500">
                  <Object>
                      <DatabaseID>Your_SSAS_Database_ID</DatabaseID>
                  </Object>
                  <Type>ProcessFull</Type>
                  <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
              </Process>
          </Parallel>
      </Batch>', 
      @server=N'localhost:2383', 
      @database_name=N'master', 
      @flags=0, 
      @proxy_name=N'SSAS_Proxy'
  GO
  ```

## Revogar o acesso do SSAS do proxy
<a name="SSAS.Use.Revoke"></a>

Você pode revogar o acesso ao subsistema SSAS e excluir o proxy SSAS usando os procedimentos armazenados a seguir.

**Como revogar o acesso e excluir o proxy**

1. Revogue o acesso ao subsistema.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='REVOKE_SUBSYSTEM_ACCESS',@proxy_name='SSAS_Proxy',@proxy_subsystem='SSAS'
   GO
   ```

1. Revogue as concessões no proxy.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_revoke_login_from_proxy @proxy_name=N'SSAS_Proxy',@name=N'mydomain\user_name'
   GO
   ```

1. Exclua o proxy.

   ```
   USE [msdb]
   GO
   EXEC dbo.sp_delete_proxy @proxy_name = N'SSAS_Proxy'
   GO
   ```

# Fazer backup de um banco de dados do SSAS
<a name="SSAS.Backup"></a>

É possível criar arquivos de backup de banco de dados do SSAS somente na pasta `D:\S3` da instância de banco de dados. Para mover os arquivos de backup para o bucket do S3, use o Amazon S3.

É possível fazer backup de um banco de dados do SSAS da seguinte forma:
+ Um usuário de domínio com a função `admin` de um banco de dados específico pode usar o SSMS para fazer backup do banco de dados para a pasta `D:\S3`.

  Para obter mais informações, consulte [Adicionar um usuário de domínio como administrador de banco de dados](SSAS.Use.md#SSAS.Admin).
+ É possível usar o procedimento armazenado a seguir. Este procedimento armazenado não oferece suporte a criptografia.

  ```
  exec msdb.dbo.rds_msbi_task
  @task_type='SSAS_BACKUP_DB',
  @database_name='myssasdb',
  @file_path='D:\S3\ssas_db_backup.abf',
  [@ssas_apply_compression=1],
  [@ssas_overwrite_file=1];
  ```

  Os seguintes parâmetros são obrigatórios:
  + `@task_type` – O tipo da tarefa do MSBI, nesse caso `SSAS_BACKUP_DB`.
  + `@database_name` – O nome do banco de dados do SSAS do qual você está fazendo backup.
  + `@file_path` – O caminho para o arquivo de backup do SSAS. É necessária a extensão `.abf`.

  Os seguintes parâmetros são opcionais:
  + `@ssas_apply_compression` – Se deve ser aplicada a compactação do backup do SSAS. Os valores válidos são 1 (Sim) e 0 (Não).
  + `@ssas_overwrite_file` – Se o arquivo de backup do SSAS deve ser substituído. Os valores válidos são 1 (Sim) e 0 (Não).

# Restaurar um banco de dados do SSAS
<a name="SSAS.Restore"></a>

Use o procedimento armazenado a seguir para restaurar um banco de dados do SSAS de um backup. 

Não será possível restaurar um banco de dados se houver um banco de dados existente do SSAS com o mesmo nome. O procedimento armazenado para restauração não oferece suporte a arquivos de backup criptografados.

```
exec msdb.dbo.rds_msbi_task
@task_type='SSAS_RESTORE_DB',
@database_name='mynewssasdb',
@file_path='D:\S3\ssas_db_backup.abf';
```

Os seguintes parâmetros são obrigatórios:
+ `@task_type` – O tipo da tarefa do MSBI, nesse caso `SSAS_RESTORE_DB`.
+ `@database_name` – O nome do novo banco de dados do SSAS para o qual você está restaurando.
+ `@file_path` – O caminho para o arquivo de backup do SSAS.

## Restauração de uma instância de banco de dados para um tempo especificado
<a name="SSAS.PITR"></a>

A recuperação em um ponto anterior no tempo (PITR) não se aplica a bancos de dados do SSAS. Se você fizer PITR, somente os dados do SSAS no último snapshot antes do tempo solicitado estarão disponíveis na instância restaurada.

**Como ter bancos de dados do SSAS atualizados em uma instância de banco de dados restaurada**

1. Faça backup dos bancos de dados do SSAS para a pasta `D:\S3` na instância de origem.

1. Transfira os arquivos de backup para o bucket do S3.

1. Transfira os arquivos de backup do bucket do S3 para a pasta `D:\S3` na instância restaurada.

1. Execute o procedimento armazenado para restaurar os bancos de dados do SSAS na instância restaurada.

   Também é possível reprocessar o projeto do SSAS para restaurar os bancos de dados.

# Alterar o modo SSAS
<a name="SSAS.ChangeMode"></a>

Você pode alterar o modo no qual o SSAS é executado, seja Tabular ou Multidimensional. Para alterar o modo, use o Console de gerenciamento da AWS ou a AWS CLI para modificar as configurações de opções na opção SSAS.

**Importante**  
É possível usar apenas um modo SSAS de cada vez. Certifique-se de excluir todos os bancos de dados do SSAS antes de alterar o modo ou você receberá um erro.

## Console
<a name="SSAS.ChangeMode.CON"></a>

O procedimento de console do Amazon RDS a seguir altera o modo SSAS para Tabular e define o parâmetro `MAX_MEMORY` para 70%.

**Para modificar a opção SSAS**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Selecione o grupo de opções com a opção `SSAS` que você quer modificar (`ssas-se-2017` nos exemplos anteriores).

1. Escolha **Modify option** (Modificar opção).

1. Altere as configurações de opção:

   1. Para **Max memory** (Memória máxima), insira **70**.

   1. Para **Mode** (Modo), escolha **Tabular**.

1. Escolha **Modify option** (Modificar opção).

## AWS CLI
<a name="SSAS.ChangeMode.CLI"></a>

O seguinte exemplo da AWS CLI altera o modo SSAS para Tabular e define o parâmetro `MAX_MEMORY` para 70%.

Para que o comando da CLI funcione, certifique-se de incluir todos os parâmetros necessários, mesmo se você não estiver modificando-os.

**Para modificar a opção SSAS**
+ Use um dos seguintes comandos.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds add-option-to-option-group \
      --option-group-name ssas-se-2017 \
      --options "OptionName=SSAS,VpcSecurityGroupMemberships=sg-12345e67,OptionSettings=[{Name=MAX_MEMORY,Value=70},{Name=MODE,Value=Tabular}]" \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds add-option-to-option-group ^
      --option-group-name ssas-se-2017 ^
      --options OptionName=SSAS,VpcSecurityGroupMemberships=sg-12345e67,OptionSettings=[{Name=MAX_MEMORY,Value=70},{Name=MODE,Value=Tabular}] ^
      --apply-immediately
  ```

# Desativar o SSAS
<a name="SSAS.Disable"></a>

Para desativar o SSAS, remova a opção `SSAS` do grupo de opções.

**Importante**  
Antes de remover a opção `SSAS`, exclua os bancos de dados do SSAS.  
É altamente recomendável que você faça backup dos bancos de dados do SSAS antes de excluí-los e remover a opção `SSAS`.

## Console
<a name="SSAS.Disable.Console"></a>

**Como remover a opção SSAS do grupo de opções**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Escolha o grupo de opções com a opção `SSAS` que você quer remover (`ssas-se-2017` nos exemplos anteriores).

1. Selecione **Delete option (Excluir opção)**.

1. Em **Deletion options (Opções de exclusão)**, selecione **SSAS** em **Options to delete (Opções a serem excluídas)**.

1. Em **Apply immediately (Aplicar imediatamente)**, selecione **Yes (Sim)** para excluir a opção imediatamente ou **No (Não)** para excluí-la na próxima janela de manutenção.

1. Escolha **Excluir**.

## AWS CLI
<a name="SSAS.Disable.CLI"></a>

**Como remover a opção SSAS do grupo de opções**
+ Use um dos seguintes comandos.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds remove-option-from-option-group \
      --option-group-name ssas-se-2017 \
      --options SSAS \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name ssas-se-2017 ^
      --options SSAS ^
      --apply-immediately
  ```

# Solução de problemas do SSAS
<a name="SSAS.Trouble"></a>

Você pode encontrar os problemas a seguir ao usar o SSAS.


| Problema | Tipo | Sugestões de solução de problemas | 
| --- | --- | --- | 
| Não foi possível configurar a opção SSAS. O modo SSAS solicitado é new\$1mode, mas a instância de banco de dados atual tem number banco de dados current\$1mode. Exclua os bancos de dados existentes antes de mudar para o modo new\$1mode. Para recuperar o acesso ao modo current\$1mode para exclusão do banco de dados, atualize o grupo de opções de banco de dados atual ou anexe um novo grupo de opções com %s como o valor de configuração da opção MODE para a opção SSAS. | Evento RDS | Você não pode alterar o modo SSAS se ainda tiver bancos de dados do SSAS que usam o modo atual. Exclua os bancos de dados do SSAS e tente novamente. | 
| Não é possível remover a opção SSAS porque há number banco de dados de modo existentes. A opção SSAS não pode ser removida até que todos os bancos de dados SSAS sejam excluídos. Adicione a opção SSAS novamente, exclua todos os bancos de dados SSAS e tente novamente. | Evento RDS | Você não pode desativar o SSAS se ainda tiver bancos de dados do SSAS. Exclua os bancos de dados do SSAS e tente novamente. | 
| A opção SSAS não está habilitada ou está em processo de habilitação. Tente novamente mais tarde. | Procedimentos armazenados do RDS | Você não pode executar procedimentos armazenados do SSAS quando a opção estiver desativada ou quando ela está sendo ativada. | 
| A opção SSAS está configurada incorretamente. Certifique-se de que o status da associação do grupo de opções esteja “em sincronia” e revise os logs de eventos do RDS para mensagens de erro de configuração SSAS relevantes. Após essas investigações, tente novamente. Se os erros continuarem a ocorrer, entre em contato com o AWS Support. | Procedimentos armazenados do RDS |  Você não pode executar procedimentos armazenados do SSAS quando sua associação ao grupo de opções não tiver o status `in-sync`. Isso coloca a opção SSAS em um estado de configuração incorreto. Se o status de associação do seu grupo de opções mudar para `failed` devido à modificação da opção SSAS, há dois motivos possíveis:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/SSAS.Trouble.html) Reconfigure a opção SSAS, porque o RDS permite apenas um modo SSAS por vez e não suporta a remoção de opções SSAS com bancos de dados do SSAS presentes. Verifique se há erros de configuração nos logs de eventos do RDS para sua instância do SSAS e resolva os problemas de acordo.  | 
| Falha na implantação. A alteração só pode ser implantada em um servidor em execução no modo deployment\$1file\$1mode. O modo de servidor atual é current\$1mode. | Procedimentos armazenados do RDS |  Você não pode implantar um banco de dados Tabular em um servidor Multidimensional ou em um banco de dados Multidimensional em um servidor Tabular. Verifique se você está usando arquivos com o modo correto e verifique se a configuração de opção `MODE` é definida como o valor apropriado.  | 
| A restauração falhou. O arquivo de backup só pode ser restaurado em um servidor em execução no modo restore\$1file\$1mode. O modo de servidor atual é current\$1mode. | Procedimentos armazenados do RDS |  Você não pode restaurar um banco de dados Tabular para um servidor Multidimensional ou um banco de dados Multidimensional para um servidor Tabular. Verifique se você está usando arquivos com o modo correto e verifique se a configuração de opção `MODE` é definida como o valor apropriado.  | 
| A restauração falhou. O arquivo de backup e as versões da instância de banco de dados do RDS são incompatíveis. | Procedimentos armazenados do RDS |  Você não pode restaurar um banco de dados do SSAS com uma versão incompatível com a versão da instância do SQL Server. Para obter mais informações, consulte [Níveis de compatibilidade para modelos tabulares](https://docs.microsoft.com/en-us/analysis-services/tabular-models/compatibility-level-for-tabular-models-in-analysis-services) e [Nível de compatibilidade de um banco de dados multidimensional](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/compatibility-level-of-a-multidimensional-database-analysis-services) na documentação da Microsoft.  | 
| A restauração falhou. O arquivo de backup especificado na operação de restauração está danificado ou não é um arquivo de backup do SSAS. Certifique-se de que @rds\$1file\$1path esteja formatado corretamente. | Procedimentos armazenados do RDS |  Você não pode restaurar um banco de dados do SSAS com um arquivo danificado. Certifique-se de que o arquivo não esteja danificado ou corrompido. Esse erro também pode ser gerado quando `@rds_file_path` não está formatado corretamente (por exemplo, ele tem barras invertidas duplas como em `D:\S3\\incorrect_format.abf`).  | 
| A restauração falhou. O nome do banco de dados restaurado não pode conter palavras reservadas, mais de 100 caracteres ou caracteres inválidos: . , ; ' ` : / \$1\$1 \$1 \$1 ? \$1" & % \$1 \$1 \$1 = ( ) [ ] \$1 \$1 < > | Procedimentos armazenados do RDS |  O nome do banco de dados restaurado não pode conter palavras ou caracteres reservados que não sejam válidos ou tenham mais de 100 caracteres. Para convenções de nomenclatura de objetos SSAS, consulte [Regras de nomeação de objetos](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/olap-physical/object-naming-rules-analysis-services) na documentação da Microsoft.  | 
| Um nome de função inválido foi fornecido. O nome da função não pode conter strings reservados. | Procedimentos armazenados do RDS |  O nome da função não pode conter strings reservados. Para convenções de nomenclatura de objetos SSAS, consulte [Regras de nomeação de objetos](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/olap-physical/object-naming-rules-analysis-services) na documentação da Microsoft.  | 
| Um nome de função inválido foi fornecido. O nome da função não pode conter nenhum dos seguintes caracteres reservados: . , ; ' ` : / \$1\$1 \$1 \$1 ? \$1" & % \$1 \$1 \$1 = ( ) [ ] \$1 \$1 < > | Procedimentos armazenados do RDS |  O nome da função não pode conter caracteres reservados. Para convenções de nomenclatura de objetos SSAS, consulte [Regras de nomeação de objetos](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/olap-physical/object-naming-rules-analysis-services) na documentação da Microsoft.  | 

# Suporte para SQL Server Integration Services no Amazon RDS for SQL Server
<a name="Appendix.SQLServer.Options.SSIS"></a>

O Microsoft SQL Server Integration Services (SSIS) é um componente que você pode usar para executar uma ampla gama de tarefas de migração de dados. O SSIS é uma plataforma para integração de dados e aplicativos de fluxo de trabalho. Ele possui uma ferramenta de data warehousing usada para extração, transformação e carregamento (ETL) de dados. Você também pode usar essa ferramenta para automatizar a manutenção de bancos de dados do SQL Server e atualizações para dados de cubo multidimensional.

Os projetos do SSIS são organizados em pacotes salvos como arquivos .dtsx baseados em XML. Os pacotes podem conter fluxos de controle e fluxos de dados. Você usa fluxos de dados para representar operações ETL. Após a implantação, os pacotes são armazenados no SQL Server no banco de dados SSISDB. SSISDB é um banco de dados de processamento de transações online (OLTP) no modo de recuperação completa.

O Amazon RDS for SQL Server oferece suporte à execução de SSIS diretamente em instâncias de banco de dados do RDS. Você pode habilitar o SSIS em uma instância de banco de dados existente ou nova. O SSIS é instalado na mesma instância de banco de dados que seu mecanismo de banco de dados.

O RDS oferece suporte ao SSIS para as edições Standard e Enterprise do SQL Server nas seguintes versões:
+ SQL Server 2022, todas as versões
+ Versão 15.00.4043.16.v1 e posterior do SQL Server 2019
+ Versão 14.00.3223.3.v1 e posterior do SQL Server 2017
+ Versão 13.00.5426.0.v1 e superior do SQL Server 2016

**Contents**
+ [Limitações e recomendações](#SSIS.Limitations)
+ [Habilitar o SSIS](#SSIS.Enabling)
  + [Criar o grupo de opções para o SSIS](#SSIS.OptionGroup)
  + [Adicionar a opção SSIS ao grupo de opções](#SSIS.Add)
  + [Criar o grupo de parâmetros para o SSIS](#SSIS.CreateParamGroup)
  + [Modificar o parâmetro para o SSIS](#SSIS.ModifyParam)
  + [Associar o grupo de opções e o grupo de parâmetros à instância de banco de dados](#SSIS.Apply)
  + [Habilitar a integração do S3](#SSIS.EnableS3)
+ [Permissões administrativas no SSISDB](SSIS.Permissions.md)
  + [Configurar um usuário autenticado pelo Windows para o SSIS](SSIS.Permissions.md#SSIS.Use.Auth)
+ [Implantar um projeto do SSIS](SSIS.Deploy.md)
+ [Monitorar o status de uma tarefa de implantação](SSIS.Monitor.md)
+ [Usar o SSIS](SSIS.Use.md)
  + [Definir gerenciadores de conexão de banco de dados para projetos do SSIS](SSIS.Use.md#SSIS.Use.ConnMgrs)
  + [Criar um proxy do SSIS](SSIS.Use.md#SSIS.Use.Proxy)
  + [Programar um pacote do SSIS usando o SQL Server Agent](SSIS.Use.md#SSIS.Use.Schedule)
  + [Revogar o acesso do SSIS do proxy](SSIS.Use.md#SSIS.Use.Revoke)
+ [Desabilitar e descartar o banco de dados do SSIS](SSIS.DisableDrop.md)
  + [Desabilitar o SSIS](SSIS.DisableDrop.md#SSIS.Disable)
  + [Eliminar o banco de dados SSISDB](SSIS.DisableDrop.md#SSIS.Drop)

## Limitações e recomendações
<a name="SSIS.Limitations"></a>

As seguintes limitações e recomendações aplicam-se à execução do SSIS no RDS for SQL Server:
+ A instância de banco de dados deve ter um grupo de parâmetros associado ao parâmetro `clr enabled` definido como 1. Para obter mais informações, consulte [Modificar o parâmetro para o SSIS](#SSIS.ModifyParam).
**nota**  
Se você habilitar o parâmetro `clr enabled` no SQL Server 2017 ou 2019, não será possível usar o tempo de execução de linguagem comum (CLR) na sua instância de banco de dados. Para obter mais informações, consulte [Recursos não compatíveis e recursos com suporte limitado](SQLServer.Concepts.General.FeatureNonSupport.md).
+ As seguintes tarefas de fluxo de controle são compatíveis:
  + Tarefa de execução de DDL de serviços de análise
  + Tarefa de processamento de serviços de análise
  + Tarefa de inserção em massa
  + Tarefa de verificação da integridade do banco de dados
  + Tarefa de fluxo de dados
  + Tarefa de consulta de mineração de dados
  + Tarefa de criação de perfil de dados
  + Tarefa de execução do pacote
  + Tarefa de execução de trabalho do SQL Server Agent
  + Tarefa de execução do SQL
  + Tarefa de execução de instrução T-SQL
  + Tarefa de notificação do operador
  + Tarefa de recriação de índice
  + Tarefa de reorganização de índice
  + Tarefa de redução do banco de dados
  + Tarefa de transferência do banco de dados
  + Tarefa de transferência de trabalhos
  + Tarefa de transferência de logins
  + Tarefa de transferência de objetos do SQL Server
  + Tarefa de atualização de estatísticas
+ Somente a implantação do projeto é permitida.
+ É permitido executar pacotes do SSIS usando o SQL Server Agent.
+ Os registros de log do SSIS só podem ser inseridos em bancos de dados criados pelo usuário.
+ Use apenas a pasta `D:\S3` para trabalhar com arquivos. Os arquivos colocados em qualquer outro diretório são excluídos. Esteja ciente de alguns outros detalhes de localização do arquivo:
  + Coloque os arquivos de entrada e saída do projeto do SSIS na pasta `D:\S3`.
  + Para a tarefa de fluxo de dados, altere o local para `BLOBTempStoragePath` e `BufferTempStoragePath` para um arquivo dentro da pasta `D:\S3`. O caminho do arquivo deve começar com `D:\S3\`.
  + Certifique-se de que todos os parâmetros, variáveis e expressões usados para conexões de arquivos apontem para a pasta `D:\S3`.
  + Em instâncias Multi-AZ, os arquivos criados pelo SSIS na pasta `D:\S3` são excluídos após um failover. Para obter mais informações, consulte [Limitações Multi-AZ para a integração do S3](User.SQLServer.Options.S3-integration.md#S3-MAZ).
  + Carregue os arquivos criados pelo SSIS na pasta `D:\S3` para seu bucket do Amazon S3 para que sejam duráveis.
+ As transformações Importar coluna e Exportar coluna e o componente Script na tarefa de fluxo de dados não são compatíveis.
+ Não é possível habilitar o despejo na execução do pacote do SSIS e não é possível adicionar toques de dados em pacotes do SSIS.
+ Não há suporte para o recurso de expansão do SSIS.
+ Não é possível implantar projetos diretamente. Fornecemos procedimentos armazenados do RDS para fazer isso. Para obter mais informações, consulte [Implantar um projeto do SSIS](SSIS.Deploy.md).
+ Crie arquivos de projeto do SSIS (.ispac) com o modo de proteção `DoNotSavePasswords` para implantação no RDS.
+ O SSIS não é compatível com instâncias Always On com réplicas de leitura.
+ Não é possível fazer backup do banco de dados SSISDB associado à opção `SSIS`.
+ Importar e restaurar o banco de dados SSISDB de outras instâncias do SSIS não é permitido.
+ É possível se conectar a outras instâncias de banco de dados do SQL Server ou a uma fonte de dados Oracle. A conexão com outros mecanismos de banco de dados, como o MySQL ou o PostgreSQL, não é compatível com o SSIS no RDS para SQL Server. Para obter mais informações sobre a conexão com uma fonte de dados Oracle, consulte [Servidores vinculados ao Oracle OLEDB](Appendix.SQLServer.Options.LinkedServers_Oracle_OLEDB.md). 
+ O SSIS não aceita uma instância associada ao domínio com uma relação de confiança de saída para um domínio on-premises. Ao usar uma relação de confiança de saída, execute o trabalho do SSIS por meio de uma conta no domínio local da AWS.
+ Não é possível executar pacotes baseados em sistemas de arquivos.

## Habilitar o SSIS
<a name="SSIS.Enabling"></a>

Você habilita o SSIS adicionando a opção SSIS à sua instância de banco de dados. Use o seguinte processo:

1. Crie um grupo de opções ou selecione um existente.

1. Adicione a opção `SSIS` ao grupo de opções.

1. Crie um novo grupo de parâmetros ou escolha um existente.

1. Modifique o grupo de parâmetros para definir o parâmetro `clr enabled` como 1.

1. Associe o grupo de opções e o grupo de parâmetros à instância de banco de dados.

1. Habilite a integração do Amazon S3.

**nota**  
Se um banco de dados com o nome SSISDB ou um login reservado do SSIS já existir na instância de banco de dados, você não poderá habilitar o SSIS na instância.

### Criar o grupo de opções para o SSIS
<a name="SSIS.OptionGroup"></a>

Para trabalhar com o SSIS, crie um grupo de opções ou modifique um grupo de opções que corresponda à edição do SQL Server e à versão da instância de banco de dados que você pretende usar. Para fazer isso, use o Console de gerenciamento da AWS ou a AWS CLI.

#### Console
<a name="SSIS.OptionGroup.Console"></a>

O procedimento a seguir cria um grupo de opções para o SQL Server Standard Edition 2016.

**Como criar o grupo de opções**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Escolha **Create group (Criar grupo)**.

1. Na janela **Create option group (Criar grupo de opções)**, faça o seguinte:

   1. Em **Name** (Nome), insira um nome para o grupo de opções que seja exclusivo na sua conta da AWS, como **ssis-se-2016**. O nome pode conter somente letras, números e hifens.

   1. Em **Descrição**, insira uma breve descrição do grupo de opções, como **SSIS option group for SQL Server SE 2016**. A descrição é usada para fins de exibição. 

   1. Em **Engine (Mecanismo)**, selecione **sqlserver-se**.

   1. Em **Versão do mecanismo principal**, selecione **13.00**.

1. Escolha **Criar**.

#### CLI
<a name="SSIS.OptionGroup.CLI"></a>

O procedimento a seguir cria um grupo de opções para o SQL Server Standard Edition 2016.

**Como criar o grupo de opções**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds create-option-group \
      --option-group-name ssis-se-2016 \
      --engine-name sqlserver-se \
      --major-engine-version 13.00 \
      --option-group-description "SSIS option group for SQL Server SE 2016"
  ```

  Para Windows:

  ```
  aws rds create-option-group ^
      --option-group-name ssis-se-2016 ^
      --engine-name sqlserver-se ^
      --major-engine-version 13.00 ^
      --option-group-description "SSIS option group for SQL Server SE 2016"
  ```

### Adicionar a opção SSIS ao grupo de opções
<a name="SSIS.Add"></a>

Depois, use o Console de gerenciamento da AWS ou a AWS CLI para adicionar a opção `SSIS` ao grupo de opções.

#### Console
<a name="SSIS.Add.Console"></a>

**Como adicionar a opção SSIS**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Escolha o grupo de opções que você acabou de criar, **ssis-se-2016** neste exemplo.

1. Escolha **Add option (Adicionar opção)**.

1. Em **Detalhes da opção**, selecione **SSIS** em **Nome da opção**.

1. Em **Scheduling (Programação)**, escolha se deseja adicionar a opção imediatamente ou na próxima janela de manutenção.

1. Escolha **Add option (Adicionar opção)**.

#### CLI
<a name="SSIS.Add.CLI"></a>

**Como adicionar a opção SSIS**
+ Adicione a opção `SSIS` ao grupo de opções.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds add-option-to-option-group \
      --option-group-name ssis-se-2016 \
      --options OptionName=SSIS \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds add-option-to-option-group ^
      --option-group-name ssis-se-2016 ^
      --options OptionName=SSIS ^
      --apply-immediately
  ```

### Criar o grupo de parâmetros para o SSIS
<a name="SSIS.CreateParamGroup"></a>

Crie ou modifique um grupo de parâmetros para o parâmetro `clr enabled` que corresponde à edição e à versão do SQL Server da instância de banco de dados que você pretende usar para o SSIS.

#### Console
<a name="SSIS.CreateParamGroup.Console"></a>

O procedimento a seguir cria um grupo de parâmetros para o SQL Server Standard Edition 2016.

**Como criar o grupo de parâmetros**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Parameter groups** (Grupos de parâmetros).

1. Escolha **Create parameter group (Criar parameter group)**.

1. No painel**Create parameter group (Criar parameter group)**, faça o seguinte:

   1. Em **Família de grupos de parâmetros**, escolha **sqlserver-se-13.0**.

   1. Em **Nome do grupo**, insira um identificador para o grupo de parâmetros, como **ssis-sqlserver-se-13**.

   1. Em **Descrição**, insira **clr enabled parameter group**.

1. Escolha **Criar**.

#### CLI
<a name="SSIS.CreateParamGroup.CLI"></a>

O procedimento a seguir cria um grupo de parâmetros para o SQL Server Standard Edition 2016.

**Como criar o grupo de parâmetros**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds create-db-parameter-group \
      --db-parameter-group-name ssis-sqlserver-se-13 \
      --db-parameter-group-family "sqlserver-se-13.0" \
      --description "clr enabled parameter group"
  ```

  Para Windows:

  ```
  aws rds create-db-parameter-group ^
      --db-parameter-group-name ssis-sqlserver-se-13 ^
      --db-parameter-group-family "sqlserver-se-13.0" ^
      --description "clr enabled parameter group"
  ```

### Modificar o parâmetro para o SSIS
<a name="SSIS.ModifyParam"></a>

Modifique o parâmetro `clr enabled` no grupo de parâmetros que corresponde à edição e à versão do SQL Server da instância de banco de dados. Para o SSIS, defina o parâmetro `clr enabled` como 1.

#### Console
<a name="SSIS.ModifyParam.Console"></a>

O procedimento a seguir modifica o grupo de parâmetros que você criou para o SQL Server Standard Edition 2016.

**Como modificar o grupo de parâmetros**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, selecione **Parameter groups**.

1. Escolha o grupo de parâmetros, como **ssis-sqlserver-se-13**.

1. Em **Parâmetros**, filtre a lista de parâmetros para **clr**.

1. Escolha **clr ativado**.

1. Escolha **Edit parameters**.

1. Em **Valores**, escolha **1**.

1. Escolha **Salvar alterações**.

#### CLI
<a name="SSIS.ModifyParam.CLI"></a>

O procedimento a seguir modifica o grupo de parâmetros que você criou para o SQL Server Standard Edition 2016.

**Como modificar o grupo de parâmetros**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds modify-db-parameter-group \
      --db-parameter-group-name ssis-sqlserver-se-13 \
      --parameters "ParameterName='clr enabled',ParameterValue=1,ApplyMethod=immediate"
  ```

  Para Windows:

  ```
  aws rds modify-db-parameter-group ^
      --db-parameter-group-name ssis-sqlserver-se-13 ^
      --parameters "ParameterName='clr enabled',ParameterValue=1,ApplyMethod=immediate"
  ```

### Associar o grupo de opções e o grupo de parâmetros à instância de banco de dados
<a name="SSIS.Apply"></a>

Para associar o grupo de opções e o grupo de parâmetros do SSIS à sua instância de banco de dados, use o Console de gerenciamento da AWS ou a AWS CLI 

**nota**  
Se você usar uma instância existente, ela já deve ter um domínio do Active Directory e uma função do AWS Identity and Access Management (IAM) associados a ela. Se você criar uma nova instância, especifique um domínio do Active Directory e uma função do IAM existentes. Para obter mais informações, consulte [Trabalhar com o Active Directory com o RDS para SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).

#### Console
<a name="SSIS.Apply.Console"></a>

Para concluir a ativação do SSIS, associe o grupo de opções e o grupo de parâmetros do SSIS a uma instância de banco de dados nova ou existente:
+ Para uma nova instância de banco de dados, associe-os ao executar a instância. Para obter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).
+ Para uma instância de banco de dados existente, associe-os modificando a instância. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).

#### CLI
<a name="SSIS.Apply.CLI"></a>

É possível associar o grupo de opções e o grupo de parâmetros do SSIS a uma instância de banco de dados nova ou existente.

**Como criar uma instância com o grupo de opções e o grupo de parâmetros do SSIS**
+ Especifique o mesmo tipo de mecanismo de banco de dados e a versão principal que você usou ao criar o grupo de opções.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier myssisinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 13.00.5426.0.v1 \
      --allocated-storage 100 \
      --manage-master-user-password \
      --master-username admin \
      --storage-type gp2 \
      --license-model li \
      --domain-iam-role-name my-directory-iam-role \
      --domain my-domain-id \
      --option-group-name ssis-se-2016 \
      --db-parameter-group-name ssis-sqlserver-se-13
  ```

  Para Windows:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier myssisinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 13.00.5426.0.v1 ^
      --allocated-storage 100 ^
      --manage-master-user-password ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --domain-iam-role-name my-directory-iam-role ^
      --domain my-domain-id ^
      --option-group-name ssis-se-2016 ^
      --db-parameter-group-name ssis-sqlserver-se-13
  ```

**Como modificar uma instância de banco de dados e associar o grupo de opções e o grupo de parâmetros do SSIS**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier myssisinstance \
      --option-group-name ssis-se-2016 \
      --db-parameter-group-name ssis-sqlserver-se-13 \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier myssisinstance ^
      --option-group-name ssis-se-2016 ^
      --db-parameter-group-name ssis-sqlserver-se-13 ^
      --apply-immediately
  ```

### Habilitar a integração do S3
<a name="SSIS.EnableS3"></a>

Para baixar arquivos de projeto (.ispac) do SSIS para o host para implantação, use a integração de arquivos do S3. Para obter mais informações, consulte [Integrar uma instância de banco de dados do Amazon RDS for SQL Server ao Amazon S3](User.SQLServer.Options.S3-integration.md).

# Permissões administrativas no SSISDB
<a name="SSIS.Permissions"></a>

Quando a instância é criada ou modificada com a opção SSIS, o resultado é um banco de dados SSISDB com as funções ssis\$1admin e ssis\$1logreader concedidas ao usuário mestre. O usuário mestre tem os seguintes privilégios no SSISDB:
+ alterar na função ssis\$1admin
+ alterar na função ssis\$1logreader
+ alterar qualquer usuário

Como o usuário mestre é um usuário autenticado pelo SQL, você não pode usar o usuário mestre para executar pacotes do SSIS. O usuário mestre pode usar esses privilégios para criar usuários do SSISDB e adicioná-los às funções ssis\$1admin e ssis\$1logreader. Fazer isso é útil para dar acesso aos usuários do domínio para usar o SSIS.

## Configurar um usuário autenticado pelo Windows para o SSIS
<a name="SSIS.Use.Auth"></a>

O usuário mestre pode usar o exemplo de código a seguir para configurar um logon autenticado pelo Windows no SSISDB e conceder as permissões de procedimento necessárias. Fazer isso concede permissões ao usuário do domínio para implantar e executar pacotes do SSIS, usar procedimentos de transferência de arquivos do S3, criar credenciais e trabalhar com o proxy do SQL Server Agent. Para obter mais informações, consulte [Credenciais (mecanismo de banco de dados)](https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/credentials-database-engine?view=sql-server-ver15) e [Criar um proxy do SQL Server Agent](https://docs.microsoft.com/en-us/sql/ssms/agent/create-a-sql-server-agent-proxy?view=sql-server-ver15) na documentação da Microsoft.

**nota**  
Você pode conceder algumas ou todas as seguintes permissões, conforme necessário, aos usuários autenticados pelo Windows.

**Example**  

```
-- Create a server-level SQL login for the domain user, if it doesn't already exist
USE [master]
GO
CREATE LOGIN [mydomain\user_name] FROM WINDOWS
GO						
						
-- Create a database-level account for the domain user, if it doesn't already exist						
USE [SSISDB]
GO
CREATE USER [mydomain\user_name] FOR LOGIN [mydomain\user_name]

-- Add SSIS role membership to the domain user
ALTER ROLE [ssis_admin] ADD MEMBER [mydomain\user_name]
ALTER ROLE [ssis_logreader] ADD MEMBER [mydomain\user_name]
GO

-- Add MSDB role membership to the domain user
USE [msdb]
GO
CREATE USER [mydomain\user_name] FOR LOGIN [mydomain\user_name]

-- Grant MSDB stored procedure privileges to the domain user
GRANT EXEC ON msdb.dbo.rds_msbi_task TO [mydomain\user_name] with grant option
GRANT SELECT ON msdb.dbo.rds_fn_task_status TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_task_status TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_cancel_task TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_download_from_s3 TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_upload_to_s3 TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_delete_from_filesystem TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_gather_file_details TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_add_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_update_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_grant_login_to_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_revoke_login_from_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_delete_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_enum_login_for_proxy to [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_enum_proxy_for_subsystem TO [mydomain\user_name]  with grant option
GRANT EXEC ON msdb.dbo.rds_sqlagent_proxy TO [mydomain\user_name] WITH GRANT OPTION


-- Add the SQLAgentUserRole privilege to the domain user
USE [msdb]
GO
ALTER ROLE [SQLAgentUserRole] ADD MEMBER [mydomain\user_name]
GO

-- Grant the ALTER ANY CREDENTIAL privilege to the domain user
USE [master]
GO
GRANT ALTER ANY CREDENTIAL TO [mydomain\user_name]
GO
```

# Implantar um projeto do SSIS
<a name="SSIS.Deploy"></a>

No RDS, não é possível implantar projetos do SSIS diretamente usando o SQL Server Management Studio (SSMS) ou procedimentos do SSIS. Para baixar arquivos de projeto do Amazon S3 e implantá-los, use procedimentos armazenados do RDS.

Para executar os procedimentos armazenados, faça login como qualquer usuário ao qual você concedeu permissões para executar os procedimentos armazenados. Para obter mais informações, consulte [Configurar um usuário autenticado pelo Windows para o SSIS](SSIS.Permissions.md#SSIS.Use.Auth).

**Como implantar o projeto do SSIS**

1. Baixe o arquivo do projeto (.ispac).

   ```
   exec msdb.dbo.rds_download_from_s3
   @s3_arn_of_file='arn:aws:s3:::bucket_name/ssisproject.ispac',
   @rds_file_path='D:\S3\ssisproject.ispac',
   @overwrite_file=1;
   ```

1. Envie a tarefa de implantação, certificando-se do seguinte:
   + A pasta está presente no catálogo do SSIS.
   + O nome do projeto corresponde ao nome do projeto usado durante o desenvolvimento do projeto do SSIS.

   ```
   exec msdb.dbo.rds_msbi_task
   @task_type='SSIS_DEPLOY_PROJECT',
   @folder_name='DEMO',
   @project_name='ssisproject',
   @file_path='D:\S3\ssisproject.ispac';
   ```

# Monitorar o status de uma tarefa de implantação
<a name="SSIS.Monitor"></a>

Para rastrear o status da tarefa de implantação, chame a função `rds_fn_task_status`. Ela leva dois parâmetros. O primeiro parâmetro sempre deve ser `NULL` porque ele não se aplica ao SSIS. O segundo parâmetro aceita um ID de tarefa. 

Para ver uma lista de todas as tarefas, defina o primeiro parâmetro como `NULL` e o segundo parâmetro como `0`, conforme mostrado no seguinte exemplo.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,0);
```

Para obter uma tarefa específica, defina o primeiro parâmetro como `NULL` e o segundo parâmetro como o ID da tarefa, conforme mostrado no exemplo a seguir.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,42);
```

A função `rds_fn_task_status` retorna as informações a seguir.


| Parâmetro de saída | Descrição | 
| --- | --- | 
| `task_id` | O ID da tarefa. | 
| `task_type` | `SSIS_DEPLOY_PROJECT` | 
| `database_name` | Não aplicável a tarefas do SSIS. | 
| `% complete` | O progresso da tarefa em porcentagem. | 
| `duration (mins)` | A quantidade de tempo gasta na tarefa, em minutos. | 
| `lifecycle` |  O status da tarefa. Os possíveis status são os seguintes: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/SSIS.Monitor.html)  | 
| `task_info` | Informações adicionais sobre a tarefa. Se um erro ocorrer durante o processamento, essa coluna conterá informações sobre o erro. | 
| `last_updated` | A data e hora em que o status da tarefa foi atualizado pela última vez. | 
| `created_at` | A data e hora em que a tarefa foi criada. | 
| `S3_object_arn` |  Não aplicável a tarefas do SSIS.  | 
| `overwrite_S3_backup_file` | Não aplicável a tarefas do SSIS. | 
| `KMS_master_key_arn` |  Não aplicável a tarefas do SSIS.  | 
| `filepath` |  Não aplicável a tarefas do SSIS.  | 
| `overwrite_file` |  Não aplicável a tarefas do SSIS.  | 
| `task_metadata` | Metadados associados à tarefa do SSIS. | 

# Usar o SSIS
<a name="SSIS.Use"></a>

Depois de implantar o projeto do SSIS no catálogo do SSIS, você pode executar pacotes diretamente do SSMS ou programá-los usando o SQL Server Agent. Você deve usar um login autenticado pelo Windows para executar pacotes do SSIS. Para obter mais informações, consulte [Configurar um usuário autenticado pelo Windows para o SSIS](SSIS.Permissions.md#SSIS.Use.Auth).

**Topics**
+ [Definir gerenciadores de conexão de banco de dados para projetos do SSIS](#SSIS.Use.ConnMgrs)
+ [Criar um proxy do SSIS](#SSIS.Use.Proxy)
+ [Programar um pacote do SSIS usando o SQL Server Agent](#SSIS.Use.Schedule)
+ [Revogar o acesso do SSIS do proxy](#SSIS.Use.Revoke)

## Definir gerenciadores de conexão de banco de dados para projetos do SSIS
<a name="SSIS.Use.ConnMgrs"></a>

Ao utilizar um gerenciador de conexões, você pode usar estes tipos de autenticação:
+ Para conexões de banco de dados local usando o AWS Managed Active Directory, você pode usar autenticação do SQL ou autenticação do Windows. Para autenticação do Windows, use `DB_instance_name.fully_qualified_domain_name` como o nome do servidor da string de conexão.

  Um exemplo é `myssisinstance.corp-ad.example.com`, onde `myssisinstance` é o nome da instância de banco de dados e `corp-ad.example.com` é o nome de domínio totalmente qualificado.
+ Para conexões remotas, use sempre a autenticação do SQL.
+ Para conexões de banco de dados local usando um Active Directory autogerenciado, você pode usar autenticação do SQL ou autenticação do Windows. Para autenticação do Windows, use `.` ou `LocalHost` como o nome do servidor da string de conexão.

## Criar um proxy do SSIS
<a name="SSIS.Use.Proxy"></a>

Para poder agendar pacotes do SSIS usando o SQL Server Agent, crie uma credencial do SSIS e um proxy do SSIS. Execute esses procedimentos como um usuário autenticado pelo Windows.

**Como criar a credencial do SSIS**
+ Crie a credencial para o proxy. Para fazer isso, você pode usar o SSMS ou a seguinte instrução SQL.

  ```
  USE [master]
  GO
  CREATE CREDENTIAL [SSIS_Credential] WITH IDENTITY = N'mydomain\user_name', SECRET = N'mysecret'
  GO
  ```
**nota**  
`IDENTITY` deve ser um login autenticado por domínio. Substitua `mysecret` pela senha do login autenticado por domínio.  
Sempre que o host primário do SSISDB for alterado, altere as credenciais de proxy do SSIS para permitir que o novo host as acesse.

**Como criar o proxy do SSIS**

1. Use a seguinte instrução SQL para criar o proxy.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_add_proxy @proxy_name=N'SSIS_Proxy',@credential_name=N'SSIS_Credential',@description=N''
   GO
   ```

1. Use a seguinte instrução SQL para conceder acesso ao proxy para outros usuários.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name=N'SSIS_Proxy',@login_name=N'mydomain\user_name'
   GO
   ```

1. Use a seguinte instrução SQL para dar ao subsistema do SSIS acesso ao proxy.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='GRANT_SUBSYSTEM_ACCESS',@proxy_name='SSIS_Proxy',@proxy_subsystem='SSIS'
   GO
   ```

**Como visualizar o proxy e as concessões no proxy**

1. Use a seguinte instrução SQL para visualizar os beneficiários do proxy.

   ```
   USE [msdb]
   GO
   EXEC sp_help_proxy
   GO
   ```

1. Use a seguinte instrução SQL para visualizar as concessões do subsistema.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_enum_proxy_for_subsystem
   GO
   ```

## Programar um pacote do SSIS usando o SQL Server Agent
<a name="SSIS.Use.Schedule"></a>

Depois de criar a credencial e proxy e conceder ao SSIS acesso ao proxy, você pode criar um trabalho do SQL Server Agent para programar o pacote do SSIS.

**Como programar o pacote do SSIS**
+ Você pode usar SSMS ou T-SQL para criar o trabalho do SQL Server Agent. O exemplo a seguir usa T-SQL.

  ```
  USE [msdb]
  GO
  DECLARE @jobId BINARY(16)
  EXEC msdb.dbo.sp_add_job @job_name=N'MYSSISJob',
  @enabled=1,
  @notify_level_eventlog=0,
  @notify_level_email=2,
  @notify_level_page=2,
  @delete_level=0,
  @category_name=N'[Uncategorized (Local)]',
  @job_id = @jobId OUTPUT
  GO
  EXEC msdb.dbo.sp_add_jobserver @job_name=N'MYSSISJob',@server_name=N'(local)'
  GO
  EXEC msdb.dbo.sp_add_jobstep @job_name=N'MYSSISJob',@step_name=N'ExecuteSSISPackage',
  @step_id=1,
  @cmdexec_success_code=0,
  @on_success_action=1,
  @on_fail_action=2,
  @retry_attempts=0,
  @retry_interval=0,
  @os_run_priority=0,
  @subsystem=N'SSIS',
  @command=N'/ISSERVER "\"\SSISDB\MySSISFolder\MySSISProject\MySSISPackage.dtsx\"" /SERVER "\"my-rds-ssis-instance.corp-ad.company.com/\"" 
  /Par "\"$ServerOption::LOGGING_LEVEL(Int16)\"";1 /Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True /CALLERINFO SQLAGENT /REPORTING E',
  @database_name=N'master',
  @flags=0,
  @proxy_name=N'SSIS_Proxy'
  GO
  ```

## Revogar o acesso do SSIS do proxy
<a name="SSIS.Use.Revoke"></a>

Você pode revogar o acesso ao subsistema do SSIS e excluir o proxy do SSIS usando os seguintes procedimentos armazenados.

**Como revogar o acesso e excluir o proxy**

1. Revogue o acesso ao subsistema.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='REVOKE_SUBSYSTEM_ACCESS',@proxy_name='SSIS_Proxy',@proxy_subsystem='SSIS'
   GO
   ```

1. Revogue as concessões no proxy.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_revoke_login_from_proxy @proxy_name=N'SSIS_Proxy',@name=N'mydomain\user_name'
   GO
   ```

1. Exclua o proxy.

   ```
   USE [msdb]
   GO
   EXEC dbo.sp_delete_proxy @proxy_name = N'SSIS_Proxy'
   GO
   ```

# Desabilitar e descartar o banco de dados do SSIS
<a name="SSIS.DisableDrop"></a>

Siga estas etapas para desabilitar ou descartar bancos de dados do SSIS:

**Topics**
+ [Desabilitar o SSIS](#SSIS.Disable)
+ [Eliminar o banco de dados SSISDB](#SSIS.Drop)

## Desabilitar o SSIS
<a name="SSIS.Disable"></a>

Para desabilitar o SSIS, remova a opção `SSIS` do grupo de opções.

**Importante**  
Remover a opção não exclui o banco de dados SSISDB, portanto, você pode removê-la com segurança sem perder os projetos do SSIS.  
Você pode reativar a opção `SSIS` após a remoção para reutilizar os projetos do SSIS que foram implantados anteriormente no catálogo do SSIS.

### Console
<a name="SSIS.Disable.Console"></a>

O procedimento a seguir remove a opção `SSIS`.

**Como remover a opção SSIS do grupo de opções**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Selecione o grupo de opções com a opção `SSIS` (`ssis-se-2016` nos exemplos anteriores).

1. Selecione **Delete option (Excluir opção)**.

1. Em **Opções de exclusão**, selecione **SSIS** em **Opções a serem excluídas**.

1. Em **Apply immediately (Aplicar imediatamente)**, selecione **Yes (Sim)** para excluir a opção imediatamente ou **No (Não)** para excluí-la na próxima janela de manutenção.

1. Escolha **Excluir**.

### CLI
<a name="SSIS.Disable.CLI"></a>

O procedimento a seguir remove a opção `SSIS`.

**Como remover a opção SSIS do grupo de opções**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds remove-option-from-option-group \
      --option-group-name ssis-se-2016 \
      --options SSIS \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name ssis-se-2016 ^
      --options SSIS ^
      --apply-immediately
  ```

## Eliminar o banco de dados SSISDB
<a name="SSIS.Drop"></a>

Depois de remover a opção SSIS, o banco de dados SSISDB não é excluído. Para descartar o banco de dados SSISDB, use o procedimento `rds_drop_ssis_database` armazenado depois de remover a opção SSIS.

**Como descartar o banco de dados do SSIS**
+ Use o procedimento armazenado a seguir.

  ```
  USE [msdb]
  GO
  EXEC dbo.rds_drop_ssis_database
  GO
  ```

Depois de descartar o banco de dados SSISDB, se você reativar a opção SSIS, obterá um novo catálogo do SSISDB.

# Suporte para SQL Server Reporting Services no Amazon RDS for SQL Server
<a name="Appendix.SQLServer.Options.SSRS"></a>

O Microsoft SQL Server Reporting Services (SSRS) é um aplicativo baseado em servidor usado para geração e distribuição de relatórios. Ele faz parte de um conjunto de serviços do SQL Server que também inclui o SQL Server Analysis Services (SSAS) e o SQL Server Integration Services (SSIS). O SSRS é um serviço criado com base no SQL Server. É possível usá-lo para coletar dados de várias fontes de dados e apresentá-los de uma forma facilmente compreensível e pronta para análise.

O Amazon RDS for SQL Server oferece suporte à execução de SSRS diretamente em instâncias de banco de dados do RDS. Você pode usar o SSRS em instâncias de banco de dados novas ou existentes.

O RDS oferece suporte ao SSRS para as edições Standard e Enterprise do SQL Server nas seguintes versões:
+ SQL Server 2022, todas as versões
+ Versão 15.00.4043.16.v1 e posterior do SQL Server 2019
+ Versão 14.00.3223.3.v1 e posterior do SQL Server 2017
+ SQL Server 2016, versão 13.00.5820.21.v1 e posteriores

**Contents**
+ [Limitações e recomendações](#SSRS.Limitations)
+ [Ativar o SSRS](SSRS.Enabling.md)
  + [Criar um grupo de opções para o SSRS](SSRS.Enabling.md#SSRS.OptionGroup)
  + [Adicionar a opção SSRS ao grupo de opções](SSRS.Enabling.md#SSRS.Add)
  + [Associar o grupo de opções à instância de banco de dados](SSRS.Enabling.md#SSRS.Apply)
  + [Como conceder acesso de entrada ao grupo de segurança da VPC](SSRS.Enabling.md#SSRS.Inbound)
+ [Bancos de dados do servidor de relatórios](#SSRS.DBs)
+ [Arquivos de log do SSRS](#SSRS.Logs)
+ [Acessar o portal da Web do SSRS](SSRS.Access.md)
  + [Como usar SSL no RDS](SSRS.Access.md#SSRS.Access.SSL)
  + [Conceder acesso a usuários de domínio](SSRS.Access.md#SSRS.Access.Grant)
  + [Acessar o portal da Web](SSRS.Access.md#SSRS.Access)
+ [Implantação de relatórios e configuração de fontes de dados de relatórios](SSRS.DeployConfig.md)
  + [Implantar relatórios no SSRS](SSRS.DeployConfig.md#SSRS.Deploy)
  + [Configurar a fonte de dados de relatórios](SSRS.DeployConfig.md#SSRS.ConfigureDataSource)
+ [Como usar o SSRS Email para enviar relatórios](SSRS.Email.md)
+ [Revogar permissões no nível do sistema](SSRS.Access.Revoke.md)
+ [Monitorar o status de uma tarefa](SSRS.Monitor.md)
+ [Desabilitar e excluir bancos de dados do SSRS](SSRS.DisableDelete.md)
  + [Desativar o SSRS](SSRS.DisableDelete.md#SSRS.Disable)
  + [Excluir os bancos de dados do SSRS](SSRS.DisableDelete.md#SSRS.Drop)

## Limitações e recomendações
<a name="SSRS.Limitations"></a>

As seguintes limitações e recomendações aplicam-se à execução do SSRS no RDS for SQL Server:
+ Você não pode usar SSRS em instâncias de banco de dados que tenham réplicas de leitura.
+ As instâncias devem usar o Active Directory autogerenciado ou AWS Directory Service for Microsoft Active Directory para o portal da web do SSRS e a autenticação de servidor web. Para ter mais informações, consulte [Trabalhar com o Active Directory com o RDS para SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md). 
+ Não é possível fazer backup dos bancos de dados do servidor de relatórios criados com a opção SSRS.
+ Não há suporte para importar e restaurar bancos de dados do servidor de relatório de outras instâncias do SSRS. Para ter mais informações, consulte [Bancos de dados do servidor de relatórios](#SSRS.DBs).
+ Não é possível configurar o SSRS para escutar na porta SSL padrão (443). Os valores permitidos são 1150–49511, exceto 1234, 1434, 3260, 3343, 3389 e 47001.
+ Não há suporte para assinaturas por compartilhamento de arquivos do Microsoft Windows.
+ Não há suporte para o uso do Gerenciador de configuração do Reporting Services.
+ Não há suporte para a criação e a modificação de funções.
+ Não há suporte para a modificação das propriedades do servidor de relatório.
+ Não são concedidas funções de administrador e usuário do sistema.
+ Não é possível editar atribuições de função no nível do sistema pelo portal da web.

# Ativar o SSRS
<a name="SSRS.Enabling"></a>

Use o seguinte processo para ativar o SSRS para a instância de banco de dados:

1. Crie um grupo de opções ou selecione um existente.

1. Adicione a opção `SSRS` ao grupo de opções.

1. Associe o grupo de opções à instância de banco de dados.

1. Conceda acesso de entrada ao grupo de segurança da nuvem privada virtual (VPC) para a porta do listener do SSRS.

## Criar um grupo de opções para o SSRS
<a name="SSRS.OptionGroup"></a>

Para trabalhar com o SSRS, crie um grupo de opções que corresponda à versão e ao mecanismo do SQL Server da instância de banco de dados que você planeja usar. Para fazer isso, use o Console de gerenciamento da AWS ou a AWS CLI. 

**nota**  
Também é possível usar um grupo de opções existente se ele for para a versão e o mecanismo e corretos do SQL Server.

### Console
<a name="SSRS.OptionGroup.Console"></a>

O procedimento a seguir cria um grupo de opções para o SQL Server Standard Edition 2017.

**Como criar o grupo de opções**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Escolha **Create group (Criar grupo)**.

1. No painel **Create option group (Criar grupo de opções)**, faça o seguinte:

   1. Em **Name** (Nome), insira um nome para o grupo de opções que seja exclusivo na sua Conta da AWS, como **ssrs-se-2017**. O nome pode conter somente letras, números e hifens.

   1. Em **Descrição**, insira uma breve descrição do grupo de opções, como **SSRS option group for SQL Server SE 2017**. A descrição é usada para fins de exibição.

   1. Em **Engine (Mecanismo)**, selecione **sqlserver-se**.

   1. Em **Major engine version (Versão principal do mecanismo)**, selecione **14.00**.

1. Escolha **Criar**.

### CLI
<a name="SSRS.OptionGroup.CLI"></a>

O procedimento a seguir cria um grupo de opções para o SQL Server Standard Edition 2017.

**Como criar o grupo de opções**
+ Execute um dos seguintes comandos:

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

```
aws rds create-option-group \
    --option-group-name ssrs-se-2017 \
    --engine-name sqlserver-se \
    --major-engine-version 14.00 \
    --option-group-description "SSRS option group for SQL Server SE 2017"
```
Para Windows:  

```
aws rds create-option-group ^
    --option-group-name ssrs-se-2017 ^
    --engine-name sqlserver-se ^
    --major-engine-version 14.00 ^
    --option-group-description "SSRS option group for SQL Server SE 2017"
```

## Adicionar a opção SSRS ao grupo de opções
<a name="SSRS.Add"></a>

Depois, use o Console de gerenciamento da AWS ou a AWS CLI para adicionar a opção `SSRS` ao grupo de opções.

### Console
<a name="SSRS.Add.CON"></a>

**Como adicionar a opção SSRS**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Selecione o grupo de opções que você acabou de criar, depois escolha **Add Option** (Adicionar opção).

1. Em **Detalhes da opção**, selecione **SSRS** em **Nome da opção**.

1. Em **Configurações de opção**, faça o seguinte:

   1. Insira a porta de escuta do serviço SSRS. O padrão é 8443. Para obter uma lista de valores permitidos, consulte [Limitações e recomendações](Appendix.SQLServer.Options.SSRS.md#SSRS.Limitations).

   1. Insira um valor em **Máximo de memória**.

      O **Máximo de memória** especifica o limite superior acima do qual não são concedidas novas solicitações de alocação de memória aos aplicativos do servidor de relatório. O número é uma porcentagem da memória total da instância de banco de dados. Os valores permitidos são de 10 a 80.

   1. Em **Security groups (Grupos de segurança)**, selecione o grupo de segurança da VPC a ser associado à opção. Use o mesmo grupo de segurança associado à instância de banco de dados.

1. Para usar o SSRS Email para enviar relatórios, marque a caixa de seleção **Configure email delivery options** (Configurar opções de entrega por e-mail) em **Email delivery in reporting services** (Entrega por e-mail em serviços de relatórios), depois faça o seguinte:

   1. Para **Sender email address** (Endereço de e-mail do remetente), insira o endereço de e-mail a ser usado no campo **From** (De) das mensagens enviadas pelo SSRS Email.

      Especifique uma conta de usuário que tenha permissão para enviar e-mails do servidor SMTP.

   1. Para **SMTP server** (Servidor SMTP), especifique o gateway ou servidor SMTP a ser usado.

      Pode ser um endereço IP, o nome NetBIOS de um computador na intranet corporativa ou um nome de domínio totalmente qualificado.

   1. Para **SMTP port** (Porta SMTP), insira a porta a ser usada para se conectar ao servidor de e-mail. O padrão é 25.

   1. Para usar a autenticação:

      1. Marque a caixa de seleção **Use authentication** (Usar autenticação).

      1. Para **Secret Amazon Resource Name (ARN)** (Nome do recurso da Amazon (ARN) do segredo), insira o ARN do AWS Secrets Manager para as credenciais do usuário.

         Use o formato a seguir:

         **arn:aws:secretsmanager:*Region*:*AccountId*:secret:*SecretName*-*6RandomCharacters***

         Por exemplo: 

         **arn:aws:secretsmanager:*us-west-2*:*123456789012*:secret:*MySecret-a1b2c3***

         Para obter mais informações sobre como criar o segredo, consulte [Como usar o SSRS Email para enviar relatórios](SSRS.Email.md).

   1. Marque a caixa de seleção **Use Secure Sockets Layer (SSL)** [Usar Secure Sockets Layer (SSL)] para criptografar as mensagens de e-mail usando SSL.

1. Em **Scheduling (Programação)**, escolha se deseja adicionar a opção imediatamente ou na próxima janela de manutenção.

1. Escolha **Add option (Adicionar opção)**.

### CLI
<a name="SSRS.Add.CLI"></a>

**Como adicionar a opção SSRS**

1. Crie um arquivo JSON; por exemplo, `ssrs-option.json`.

   1. Defina os seguintes parâmetros necessários:
      + `OptionGroupName` – O nome do grupo de opções que você criou ou selecionou anteriormente (`ssrs-se-2017` no exemplo a seguir).
      + `Port` – A porta de escuta do serviço SSRS. O padrão é 8443. Para obter uma lista de valores permitidos, consulte [Limitações e recomendações](Appendix.SQLServer.Options.SSRS.md#SSRS.Limitations).
      + `VpcSecurityGroupMemberships` – Associações de grupos de segurança da VPC para a instância de banco de dados do RDS.
      + `MAX_MEMORY` – O limite superior acima do qual não são concedidas novas solicitações de alocação de memória aos aplicativos do servidor de relatório. O número é uma porcentagem da memória total da instância de banco de dados. Os valores permitidos são de 10 a 80.

   1. (Opcional) Defina os seguintes parâmetros para usar o SSRS Email:
      + `SMTP_ENABLE_EMAIL`: defina como `true` para usar o SSRS Email. O padrão é `false`.
      + `SMTP_SENDER_EMAIL_ADDRESS`: o endereço de e-mail a ser usado no campo **From** (De) das mensagens enviadas pelo SSRS Email. Especifique uma conta de usuário que tenha permissão para enviar e-mails do servidor SMTP.
      + `SMTP_SERVER`: o gateway ou servidor SMTP a ser usado. Pode ser um endereço IP, o nome NetBIOS de um computador na intranet corporativa ou um nome de domínio totalmente qualificado.
      + `SMTP_PORT`: a porta a ser usada para se conectar ao servidor de e-mail. O padrão é 25.
      + `SMTP_USE_SSL`: defina como `true` para criptografar as mensagens de e-mail usando SSL. O padrão é `true`.
      + `SMTP_EMAIL_CREDENTIALS_SECRET_ARN`: o ARN do Secrets Manager que contém as credenciais do usuário. Use o formato a seguir:

        **arn:aws:secretsmanager:*Region*:*AccountId*:secret:*SecretName*-*6RandomCharacters***

        Para obter mais informações sobre como criar o segredo, consulte [Como usar o SSRS Email para enviar relatórios](SSRS.Email.md).
      + `SMTP_USE_ANONYMOUS_AUTHENTICATION`: defina como `true` e não inclua `SMTP_EMAIL_CREDENTIALS_SECRET_ARN` se não quiser usar a autenticação.

        O padrão é `false` quando `SMTP_ENABLE_EMAIL` é `true`.

   O exemplo a seguir inclui os parâmetros de SSRS Email usando o ARN do segredo.

   ```
   {
   "OptionGroupName": "ssrs-se-2017",
   "OptionsToInclude": [
   	{
   	"OptionName": "SSRS",
   	"Port": 8443,
   	"VpcSecurityGroupMemberships": ["sg-0abcdef123"],
   	"OptionSettings": [
               {"Name": "MAX_MEMORY","Value": "60"},
               {"Name": "SMTP_ENABLE_EMAIL","Value": "true"}
               {"Name": "SMTP_SENDER_EMAIL_ADDRESS","Value": "nobody@example.com"},
               {"Name": "SMTP_SERVER","Value": "email-smtp.us-west-2.amazonaws.com"},
               {"Name": "SMTP_PORT","Value": "25"},
               {"Name": "SMTP_USE_SSL","Value": "true"},
               {"Name": "SMTP_EMAIL_CREDENTIALS_SECRET_ARN","Value": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-a1b2c3"}
               ]
   	}],
   "ApplyImmediately": true
   }
   ```

1. Adicione a opção `SSRS` ao grupo de opções.  
**Example**  

   Para Linux, macOS ou Unix:

   ```
   aws rds add-option-to-option-group \
       --cli-input-json file://ssrs-option.json \
       --apply-immediately
   ```

   Para Windows:

   ```
   aws rds add-option-to-option-group ^
       --cli-input-json file://ssrs-option.json ^
       --apply-immediately
   ```

## Associar o grupo de opções à instância de banco de dados
<a name="SSRS.Apply"></a>

Use o Console de gerenciamento da AWS ou a AWS CLI para associar o grupo de opções à instância de banco de dados.

Se você usar uma instância de banco de dados existente, ela já deverá ter um domínio do Active Directory e uma função do AWS Identity and Access Management (IAM) associados a ela. Se você criar uma nova instância, especifique um domínio do Active Directory e uma função do IAM existentes. Para obter mais informações, consulte [Trabalhar com o Active Directory com o RDS para SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).

### Console
<a name="SSRS.Apply.Console"></a>

É possível associar o grupo de opções a uma instância de banco de dados nova ou existente:
+ Para uma nova instância de banco de dados, associe o grupo de opções ao executar a instância. Para obter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).
+ Para uma instância de banco de dados existente, modifique a instância e associe o novo grupo de opções. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).

### CLI
<a name="SSRS.Apply.CLI"></a>

É possível associar o grupo de opções a uma instância de banco de dados nova ou existente.

**Como criar uma instância de banco de dados que usa o grupo de opções**
+ Especifique o mesmo tipo de mecanismo de banco de dados e a versão principal que você usou ao criar o grupo de opções.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier myssrsinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 14.00.3223.3.v1 \
      --allocated-storage 100 \
      --manage-master-user-password  \
      --master-username admin \
      --storage-type gp2 \
      --license-model li \
      --domain-iam-role-name my-directory-iam-role \
      --domain my-domain-id \
      --option-group-name ssrs-se-2017
  ```

  Para Windows:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier myssrsinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 14.00.3223.3.v1 ^
      --allocated-storage 100 ^
      --manage-master-user-password ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --domain-iam-role-name my-directory-iam-role ^
      --domain my-domain-id ^
      --option-group-name ssrs-se-2017
  ```

**Como modificar uma instância de banco de dados para usar o grupo de opções**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier myssrsinstance \
      --option-group-name ssrs-se-2017 \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier myssrsinstance ^
      --option-group-name ssrs-se-2017 ^
      --apply-immediately
  ```

## Como conceder acesso de entrada ao grupo de segurança da VPC
<a name="SSRS.Inbound"></a>

Para permitir o acesso de entrada ao grupo de segurança da VPC associado à instância de banco de dados, crie uma regra de entrada para a porta especificada do listener do SSRS. Para obter mais informações sobre como configurar um grupo de segurança, consulte [Fornecer acesso à instância de banco de dados na VPC criando um grupo de segurança](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup).

## Bancos de dados do servidor de relatórios
<a name="SSRS.DBs"></a>

Quando a instância de banco de dados está associada à opção SSRS, dois novos bancos de dados são criados na instância de banco de dados:
+ `rdsadmin_ReportServer`
+ `rdsadmin_ReportServerTempDB`

Esses bancos de dados atuam como os bancos de dados ReportServer e ReportServerTempDB. O SSRS armazena os dados no banco de dados ReportServer e armazena em cache os dados no banco de dados ReportServerTempDB. Para obter mais informações, consulte [Bancos de dados do servidor de relatórios](https://learn.microsoft.com/en-us/sql/reporting-services/report-server/report-server-database-ssrs-native-mode?view=sql-server-ver15).

O RDS possui e gerencia esses bancos de dados, portanto, não são permitidas operações de banco de dados neles, como ALTER e DROP. O acesso não é permitido no banco de dados `rdsadmin_ReportServerTempDB`. No entanto, é possível executar operações de leitura no banco de dados `rdsadmin_ReportServer`.

## Arquivos de log do SSRS
<a name="SSRS.Logs"></a>

É possível listar, visualizar e baixar arquivos de log do SSRS. Os arquivos de log do SSRS seguem uma convenção de nomenclatura de ReportServerService\$1*timestamp*.log. Esses logs do servidor de relatórios podem ser encontrados no diretório `D:\rdsdbdata\Log\SSRS`. (O diretório `D:\rdsdbdata\Log` também é o diretório pai dos logs de erros e dos logs do SQL Server Agent.) Para ter mais informações, consulte [Como visualizar e listar arquivos de log do banco de dados](USER_LogAccess.Procedural.Viewing.md).

Para instâncias SSRS existentes, a reinicialização do serviço SSRS pode ser necessária para acessar os logs do servidor de relatório. É possível reiniciar o serviço atualizando a opção `SSRS`.

Para obter mais informações, consulte[Trabalhar com logs do Amazon RDS para Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.Logs.md)

# Acessar o portal da Web do SSRS
<a name="SSRS.Access"></a>

Use o seguinte processo para acessar o portal da web do SSRS:

1. Ative o Secure Sockets Layer (SSL).

1. Conceda acesso a usuários de domínio.

1. Acesse o portal da web usando um navegador e as credenciais do usuário do domínio.

## Como usar SSL no RDS
<a name="SSRS.Access.SSL"></a>

O SSRS usa o protocolo SSL HTTPS para as conexões. Para trabalhar com este protocolo, importe um certificado SSL para o sistema operacional Microsoft Windows no computador cliente.

Para obter mais informações sobre certificados SSL, consulte [Usar SSL/TLS para criptografar uma conexão com uma instância ou um cluster de banco de dados](UsingWithRDS.SSL.md). Para obter mais informações sobre como usar o SSL com o SQL Server, consulte [Uso do SSL com uma instância de banco de dados do Microsoft SQL Server](SQLServer.Concepts.General.SSL.Using.md).

## Conceder acesso a usuários de domínio
<a name="SSRS.Access.Grant"></a>

Em uma nova ativação do SSRS, não há atribuições de função no SSRS. Para conceder a um usuário de domínio ou um grupo de usuários acesso ao portal da web, o RDS fornece um procedimento armazenado.

**Como conceder acesso a um usuário de domínio no portal da web**
+ Use o procedimento armazenado a seguir.

  ```
  exec msdb.dbo.rds_msbi_task
  @task_type='SSRS_GRANT_PORTAL_PERMISSION',
  @ssrs_group_or_username=N'AD_domain\user';
  ```

O usuário de domínio ou o grupo de usuários recebe a função `RDS_SSRS_ROLE` do sistema. Esta função tem as seguintes tarefas no nível do sistema concedidas a ela:
+ Executar relatórios
+ Gerenciar trabalhos
+ Gerenciar agendas compartilhadas
+ Visualizar agendas compartilhadas

A função no nível do item de `Content Manager` na pasta raiz também é concedida.

## Acessar o portal da Web
<a name="SSRS.Access"></a>

Depois que a tarefa `SSRS_GRANT_PORTAL_PERMISSION` for concluída com êxito, você terá acesso ao portal usando um navegador da web. O URL do portal da web tem o formato a seguir.

```
https://rds_endpoint:port/Reports
```

Neste formato, aplica-se o seguinte item:
+ *`rds_endpoint`* – o endpoint para a instância de banco de dados do RDS que você está usando com o SSRS.

  É possível encontrar o endpoint na guia **Conectividade e segurança** da instância de banco de dados. Para obter mais informações, consulte [Conectar-se à instância de banco de dados do Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md).
+ `port` – A porta do listener para o SSRS definida na opção `SSRS`.

**Como acessar o portal da web**

1. Insira o URL do portal da web no navegador.

   ```
   https://myssrsinstance.cg034itsfake.us-east-1.rds.amazonaws.com:8443/Reports
   ```

1. Faça login com as credenciais de um usuário de domínio ao qual você concedeu acesso com a tarefa `SSRS_GRANT_PORTAL_PERMISSION`.

# Implantação de relatórios e configuração de fontes de dados de relatórios
<a name="SSRS.DeployConfig"></a>

Use os procedimentos a seguir para implantar relatórios no SSRS e configurar as fontes de dados de relatórios:

**Topics**
+ [Implantar relatórios no SSRS](#SSRS.Deploy)
+ [Configurar a fonte de dados de relatórios](#SSRS.ConfigureDataSource)

## Implantar relatórios no SSRS
<a name="SSRS.Deploy"></a>

Após ter acesso ao portal da web, você poderá implantar relatórios nele. É possível usar a ferramenta de upload no portal da web para fazer upload de relatórios ou implantar diretamente do [SQL Server Data Tools (SSDT)](https://docs.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt). Ao implantar pelo SSDT, verifique o seguinte:
+ O usuário que executou o SSDT tem acesso ao portal da web do SSRS.
+ O valor `TargetServerURL` nas propriedades do projeto do SSRS é definido como o endpoint HTTPS da instância de banco de dados do RDS com o sufixo `ReportServer`, por exemplo:

  ```
  https://myssrsinstance.cg034itsfake.us-east-1.rds.amazonaws.com:8443/ReportServer
  ```

## Configurar a fonte de dados de relatórios
<a name="SSRS.ConfigureDataSource"></a>

Depois de implantar um relatório no SSRS, você deve configurar a fonte de dados do relatório. Ao configurar a fonte de dados do relatório, assegure-se do seguinte:
+ Para instâncias de banco de dados do RDS para SQL Server associadas ao AWS Directory Service for Microsoft Active Directory, use o nome de domínio totalmente qualificado (FQDN) como o nome da fonte de dados da string de conexão. Um exemplo é `myssrsinstance.corp-ad.example.com`, onde `myssrsinstance` é o nome da instância de banco de dados e `corp-ad.example.com` é o nome de domínio totalmente qualificado. 
+ Para instâncias de banco de dados do RDS para SQL Server associadas ao Active Directory autogerenciado, use `.` ou `LocalHost` como o nome da fonte de dados da string de conexão.

# Como usar o SSRS Email para enviar relatórios
<a name="SSRS.Email"></a>

O SSRS inclui a extensão SSRS Email que pode ser usada para enviar relatórios aos usuários.

Para configurar o SSRS Email, use as configurações de opções do `SSRS`. Para obter mais informações, consulte [Adicionar a opção SSRS ao grupo de opções](SSRS.Enabling.md#SSRS.Add).

Depois de configurar o SSRS Email, você pode assinar relatórios no servidor de relatórios. Para obter mais informações, consulte [Entrega de email no Reporting Services](https://docs.microsoft.com/en-us/sql/reporting-services/subscriptions/e-mail-delivery-in-reporting-services) na documentação da Microsoft.

A integração com o AWS Secrets Manager é necessária para que o SSRS Email funcione no RDS. Para realizar a integração com o Secrets Manager, crie um segredo.

**nota**  
Se você alterar o segredo posteriormente, também precisará atualizar a opção `SSRS` no grupo de opções.

**Como criar um segredo para o SSRS Email**

1. Siga as etapas em [Criar um segredo](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) no *Guia do usuário do AWS Secrets Manager*.

   1. Em **Selecionar Tipo de Segredo**, selecione **Outro Tipo de Segredo**.

   1. Para **Key/value pairs** (Pares de chave/valor), insira o seguinte:
      + **SMTP\$1USERNAME**: insira um usuário com permissão para enviar e-mails do servidor SMTP.
      + **SMTP\$1PASSWORD**: insira uma senha para o usuário do SMTP.

   1. Para **Encryption key** (Chave de criptografia), não use o padrão AWS KMS key. Use sua própria chave existente ou crie uma chave.

      A política de chaves do KMS deve permitir que a ação `kms:Decrypt`, por exemplo:

      ```
      {
          "Sid": "Allow use of the key",
          "Effect": "Allow",
          "Principal": {
              "Service": [
                  "rds.amazonaws.com"
              ]
          },
          "Action": [
              "kms:Decrypt"
          ],
          "Resource": "*"
      }
      ```

1. Siga as etapas em [Anexar uma política de permissões a um segredo](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_resource-policies.html) no *Guia do usuário do AWS Secrets Manager*. A política de permissões fornece a ação `secretsmanager:GetSecretValue` à entidade principal do serviço `rds.amazonaws.com`.

   Recomendamos que você use as condições `aws:sourceAccount` e `aws:sourceArn` na política para evitar o problema de *representante confuso*. Use sua Conta da AWS para `aws:sourceAccount` e o ARN do grupo de opções para `aws:sourceArn`. Para obter mais informações, consulte [Prevenção do problema do substituto confuso entre serviços](cross-service-confused-deputy-prevention.md).

   A seguir, um exemplo de uma política de permissões.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement" : [ {
       "Effect" : "Allow",
       "Principal" : {
         "Service" : "rds.amazonaws.com"
       },
       "Action" : "secretsmanager:GetSecretValue",
       "Resource" : "*",
       "Condition" : {
         "StringEquals" : {
           "aws:sourceAccount" : "123456789012"
         },
         "ArnLike" : {
           "aws:sourceArn" : "arn:aws:rds:us-west-2:123456789012:og:ssrs-se-2017"
         }
       }
     } ]
   }
   ```

------

   Para obter mais exemplos, consulte [Exemplos de políticas de permissões para o AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html) no *Guia do usuário do AWS Secrets Manager*.

# Revogar permissões no nível do sistema
<a name="SSRS.Access.Revoke"></a>

A função `RDS_SSRS_ROLE` do sistema não tem permissões suficientes para excluir atribuições de função no nível do sistema. Para remover um usuário ou um grupo de usuários da `RDS_SSRS_ROLE`, use o mesmo procedimento armazenado que você usou para conceder a função, mas use o tipo de tarefa `SSRS_REVOKE_PORTAL_PERMISSION`.

**Como revogar o acesso de um usuário de domínio para o portal da web**
+ Use o procedimento armazenado a seguir.

  ```
  exec msdb.dbo.rds_msbi_task
  @task_type='SSRS_REVOKE_PORTAL_PERMISSION',
  @ssrs_group_or_username=N'AD_domain\user';
  ```

Fazer isso exclui o usuário da função `RDS_SSRS_ROLE` do sistema. Se o usuário tiver uma, isso também o exclui da função `Content Manager` no nível do item.

# Monitorar o status de uma tarefa
<a name="SSRS.Monitor"></a>

Para acompanhar o status da tarefa de concessão ou revogação, chame a função `rds_fn_task_status`. Ela leva dois parâmetros. O primeiro parâmetro sempre deve ser `NULL` porque ele não se aplica ao SSRS. O segundo parâmetro aceita um ID de tarefa. 

Para ver uma lista de todas as tarefas, defina o primeiro parâmetro como `NULL` e o segundo parâmetro como `0`, conforme mostrado no seguinte exemplo.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,0);
```

Para obter uma tarefa específica, defina o primeiro parâmetro como `NULL` e o segundo parâmetro como o ID da tarefa, conforme mostrado no exemplo a seguir.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,42);
```

A função `rds_fn_task_status` retorna as informações a seguir.


| Parâmetro de saída | Descrição | 
| --- | --- | 
| `task_id` | O ID da tarefa. | 
| `task_type` | No SSRS, as tarefas podem ter os seguintes tipos de tarefa: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/SSRS.Monitor.html)  | 
| `database_name` | Não aplicável a tarefas do SSRS. | 
| `% complete` | O progresso da tarefa em porcentagem. | 
| `duration (mins)` | A quantidade de tempo gasta na tarefa, em minutos. | 
| `lifecycle` |  O status da tarefa. Os possíveis status são os seguintes: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/SSRS.Monitor.html)  | 
| `task_info` | Informações adicionais sobre a tarefa. Se um erro ocorrer durante o processamento, essa coluna conterá informações sobre o erro.  | 
| `last_updated` | A data e hora em que o status da tarefa foi atualizado pela última vez.  | 
| `created_at` | A data e hora em que a tarefa foi criada. | 
| `S3_object_arn` |  Não aplicável a tarefas do SSRS.  | 
| `overwrite_S3_backup_file` | Não aplicável a tarefas do SSRS. | 
| `KMS_master_key_arn` |  Não aplicável a tarefas do SSRS.  | 
| `filepath` |  Não aplicável a tarefas do SSRS.  | 
| `overwrite_file` |  Não aplicável a tarefas do SSRS.  | 
| `task_metadata` | Metadados associados à tarefa do SSRS. | 

# Desabilitar e excluir bancos de dados do SSRS
<a name="SSRS.DisableDelete"></a>

Use os seguintes procedimentos para desabilitar o SSRS e excluir bancos de dados do SSRS:

**Topics**
+ [Desativar o SSRS](#SSRS.Disable)
+ [Excluir os bancos de dados do SSRS](#SSRS.Drop)

## Desativar o SSRS
<a name="SSRS.Disable"></a>

Para desativar o SSRS, remova a opção `SSRS` do grupo de opções. Remover a opção não exclui os bancos de dados do SSRS. Para ter mais informações, consulte [Excluir os bancos de dados do SSRS](#SSRS.Drop).

Você pode ativar o SSRS novamente adicionando a opção `SSRS` de volta. Se você também excluiu os bancos de dados do SSRS, adicionar novamente a opção na mesma instância de banco de dados criará novos bancos de dados do servidor de relatórios.

### Console
<a name="SSRS.Disable.Console"></a>

**Como remover a opção SSRS do grupo de opções**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Selecione o grupo de opções com a opção `SSRS` (`ssrs-se-2017` nos exemplos anteriores).

1. Selecione **Delete option (Excluir opção)**.

1. Em **Opções de exclusão**, selecione **SSRS** em **Opções a serem excluídas**.

1. Em **Apply immediately (Aplicar imediatamente)**, selecione **Yes (Sim)** para excluir a opção imediatamente ou **No (Não)** para excluí-la na próxima janela de manutenção.

1. Escolha **Excluir**.

### CLI
<a name="SSRS.Disable.CLI"></a>

**Como remover a opção SSRS do grupo de opções**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds remove-option-from-option-group \
      --option-group-name ssrs-se-2017 \
      --options SSRS \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name ssrs-se-2017 ^
      --options SSRS ^
      --apply-immediately
  ```

## Excluir os bancos de dados do SSRS
<a name="SSRS.Drop"></a>

Remover a opção `SSRS` não exclui os bancos de dados do servidor de relatório. Para excluí-los, use o procedimento armazenado a seguir. 

Para excluir os bancos de dados do servidor de relatório, certifique-se de remover a opção `SSRS` primeiro.

**Como excluir os bancos de dados do SSRS**
+ Use o procedimento armazenado a seguir.

  ```
  exec msdb.dbo.rds_drop_ssrs_databases
  ```

# Suporte para o Microsoft Distributed Transaction Coordinator no RDS for SQL Server
<a name="Appendix.SQLServer.Options.MSDTC"></a>

Uma *transação distribuída* é uma transação de banco de dados na qual dois ou mais hosts de rede estão envolvidos. O Amazon RDS for SQL Server oferece suporte a transações distribuídas entre hosts. Um host único pode ser o seguinte:
+ Instância de banco de dados do RDS for SQL Server
+ Host do SQL Server no local
+ O host do Amazon EC2 com o SQL Server instalado
+ Qualquer outro host do EC2 ou instância de banco de dados do RDS com um mecanismo de banco de dados que ofereça suporte a transações distribuídas

No RDS, a começar pelo SQL Server 2012 (versão 11.00.5058.0.v1 e posterior), todas as edições do RDS for SQL Server oferecem suporte a transações distribuídas. O suporte é fornecido usando o MSDTC (Microsoft Distributed Transaction Coordinator). Para obter informações detalhadas sobre o MSDTC, consulte [Distributed Transaction Coordinator](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms684146(v=vs.85)) na documentação da Microsoft.

**Contents**
+ [Limitações](#Appendix.SQLServer.Options.MSDTC.Limitations)
+ [Habilitar o MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md)
  + [Criar o grupo de opções para o MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.OptionGroup)
  + [Adicionar a opção do MSDTC ao grupo de opções](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Add)
  + [Criar o grupo de parâmetros para o MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.CreateParamGroup)
  + [Modificar o parâmetro para o MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC)
  + [Associar o grupo de opções e o grupo de parâmetros à instância de banco de dados.](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.Apply)
  + [Modificar a opção do MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Modify)
+ [Usar transações](#Appendix.SQLServer.Options.MSDTC.Using)
  + [Usar transações distribuídas](#Appendix.SQLServer.Options.MSDTC.UsingXA)
  + [Como usar transações XA](#MSDTC.XA)
  + [Usar rastreamento de transações](#MSDTC.Tracing)
+ [Desabilitar o MSDTC](Appendix.SQLServer.Options.MSDTC.Disable.md)
+ [Solução de problemas do MSDTC para o RDS for SQL Server](Appendix.SQLServer.Options.MSDTC.Troubleshooting.md)

## Limitações
<a name="Appendix.SQLServer.Options.MSDTC.Limitations"></a>

As seguintes limitações se aplicam ao uso do MSDTC no RDS for SQL Server:
+ Não há suporte para o MSDTC em instâncias que usam o SQL Server Database Mirroring. Para obter mais informações, consulte [Transações – grupos de disponibilidade e espelhamento de banco de dados](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/transactions-always-on-availability-and-database-mirroring?view=sql-server-ver15#non-support-for-distributed-transactions).
+ O parâmetro `in-doubt xact resolution` deve ser definido como 1 ou 2. Para obter mais informações, consulte [Modificar o parâmetro para o MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC).
+ O MSDTC requer que todos os hosts participantes em transações distribuídas sejam resolvidos usando os nomes de host. O RDS mantém automaticamente essa funcionalidade para instâncias associadas ao domínio. No entanto, para instâncias autônomas, configure o servidor DNS manualmente.
+ As transações XA do Java Database Connectivity (JDBC) são compatíveis com a versão 14.00.3223.3 e superior do SQL Server 2017 e o SQL Server 2019.
+ Não há suporte para transações distribuídas que dependem de bibliotecas de links dinâmicos (DLLs) do cliente em instâncias do RDS.
+ Não há suporte para o uso de bibliotecas de links dinâmicos XA personalizadas.

# Habilitar o MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Enabling"></a>

Use o seguinte processo para habilitar o MSDTC para a instância de banco de dados:

1. Crie um grupo de opções ou selecione um existente.

1. Adicione a opção `MSDTC` ao grupo de opções.

1. Crie um novo grupo de parâmetros ou escolha um existente.

1. Modifique o grupo de parâmetros para definir o parâmetro `in-doubt xact resolution` como 1 ou 2.

1. Associe o grupo de opções e o grupo de parâmetros à instância de banco de dados.

## Criar o grupo de opções para o MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.OptionGroup"></a>

Use o Console de gerenciamento da AWS ou a AWS CLI para criar um grupo de opções que corresponda à versão e ao mecanismo do SQL Server da instância de banco de dados.

**nota**  
Também é possível usar um grupo de opções existente se ele for para a versão e o mecanismo e corretos do SQL Server.

### Console
<a name="OptionGroup.MSDTC.Console"></a>

O procedimento a seguir cria um grupo de opções para o SQL Server Standard Edition 2016.

**Como criar o grupo de opções**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Escolha **Create group (Criar grupo)**.

1. No painel **Create option group (Criar grupo de opções)**, faça o seguinte:

   1. Em **Name** (Nome), insira um nome para o grupo de opções que seja exclusivo na sua conta da AWS, como **msdtc-se-2016**. O nome pode conter somente letras, números e hifens.

   1. Em **Descrição**, insira uma breve descrição do grupo de opções, como **MSDTC option group for SQL Server SE 2016**. A descrição é usada para fins de exibição. 

   1. Em **Engine (Mecanismo)**, selecione **sqlserver-se**.

   1. Em **Versão do mecanismo principal**, selecione **13.00**.

1. Escolha **Criar**.

### CLI
<a name="OptionGroup.MSDTC.CLI"></a>

O exemplo a seguir cria um grupo de opções para o SQL Server Standard Edition 2016.

**Como criar o grupo de opções**
+ Use um dos seguintes comandos.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds create-option-group \
      --option-group-name msdtc-se-2016 \
      --engine-name sqlserver-se \
      --major-engine-version 13.00 \
      --option-group-description "MSDTC option group for SQL Server SE 2016"
  ```

  Para Windows:

  ```
  aws rds create-option-group ^
      --option-group-name msdtc-se-2016 ^
      --engine-name sqlserver-se ^
      --major-engine-version 13.00 ^
      --option-group-description "MSDTC option group for SQL Server SE 2016"
  ```

## Adicionar a opção do MSDTC ao grupo de opções
<a name="Appendix.SQLServer.Options.MSDTC.Add"></a>

Depois, use o Console de gerenciamento da AWS ou a AWS CLI para adicionar a opção `MSDTC` ao grupo de opções.

São necessárias as seguintes configurações de opção:
+ **Porta** – a porta que você usa para acessar o MSDTC. Os valores permitidos são 1150–49151, exceto 1234, 1434, 3260, 3343, 3389 e 47001. O valor padrão é 5000.

  Verifique se a porta que pretende usar está habilitada nas regras de firewall. Além disso, conforme necessário, verifique se essa porta está habilitada nas regras de entrada e saída para o grupo de segurança associado à instância de banco de dados. Para ter mais informações, consulte [Não é possível conectar-se à instância de banco de dados do Amazon RDS](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting). 
+ **Security groups** (Grupos de segurança): as associações de grupo de segurança da VPC para a instância de banco de dados do RDS.
+ **Tipo de autenticação** – o modo de autenticação entre hosts. Os seguintes tipos de autenticação são compatíveis:
  + Mútuo – as instâncias do RDS são autenticadas mutuamente entre si usando autenticação integrada. Se esta opção estiver selecionada, todas as instâncias associadas a este grupo de opções deverão estar associadas ao domínio.
  + Nenhum – nenhuma autenticação é realizada entre hosts. Não recomendamos usar esse modo em ambientes de produção.
+ **Tamanho do log de transações** – o tamanho do log de transações do MSDTC. Os valores permitidos são de 4 a 1024 MB. O tamanho padrão é 4 MB.

As seguintes configurações de opção são opcionais:
+ **Habilitar conexões de entrada** – se deseja permitir conexões de entrada do MSDTC para instâncias associadas a este grupo de opções.
+ **Habilitar conexões de saída** – se deseja permitir conexões de saída do MSDTC em instâncias associadas a este grupo de opções.
+ **Habilitar XA** – se deseja permitir transações XA. Para obter mais informações sobre o protocolo XA, consulte [XA Specification](https://publications.opengroup.org/c193).
+ **Habilitar SNA LU** – se deseja permitir que o protocolo SNA LU seja usado para transações distribuídas. Para obter mais informações sobre o suporte ao protocolo SNA LU, consulte [Managing IBM CICS LU 6.2 Transactions](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms685136(v=vs.85)) na documentação da Microsoft.

### Console
<a name="Options.MSDTC.Add.Console"></a>

**Como adicionar a opção do MSDTC**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Selecione o grupo de opções que você acabou de criar.

1. Escolha **Add option (Adicionar opção)**.

1. Em **Detalhes da opção**, selecione **MSDTC** em **Nome da opção**.

1. Em **Configurações de opção**:

   1. Em **Porta**, insira o número da porta para acessar o MSDTC. O padrão é **5000**.

   1. Em **Security groups (Grupos de segurança)**, selecione o grupo de segurança da VPC a ser associado à opção.

   1. Em **Tipo de autenticação**, escolha **Mútuo** ou **Nenhum**.

   1. Em **Tamanho do log de transações**, insira um valor de 4 a 1024. O padrão é **4**.

1. Em **Configuração adicional**, faça o seguinte:

   1. Em **Conexões**, conforme necessário, escolha **Habilitar conexões de entrada** e **Habilitar conexões de saída**.

   1. Em **Protocolos permitidos**, conforme necessário, escolha **Habilitar XA** e **Habilitar SNA LU**.

1. Em **Scheduling (Programação)**, escolha se deseja adicionar a opção imediatamente ou na próxima janela de manutenção.

1. Escolha **Add option (Adicionar opção)**.

   Nenhuma reinicialização é necessária para adicionar essa opção.

### CLI
<a name="Options.MSDTC.Add.CLI"></a>

**Como adicionar a opção do MSDTC**

1. Crie um arquivo JSON, por exemplo `msdtc-option.json`, com os seguintes parâmetros necessários:

   ```
   {
   "OptionGroupName":"msdtc-se-2016",
   "OptionsToInclude": [
   	{
   	"OptionName":"MSDTC",
   	"Port":5000,
   	"VpcSecurityGroupMemberships":["sg-0abcdef123"],
   	"OptionSettings":[{"Name":"AUTHENTICATION","Value":"MUTUAL"},{"Name":"TRANSACTION_LOG_SIZE","Value":"4"}]
   	}],
   "ApplyImmediately": true
   }
   ```

1. Adicione a opção `MSDTC` ao grupo de opções.  
**Example**  

   Para Linux, macOS ou Unix:

   ```
   aws rds add-option-to-option-group \
       --cli-input-json file://msdtc-option.json \
       --apply-immediately
   ```

   Para Windows:

   ```
   aws rds add-option-to-option-group ^
       --cli-input-json file://msdtc-option.json ^
       --apply-immediately
   ```

   Nenhuma reinicialização é necessária.

## Criar o grupo de parâmetros para o MSDTC
<a name="MSDTC.CreateParamGroup"></a>

Crie ou modifique um grupo de parâmetros para o parâmetro `in-doubt xact resolution` que corresponde à edição e à versão do SQL Server da instância de banco de dados.

### Console
<a name="CreateParamGroup.MSDTC.Console"></a>

O exemplo a seguir cria um grupo de parâmetros para o SQL Server Standard Edition 2016.

**Como criar o grupo de parâmetros**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Parameter groups** (Grupos de parâmetros).

1. Escolha **Create parameter group (Criar parameter group)**.

1. No painel**Create parameter group (Criar parameter group)**, faça o seguinte:

   1. Em **Família de grupos de parâmetros**, escolha **sqlserver-se-13.0**.

   1. Em **Nome do grupo**, insira um identificador para o grupo de parâmetros, como **msdtc-sqlserver-se-13**.

   1. Em **Descrição**, insira **in-doubt xact resolution**.

1. Escolha **Criar**.

### CLI
<a name="CreateParamGroup.MSDTC.CLI"></a>

O exemplo a seguir cria um grupo de parâmetros para o SQL Server Standard Edition 2016.

**Como criar o grupo de parâmetros**
+ Use um dos seguintes comandos.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds create-db-parameter-group \
      --db-parameter-group-name msdtc-sqlserver-se-13 \
      --db-parameter-group-family "sqlserver-se-13.0" \
      --description "in-doubt xact resolution"
  ```

  Para Windows:

  ```
  aws rds create-db-parameter-group ^
      --db-parameter-group-name msdtc-sqlserver-se-13 ^
      --db-parameter-group-family "sqlserver-se-13.0" ^
      --description "in-doubt xact resolution"
  ```

## Modificar o parâmetro para o MSDTC
<a name="ModifyParam.MSDTC"></a>

Modifique o parâmetro `in-doubt xact resolution` no grupo de parâmetros que corresponde à edição e à versão do SQL Server da instância de banco de dados.

Para o MSDTC, defina o parâmetro `in-doubt xact resolution` como um dos seguintes procedimentos:
+ `1`: `Presume commit`. Presume-se que as transações em dúvida do MSDTC foram confirmadas.
+ `2`: `Presume abort`. Presume-se que as transações em dúvida do MSDTC foram interrompidas.

Para obter mais informações, consulte [in-doubt xact resolution server configuration option](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/in-doubt-xact-resolution-server-configuration-option) na documentação da Microsoft.

### Console
<a name="ModifyParam.MSDTC.Console"></a>

O exemplo a seguir modifica o grupo de parâmetros que você criou para o SQL Server Standard Edition 2016.

**Como modificar o grupo de parâmetros**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, selecione **Parameter groups**.

1. Escolha o grupo de parâmetros, como **msdtc-sqlserver-se-13**.

1. Em **Parâmetros**, filtre a lista de parâmetros para **xact**.

1. Escolha **resolução xact em dúvida**.

1. Escolha **Edit parameters**.

1. Insira **1** ou **2**.

1. Escolha **Salvar alterações**.

### CLI
<a name="ModifyParam.MSDTC.CLI"></a>

O exemplo a seguir modifica o grupo de parâmetros que você criou para o SQL Server Standard Edition 2016.

**Como modificar o grupo de parâmetros**
+ Use um dos seguintes comandos.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds modify-db-parameter-group \
      --db-parameter-group-name msdtc-sqlserver-se-13 \
      --parameters "ParameterName='in-doubt xact resolution',ParameterValue=1,ApplyMethod=immediate"
  ```

  Para Windows:

  ```
  aws rds modify-db-parameter-group ^
      --db-parameter-group-name msdtc-sqlserver-se-13 ^
      --parameters "ParameterName='in-doubt xact resolution',ParameterValue=1,ApplyMethod=immediate"
  ```

## Associar o grupo de opções e o grupo de parâmetros à instância de banco de dados.
<a name="MSDTC.Apply"></a>

É possível usar o Console de gerenciamento da AWS ou a AWS CLI para associar o grupo de opções e o grupo de parâmetros do MSDTC à instância de banco de dados.

### Console
<a name="MSDTC.Apply.Console"></a>

É possível associar o grupo de opções e o grupo de parâmetros do MSDTC a uma instância de banco de dados nova ou existente.
+ Para uma nova instância de banco de dados, associe-os ao executar a instância. Para obter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).
+ Para uma instância de banco de dados existente, associe-os modificando a instância. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).
**nota**  
Se você usar uma instância de banco de dados existente associada ao domínio, ela já deverá ter um domínio do Active Directory e uma função do AWS Identity and Access Management (IAM) associados a ela. Se você criar uma nova instância associada ao domínio, especifique um domínio do Active Directory e uma função do IAM existentes. Para ter mais informações, consulte [Trabalhar com o AWS Managed Active Directory com o RDS para SQL Server](USER_SQLServerWinAuth.md).

### CLI
<a name="MSDTC.Apply.CLI"></a>

É possível associar o grupo de opções e o grupo de parâmetros do MSDTC a uma instância de banco de dados nova ou existente.

**nota**  
Se você usar uma instância de banco de dados existente associada ao domínio, ela já deverá ter um domínio do Active Directory e uma função do IAM associados a ela. Se você criar uma nova instância associada ao domínio, especifique um domínio do Active Directory e uma função do IAM existentes. Para obter mais informações, consulte [Trabalhar com o AWS Managed Active Directory com o RDS para SQL Server](USER_SQLServerWinAuth.md).

**Como criar uma instância de banco de dados com o grupo de opções e o grupo de parâmetros do MSDTC**
+ Especifique o mesmo tipo de mecanismo de banco de dados e a versão principal que você usou ao criar o grupo de opções.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier mydbinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 13.00.5426.0.v1 \
      --allocated-storage 100 \
      --manage-master-user-password \
      --master-username admin \
      --storage-type gp2 \
      --license-model li \
      --domain-iam-role-name my-directory-iam-role \
      --domain my-domain-id \
      --option-group-name msdtc-se-2016 \
      --db-parameter-group-name msdtc-sqlserver-se-13
  ```

  Para Windows:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier mydbinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 13.00.5426.0.v1 ^
      --allocated-storage 100 ^
      --manage-master-user-password ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --domain-iam-role-name my-directory-iam-role ^
      --domain my-domain-id ^
      --option-group-name msdtc-se-2016 ^
      --db-parameter-group-name msdtc-sqlserver-se-13
  ```

**Como modificar uma instância de banco de dados e associar o grupo de opções e o grupo de parâmetros do MSDTC**
+ Use um dos seguintes comandos.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier mydbinstance \
      --option-group-name msdtc-se-2016 \
      --db-parameter-group-name msdtc-sqlserver-se-13 \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier mydbinstance ^
      --option-group-name msdtc-se-2016 ^
      --db-parameter-group-name msdtc-sqlserver-se-13 ^
      --apply-immediately
  ```

## Modificar a opção do MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Modify"></a>

Depois de habilitar a opção `MSDTC`, é possível modificar as configurações. Para obter informações sobre como modificar as configurações da opção, consulte [Modificar uma configuração de opção](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption).

**nota**  
Algumas alterações às configurações de opção do MSDTC exigem que o serviço MSDTC seja reiniciado. Esse requisito pode afetar a execução de transações distribuídas.

## Usar transações
<a name="Appendix.SQLServer.Options.MSDTC.Using"></a>

### Usar transações distribuídas
<a name="Appendix.SQLServer.Options.MSDTC.UsingXA"></a>

No Amazon RDS for SQL Server, você executa transações distribuídas da mesma maneira que transações distribuídas em execução no local:
+ Usando transações promovíveis `System.Transactions` do .NET framework, que otimiza transações distribuídas ao adiar as criações até que sejam necessárias.

  Neste caso, a promoção é automática e não requer que você faça qualquer intervenção. Se houver apenas um gerenciador de recursos dentro da transação, nenhuma promoção será executada. Para obter mais informações sobre escopos de transação implícita, consulte [Implementing an implicit transaction using transaction scope](https://docs.microsoft.com/en-us/dotnet/framework/data/transactions/implementing-an-implicit-transaction-using-transaction-scope) na documentação da Microsoft.

  As transações promovíveis são compatíveis com estas implementações .NET: 
  + Começando com o ADO.NET 2.0, `System.Data.SqlClient` oferece suporte a transações promovíveis com o SQL Server. Para obter mais informações, consulte [System.Transactions integration with SQL Server](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/system-transactions-integration-with-sql-server) na documentação da Microsoft.
  + O ODP.NET oferece suporte a `System.Transactions`. Uma transação local é criada para a primeira conexão aberta no escopo `TransactionsScope` para o Oracle Database 11g release 1 (versão 11.1) e posterior. Quando uma segunda conexão é aberta, essa transação é automaticamente promovida para uma transação distribuída. Para obter mais informações sobre suporte de transações distribuídas no ODP.NET, consulte [Microsoft Distributed Transaction Coordinator integration](https://docs.oracle.com/en/database/oracle/oracle-data-access-components/18.3/ntmts/using-mts-with-oracledb.html) na documentação da Microsoft.
+ Usando a instrução `BEGIN DISTRIBUTED TRANSACTION`. Para obter mais informações, consulte [BEGIN DISTRIBUTED TRANSACTION (Transact-SQL)](https://docs.microsoft.com/en-us/sql/t-sql/language-elements/begin-distributed-transaction-transact-sql) na documentação da Microsoft.

### Como usar transações XA
<a name="MSDTC.XA"></a>

A partir da versão 14.00.3223.3 do RDS para SQL Server 2017, você pode controlar transações distribuídas usando o JDBC. Quando você define a opção `Enable XA` para `true` na opção `MSDTC`, o RDS habilita automaticamente as transações do JDBC e concede a função `SqlJDBCXAUser` ao usuário `guest`. Isso permite a execução de transações distribuídas por meio do JDBC. Para obter mais informações, incluindo um exemplo de código, consulte [Noções básicas sobre transações XA](https://docs.microsoft.com/en-us/sql/connect/jdbc/understanding-xa-transactions) na documentação da Microsoft.

### Usar rastreamento de transações
<a name="MSDTC.Tracing"></a>

O RDS oferece suporte ao controle de rastreamentos de transação do MSDTC e ao download deles na instância de banco de dados do RDS para solução de problemas. É possível controlar sessões de rastreamento de transação executando o procedimento armazenado do RDS a seguir.

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'trace_action',
[@traceall='0|1'],
[@traceaborted='0|1'],
[@tracelong='0|1'];
```

O parâmetro a seguir é obrigatório.
+ `trace_action` – A ação de rastreamento. Ela pode ser: `START`, `STOP` ou `STATUS`.

Os seguintes parâmetros são opcionais:
+ `@traceall` – Defina como 1 para rastrear todas as transações distribuídas. O padrão é 0.
+ `@traceaborted` – Defina como 1 para rastrear transações distribuídas canceladas. O padrão é 0.
+ `@tracelong` – Defina como 1 para rastrear transações distribuídas de execução longa. O padrão é 0.

**Example de ação de rastreamento START**  
Para iniciar uma nova sessão de rastreamento de transação, execute o exemplo de instrução a seguir.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'START',
@traceall='0',
@traceaborted='1',
@tracelong='1';
```
Apenas uma sessão de rastreamento de transação pode estar ativa ao mesmo tempo. Se um novo comando de sessão de rastreamento `START` for emitido enquanto uma sessão de rastreamento estiver ativa, um erro será retornado e a sessão de rastreamento ativa permanecerá inalterada.

**Example de ação de rastreamento STOP**  
Para interromper uma sessão de rastreamento de transação, execute a instrução a seguir.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STOP'
```
Esta instrução interrompe a sessão de rastreamento de transação ativa e salva os dados de rastreamento de transação no diretório de log na instância de banco de dados do RDS. A primeira linha da saída contém o resultado geral e as linhas a seguir indicam os detalhes da operação.  
Veja a seguir um exemplo de uma interrupção de sessão de rastreamento bem-sucedida.  

```
OK: Trace session has been successfully stopped.
Setting log file to: D:\rdsdbdata\MSDTC\Trace\dtctrace.log
Examining D:\rdsdbdata\MSDTC\Trace\msdtctr.mof for message formats,  8 found.
Searching for TMF files on path: (null)
Logfile D:\rdsdbdata\MSDTC\Trace\dtctrace.log:
 OS version    10.0.14393  (Currently running on 6.2.9200)
 Start Time    <timestamp>
 End Time      <timestamp>
 Timezone is   @tzres.dll,-932 (Bias is 0mins)
 BufferSize            16384 B
 Maximum File Size     10 MB
 Buffers  Written      Not set (Logger may not have been stopped).
 Logger Mode Settings (11000002) ( circular paged
 ProcessorCount         1 
Processing completed   Buffers: 1, Events: 3, EventsLost: 0 :: Format Errors: 0, Unknowns: 3
Event traces dumped to d:\rdsdbdata\Log\msdtc_<timestamp>.log
```
É possível usar as informações detalhadas para consultar o nome do arquivo de log gerado. Para obter mais informações sobre como baixar arquivos de log na instância de banco de dados do RDS, consulte [Monitorar arquivos de log do Amazon RDS](USER_LogAccess.md).  
Os logs de sessão de rastreamento permanecem na instância por 35 dias. Todos os logs de sessão de rastreamento mais antigos são excluídos automaticamente.

**Example de ação de rastreamento STATUS**  
Para rastrear o status de uma sessão de rastreamento de transação, execute a instrução a seguir.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STATUS'
```
Esta instrução gera o seguinte como linhas separadas do conjunto de resultados.  

```
OK
SessionStatus: <Started|Stopped>
TraceAll: <True|False>
TraceAborted: <True|False>
TraceLongLived: <True|False>
```
A primeira linha indica o resultado geral da operação: `OK` ou `ERROR` com detalhes, se aplicável. As linhas subsequentes indicam detalhes sobre o status da sessão de rastreamento:   
+ `SessionStatus` pode ser um dos seguintes:
  + `Started` se uma sessão de rastreamento estiver sendo executada.
  + `Stopped` se nenhuma sessão de rastreamento estiver sendo executada.
+ Os sinalizadores de sessão de rastreamento podem ser `True` ou `False` dependendo de como foram definidos no comando `START`.

# Desabilitar o MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Disable"></a>

Para desabilitar o MSDTC, remova a opção `MSDTC` do grupo de opções.

## Console
<a name="Options.MSDTC.Disable.Console"></a>

**Como remover a opção do MSDTC do grupo de opções**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Selecione o grupo de opções com a opção `MSDTC` (`msdtc-se-2016` nos exemplos anteriores).

1. Selecione **Delete option (Excluir opção)**.

1. Em **Opções de exclusão**, selecione **MSDTC** em **Opções a serem excluídas**.

1. Em **Apply immediately (Aplicar imediatamente)**, selecione **Yes (Sim)** para excluir a opção imediatamente ou **No (Não)** para excluí-la na próxima janela de manutenção.

1. Escolha **Excluir**.

## CLI
<a name="Options.MSDTC.Disable.CLI"></a>

**Como remover a opção do MSDTC do grupo de opções**
+ Use um dos seguintes comandos.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds remove-option-from-option-group \
      --option-group-name msdtc-se-2016 \
      --options MSDTC \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name msdtc-se-2016 ^
      --options MSDTC ^
      --apply-immediately
  ```

# Solução de problemas do MSDTC para o RDS for SQL Server
<a name="Appendix.SQLServer.Options.MSDTC.Troubleshooting"></a>

Em alguns casos, talvez você tenha problemas para estabelecer uma conexão entre o MSDTC em execução em um computador cliente e o serviço do MSDTC em execução em uma instância de banco de dados do RDS for SQL Server. Em caso afirmativo, verifique o seguinte:
+ As regras de entrada do grupo de segurança associado à instância de banco de dados estão configuradas corretamente. Para obter mais informações, consulte [Não é possível conectar-se à instância de banco de dados do Amazon RDS](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting).
+ O computador cliente está configurado corretamente.
+ As regras de firewall do MSDTC no computador cliente estão habilitadas.

**Como configurar o computador cliente**

1. Abra os **Serviços de componentes**.

   Ou, no **Gerenciador de servidores**, escolha **Ferramentas** e **Serviços de componentes**.

1. Expanda **Serviços de componentes**, **Computadores**, **Meu computador** e **Distributed Transaction Coordinator**.

1. Abra o menu de contexto (clique com o botão direito do mouse) do **DTC local** e escolha **Propriedades**.

1. Escolha a guia **Segurança**.

1. Escolha todas as opções a seguir:
   + **Acesso ao DTC de rede**
   + **Permitir entrada**
   + **Permitir Saída**

1. Certifique-se de que o modo de autenticação correto seja escolhido:
   + **Autenticação mútua necessária** – a máquina cliente é associada ao mesmo domínio que outros nós que participam da transação distribuída ou existe uma relação de confiança configurada entre domínios.
   + **Nenhuma autenticação necessária** – todos os outros casos.

1. Escolha **OK** para salvar as alterações.

1. Se solicitado a reiniciar o serviço, escolha **Sim**.

**Como habilitar regras de firewall do MSDTC**

1. Abra o Firewall do Windows e escolha **Configurações avançadas**.

   Ou, no **Gerenciador de servidores**, escolha **Ferramentas** e selecione **Firewall do Windows com segurança avançada**.
**nota**  
Dependendo do sistema operacional, o Firewall do Windows pode ser chamado de Firewall do Windows Defender.

1. Escolha **Regras de entrada** no painel esquerdo.

1. Habilite as seguintes regras de firewall, se elas ainda não estiverem habilitadas:
   + **Distributed Transaction Coordinator (RPC)**
   + **Distributed Transaction Coordinator (RPC)-EPMAP**
   + **Distributed Transaction Coordinator (TCP-In)**

1. Feche o Firewall do Windows.

# Administrador de recursos do Microsoft SQL Server com o RDS para SQL Server
<a name="Appendix.SQLServer.Options.ResourceGovernor"></a>

O administrador de recursos é um recurso do SQL Server Enterprise Edition que oferece controle preciso sobre os recursos da sua instância. Ele permite que você defina limites específicos sobre como as workloads usam CPU, memória e recursos físicos de E/S. Com o administrador de recursos, você pode:
+ Evitar a monopolização de recursos em ambientes multilocatário gerenciando como diferentes workloads compartilham recursos de instância.
+ Oferecer performance previsível definindo limites e prioridades de recursos específicos para diferentes usuários e aplicações.

Você pode habilitar o administrador de recursos em uma instância de banco de dados nova ou existente do RDS para SQL Server.

O administrador de recursos usa três conceitos fundamentais:
+ **Grupo de recursos**: um contêiner que gerencia os recursos físicos da instância (CPU, memória e E/S). Você tem dois grupos integrados (internos e padrão) e pode criar outros grupos personalizados.
+ **Grupo de workload**: um contêiner para sessões de banco de dados com características semelhantes. Cada grupo de workload pertence a um grupo de recursos. Você tem dois grupos de workload integrados (internos e padrão) e pode criar outros grupos de workload personalizados.
+ **Classificação**: o processo que determina qual grupo de workload processa as sessões de entrada com base no nome do usuário, nome da aplicação, nome do banco de dados ou nome do host.

Para acessar detalhes adicionais sobre a funcionalidade do administrador de recursos no SQL Server, consulte [Resource Governor](https://learn.microsoft.com/en-us/sql/relational-databases/resource-governor/resource-governor?view=sql-server-ver16) na documentação da Microsoft.

**Contents**
+ [Versões e regiões compatíveis](#ResourceGovernor.SupportedVersions)
+ [Limitações e recomendações](#ResourceGovernor.Limitations)
+ [Habilitar o administrador de recursos do Microsoft SQL Server para sua instância do RDS para SQL Server](ResourceGovernor.Enabling.md)
  + [Criar o grupo de opções para `RESOURCE_GOVERNOR`](ResourceGovernor.Enabling.md#ResourceGovernor.OptionGroup)
  + [Adicionar a opção `RESOURCE_GOVERNOR` ao grupo de opções](ResourceGovernor.Enabling.md#ResourceGovernor.Add)
  + [Associar o grupo de opções à instância de banco de dados](ResourceGovernor.Enabling.md#ResourceGovernor.Apply)
+ [Usar o administrador de recursos do Microsoft SQL Server para sua instância do RDS para SQL Server](ResourceGovernor.Using.md)
  + [Gerenciar o grupo de recursos](ResourceGovernor.Using.md#ResourceGovernor.ManageResourcePool)
    + [Criar grupo de recursos](ResourceGovernor.Using.md#ResourceGovernor.CreateResourcePool)
    + [Alterar o grupo de recursos](ResourceGovernor.Using.md#ResourceGovernor.AlterResourcePool)
    + [Eliminar o grupo de recursos](ResourceGovernor.Using.md#ResourceGovernor.DropResourcePool)
  + [Gerenciar grupos de workload](ResourceGovernor.Using.md#ResourceGovernor.ManageWorkloadGroups)
    + [Criar grupo de workload](ResourceGovernor.Using.md#ResourceGovernor.CreateWorkloadGroup)
    + [Alterar o grupo de workload](ResourceGovernor.Using.md#ResourceGovernor.AlterWorkloadGroup)
    + [Eliminar um grupo de workload](ResourceGovernor.Using.md#ResourceGovernor.DropWorkloadGroup)
  + [Criar e registrar a função classificadora](ResourceGovernor.Using.md#ResourceGovernor.ClassifierFunction)
  + [Eliminar função classificadora](ResourceGovernor.Using.md#ResourceGovernor.DropClassifier)
  + [Cancelar registro da função classificadora](ResourceGovernor.Using.md#ResourceGovernor.DeregisterClassifier)
  + [Redefinir estatísticas](ResourceGovernor.Using.md#ResourceGovernor.ResetStats)
  + [Alterações na configuração do administrador de recursos](ResourceGovernor.Using.md#ResourceGovernor.ConfigChanges)
  + [Vincular TempDB a um grupo de recursos](ResourceGovernor.Using.md#ResourceGovernor.BindTempDB)
  + [Desvincular o TempDB de um grupo de recursos](ResourceGovernor.Using.md#ResourceGovernor.UnbindTempDB)
  + [Limpar o administrador de recursos](ResourceGovernor.Using.md#ResourceGovernor.Cleanup)
+ [Considerações para implantações Multi-AZ](#ResourceGovernor.Considerations)
+ [Considerações sobre réplicas de leitura](#ResourceGovernor.ReadReplica)
+ [Monitorar o administrador de recursos do Microsoft SQL Server utilizando visualizações do sistema para sua instância do RDS para SQL Server](ResourceGovernor.Monitoring.md)
  + [Estatísticas de runtime do grupo de recursos](ResourceGovernor.Monitoring.md#ResourceGovernor.ResourcePoolStats)
+ [Desabilitar o administrador de recursos do Microsoft SQL Server para sua instância do RDS para SQL Server](ResourceGovernor.Disabling.md)
+ [Práticas recomendadas para configurar o administrador de recursos no RDS para SQL Server](ResourceGovernor.BestPractices.md)

## Versões e regiões compatíveis
<a name="ResourceGovernor.SupportedVersions"></a>

É possível usar o administrador de recursos com o Amazon RDS nas seguintes versões e edições do SQL Server em todas as Regiões da AWS em que o RDS para SQL Server está disponível:
+ SQL Server 2022 Developer e Enterprise Editions
+ SQL Server 2019 Enterprise Edition
+ SQL Server 2017 Enterprise Edition
+ SQL Server 2016 Enterprise Edition

## Limitações e recomendações
<a name="ResourceGovernor.Limitations"></a>

As seguintes limitações e recomendações se aplicam ao administrador de recursos:
+ Restrições de edição e serviço:
  + Disponível somente no SQL Server Enterprise Edition.
  + O gerenciamento de recursos é limitado ao Mecanismo de Banco de Dados do SQL Server. O administrador de recursos para Analysis Services, Integration Services e Reporting Services não é aceito.
+ Restrições da configuração:
  + É necessário usar procedimentos armazenados do Amazon RDS para todas as configurações.
  + Instruções DDL nativas e configurações de GUI do SQL Server Management Studio não são aceitas.
+ Parâmetros do grupo de recursos:
  + Nomes de grupos que comecem por `rds_` não são aceitos.
  + Modificações internas e padrão do grupo de recursos não são permitidas.
  + Para os grupos de recursos definidos pelo usuário, os seguintes parâmetros do grupo de recursos não são aceitos:
    + `MIN_MEMORY_PERCENT`
    + `MIN_CPU_PERCENT`
    + `MIN_IOPS_PER_VOLUME`
    + `AFFINITY`
+ Parâmetros do grupo de workload:
  + Nomes de grupos de workload que comecem com `rds_` não são aceitos.
  + A modificação interna do grupo de workload não é permitida.
  + Para o grupo de workload padrão:
    + Somente o parâmetro `REQUEST_MAX_MEMORY_GRANT_PERCENT` pode ser modificado.
    + Para o grupo de workload padrão, `REQUEST_MAX_MEMORY_GRANT_PERCENT` deve estar entre 1 e 70.
    + Todos os outros parâmetros ficam bloqueados e não podem ser alterados.
  + Grupos de workload definidos pelo usuário permitem a modificação de todos os parâmetros.
+ Limitações da função classificadora:
  + A função classificadora direciona as conexões para grupos de workload personalizados com base em critérios especificados (nome do usuário, banco de dados, host ou nome da aplicação).
  + Comporta até dois grupos de workload definidos pelo usuário com as respectivas condições de roteamento.
  + Combina critérios com condições `AND` dentro de cada grupo.
  + Requer pelo menos um critério de roteamento por grupo de workload.
  + Somente os métodos de classificação listados acima são aceitos.
  + O nome da função deve começar com `rg_classifier_`.
  + Atribuição de grupo padrão se nenhuma condição coincidir.

# Habilitar o administrador de recursos do Microsoft SQL Server para sua instância do RDS para SQL Server
<a name="ResourceGovernor.Enabling"></a>

Habilitar o administrador de recursos adicionando a opção `RESOURCE_GOVERNOR` à sua instância de banco de dados do RDS para SQL Server. Use o seguinte processo:

1. Crie um grupo de opções ou selecione um existente.

1. Adicione a opção `RESOURCE_GOVERNOR` ao grupo de opções.

1. Associe o grupo de opções à instância de banco de dados.

**nota**  
Habilitar o administrador de recursos por meio de um grupo de opções não requer uma reinicialização.

## Criar o grupo de opções para `RESOURCE_GOVERNOR`
<a name="ResourceGovernor.OptionGroup"></a>

Para habilitar o administrador de recursos, crie um grupo de opções ou modifique um grupo de opções que corresponda à edição do SQL Server e à versão da instância de banco de dados que você pretende usar. Para concluir esse procedimento, use o Console de gerenciamento da AWS ou a AWS CLI.

### Console
<a name="ResourceGovernor.OptionGroup.Console"></a>

Use o procedimento a seguir para criar um grupo de opções para o SQL Server Enterprise Edition 2022.

**Como criar o grupo de opções**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Escolha **Create group (Criar grupo)**.

1. Na janela **Create option group (Criar grupo de opções)**, faça o seguinte:

   1. Em **Name** (Nome), insira um nome para o grupo de opções que seja exclusivo na sua conta da AWS, como **resource-governor-ee-2022**. O nome pode conter somente letras, números e hifens.

   1. Em **Descrição**, insira uma breve descrição do grupo de opções, como **RESOURCE\$1GOVERNOR option group for SQL Server EE 2022**. A descrição é usada para fins de exibição.

   1. Em **Mecanismo**, selecione **sqlserver-ee**.

   1. Em **Major engine version (Versão principal do mecanismo)**, selecione **16.00**.

1. Escolha **Criar**.

### CLI
<a name="ResourceGovernor.OptionGroup.CLI"></a>

O procedimento a seguir cria um grupo de opções para o SQL Server Enterprise Edition 2022.

**Como criar o grupo de opções**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds create-option-group \
      --option-group-name resource-governor-ee-2022 \
      --engine-name sqlserver-ee \
      --major-engine-version 16.00 \
      --option-group-description "RESOURCE_GOVERNOR option group for SQL Server EE 2022"
  ```

  Para Windows:

  ```
  aws rds create-option-group ^
      --option-group-name resource-governor-ee-2022 ^
      --engine-name sqlserver-ee ^
      --major-engine-version 16.00 ^
      --option-group-description "RESOURCE_GOVERNOR option group for SQL Server EE 2022"
  ```

## Adicionar a opção `RESOURCE_GOVERNOR` ao grupo de opções
<a name="ResourceGovernor.Add"></a>

Depois, use o Console de gerenciamento da AWS ou a AWS CLI para adicionar a opção `RESOURCE_GOVERNOR` ao grupo de opções.

### Console
<a name="ResourceGovernor.Add.Console"></a>

**Como adicionar a opção RESOURCE\$1GOVERNOR**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Escolha o grupo de opções que você acabou de criar, **resource-governor-ee-2022** neste exemplo.

1. Escolha **Add option (Adicionar opção)**.

1. Em **Detalhes da opção**, selecione **RESOURCE\$1GOVERNOR** em **Nome da opção**.

1. Em **Scheduling (Programação)**, escolha se deseja adicionar a opção imediatamente ou na próxima janela de manutenção.

1. Escolha **Add option (Adicionar opção)**.

### CLI
<a name="ResourceGovernor.Add.CLI"></a>

**Como adicionar a opção `RESOURCE_GOVERNOR`**
+ Adicione a opção `RESOURCE_GOVERNOR` ao grupo de opções.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds add-option-to-option-group \
      --option-group-name resource-governor-ee-2022 \
      --options "OptionName=RESOURCE_GOVERNOR" \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds add-option-to-option-group ^
      --option-group-name resource-governor-ee-2022 ^
      --options "OptionName=RESOURCE_GOVERNOR" ^
      --apply-immediately
  ```

## Associar o grupo de opções à instância de banco de dados
<a name="ResourceGovernor.Apply"></a>

Para associar o grupo de opções `RESOURCE_GOVERNOR` à instância de banco de dados, use o Console de gerenciamento da AWS ou a AWS CLI.

### Console
<a name="ResourceGovernor.Apply.Console"></a>

Para concluir a ativação do administrador de recursos, associe o grupo de opções `RESOURCE_GOVERNOR` a uma instância de banco de dados nova ou existente:
+ Para uma nova instância de banco de dados, associe-os ao executar a instância. Para obter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).
+ Para uma instância de banco de dados existente, associe-os modificando a instância. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).

### CLI
<a name="ResourceGovernor.Apply.CLI"></a>

É possível associar o grupo de opções `RESOURCE_GOVERNOR` a uma instância de banco de dados nova ou existente.

**Como criar uma instância com o grupo de opções `RESOURCE_GOVERNOR`**
+ Especifique o mesmo tipo de mecanismo de banco de dados e a versão principal que você usou ao criar o grupo de opções.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier mytestsqlserverresourcegovernorinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-ee \
      --engine-version 16.00 \
      --license-model license-included \
      --allocated-storage 100 \
      --master-username admin \
      --master-user-password password \
      --storage-type gp2 \
      --option-group-name resource-governor-ee-2022
  ```

  Para Windows:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier mytestsqlserverresourcegovernorinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-ee ^
      --engine-version 16.00 ^
      --license-model license-included ^
      --allocated-storage 100 ^
      --master-username admin ^
      --master-user-password password ^
      --storage-type gp2 ^
      --option-group-name resource-governor-ee-2022
  ```

**Como modificar uma instância e associar o grupo de opções `RESOURCE_GOVERNOR`**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier mytestinstance \
      --option-group-name resource-governor-ee-2022 \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier mytestinstance ^
      --option-group-name resource-governor-ee-2022 ^
      --apply-immediately
  ```

# Usar o administrador de recursos do Microsoft SQL Server para sua instância do RDS para SQL Server
<a name="ResourceGovernor.Using"></a>

Depois de adicionar a opção de administrador de recursos ao seu grupo de opções, o administrador de recursos ainda não está ativo em nível de mecanismo de banco de dados. Para habilitar totalmente o administrador de recursos, você deve usar os procedimentos armazenados do RDS para SQL Server para habilitá-lo e criar os respectivos objetos necessários. Para obter mais informações, consulte [Conectar-se à instância de banco de dados do Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md).

Primeiro, conecte-se ao banco de dados do SQL Server e, depois, chame os procedimentos armazenados apropriados do RDS para SQL Server para concluir a configuração. Para obter instruções sobre como se conectar ao banco de dados, consulte [Conectar-se à instância de banco de dados do Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md).

Para instruções sobre como chamar cada procedimento armazenado, consulte os tópicos a seguir:

**Topics**
+ [Gerenciar o grupo de recursos](#ResourceGovernor.ManageResourcePool)
+ [Gerenciar grupos de workload](#ResourceGovernor.ManageWorkloadGroups)
+ [Criar e registrar a função classificadora](#ResourceGovernor.ClassifierFunction)
+ [Eliminar função classificadora](#ResourceGovernor.DropClassifier)
+ [Cancelar registro da função classificadora](#ResourceGovernor.DeregisterClassifier)
+ [Redefinir estatísticas](#ResourceGovernor.ResetStats)
+ [Alterações na configuração do administrador de recursos](#ResourceGovernor.ConfigChanges)
+ [Vincular TempDB a um grupo de recursos](#ResourceGovernor.BindTempDB)
+ [Desvincular o TempDB de um grupo de recursos](#ResourceGovernor.UnbindTempDB)
+ [Limpar o administrador de recursos](#ResourceGovernor.Cleanup)

## Gerenciar o grupo de recursos
<a name="ResourceGovernor.ManageResourcePool"></a>

### Criar grupo de recursos
<a name="ResourceGovernor.CreateResourcePool"></a>

Depois que o administrador de recursos estiver habilitado no grupo de opções, você poderá criar grupos de recursos personalizados usando `rds_create_resource_pool`. Esses grupos permitem alocar porcentagens específicas de CPU, memória e IOPS a diferentes workloads.

**Uso**

```
USE [msdb]
EXEC dbo.rds_create_resource_pool    
    @pool_name=value,
    @MAX_CPU_PERCENT=value,
    @CAP_CPU_PERCENT=value,
    @MAX_MEMORY_PERCENT=value,
    @MAX_IOPS_PER_VOLUME=value
```

Os seguintes parâmetros são obrigatórios:
+ `@group_name`: é o nome de um grupo de workload definido pelo usuário existente.
+ `@pool_name`: é o nome definido pelo usuário para o gruo de recursos. *pool\$1name* é alfanumérico, pode ter até 128 caracteres, deve ser exclusivo em uma instância do mecanismo de banco de dados e deve estar em conformidade com as regras para identificadores de banco de dados.

Os seguintes parâmetros são opcionais:
+ `@MAX_CPU_PERCENT`: especifica a largura de banda média máxima da CPU que todas as solicitações no grupo de recursos recebem quando há contenção de CPU. *valor* é um número inteiro com uma configuração padrão de 100. O intervalo permitido para *valor* é de 1 a 100.
+ `@CAP_CPU_PERCENT`: especifica um limite rígido na largura de banda da CPU que todas as solicitações no grupo de recursos recebem. Limita o nível máximo de largura de banda da CPU para ser igual ao valor especificado. *valor* é um número inteiro com uma configuração padrão de 100. O intervalo permitido para *valor* é de 1 a 100.
+ `@MAX_MEMORY_PERCENT`: especifica a quantidade máxima de memória do espaço de trabalho de consulta que as solicitações desse grupo de recursos podem usar. *valor* é um número inteiro com uma configuração padrão de 100. O intervalo permitido para *valor* é de 1 a 100.
+ `@MAX_IOPS_PER_VOLUME`: especifica o máximo de operações de E/S por segundo (IOPS) por volume de disco permitido para o grupo de recursos. O intervalo permitido para *valor* é de 0 a 2^31-1 (2, 147, 483, 647). Especifique 0 para remover um limite de IOPS para o grupo. O padrão é 0.

**Exemplos**

Exemplo de criação de um grupo de recursos com todos os valores padrão:

```
--This creates resource pool 'SalesPool' with all default values
USE [msdb]
EXEC rds_create_resource_pool @pool_name = 'SalesPool';
     
--Apply changes
USE [msdb]
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
     
--Validate configuration
select * from sys.resource_governor_resource_pools
```

Exemplo de criação de um grupo de recursos com diferentes parâmetros especificados:

```
--creates resource pool
USE [msdb]
EXEC dbo.rds_create_resource_pool    
@pool_name='analytics',
@MAX_CPU_PERCENT = 30,
@CAP_CPU_PERCENT = 40,
@MAX_MEMORY_PERCENT = 20;
            
--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
    
--Validate configuration
select * from sys.resource_governor_resource_pools
```

### Alterar o grupo de recursos
<a name="ResourceGovernor.AlterResourcePool"></a>

**Uso**

```
USE [msdb]
EXEC dbo.rds_alter_resource_pool    
    @pool_name=value,
    @MAX_CPU_PERCENT=value,
    @CAP_CPU_PERCENT=value,
    @MAX_MEMORY_PERCENT=value,
    @MAX_IOPS_PER_VOLUME=value;
```

Os seguintes parâmetros são obrigatórios:
+ `@pool_name`: é o nome de um grupo de recursos existente definido pelo usuário. A alteração do grupo de recursos padrão não é permitida no Amazon RDS SQL Server.

Pelo menos um dos parâmetros opcionais deve ser especificado:
+ `@MAX_CPU_PERCENT`: especifica a largura de banda média máxima da CPU que todas as solicitações no grupo de recursos recebem quando há contenção de CPU. *valor* é um número inteiro com uma configuração padrão de 100. O intervalo permitido para *valor* é de 1 a 100.
+ `@CAP_CPU_PERCENT`: especifica um limite rígido na largura de banda da CPU que todas as solicitações no grupo de recursos recebem. Limita o nível máximo de largura de banda da CPU para ser igual ao valor especificado. *valor* é um número inteiro com uma configuração padrão de 100. O intervalo permitido para *valor* é de 1 a 100.
+ `@MAX_MEMORY_PERCENT`: especifica a quantidade máxima de memória do espaço de trabalho de consulta que as solicitações desse grupo de recursos podem usar. *valor* é um número inteiro com uma configuração padrão de 100. O intervalo permitido para *valor* é de 1 a 100.
+ `@MAX_IOPS_PER_VOLUME`: especifica o máximo de operações de E/S por segundo (IOPS) por volume de disco permitido para o grupo de recursos. O intervalo permitido para *valor* é de 0 a 2^31-1 (2,147,483,647). Especifique 0 para remover um limite de IOPS para o grupo. O padrão é 0.

**Exemplos**

```
--This alters resource pool
USE [msdb]
EXEC dbo.rds_alter_resource_pool    
    @pool_name='analytics',
    @MAX_CPU_PERCENT = 10,
    @CAP_CPU_PERCENT = 20,
    @MAX_MEMORY_PERCENT = 50;

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration.
select * from sys.resource_governor_resource_pools
```

### Eliminar o grupo de recursos
<a name="ResourceGovernor.DropResourcePool"></a>

**Uso**

```
USE [msdb]
EXEC dbo.rds_drop_resource_pool    
@pool_name=value;
```

O seguinte parâmetro é obrigatório:
+ `@pool_name`: é o nome de um grupo de recursos existente definido pelo usuário.

**nota**  
A eliminação do grupo de recursos interno ou padrão não é permitida no SQL Server.

**Exemplos**

```
--This drops resource pool
USE [msdb]
EXEC dbo.rds_drop_resource_pool    
@pool_name='analytics'

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration
select * from sys.resource_governor_resource_pools
```

## Gerenciar grupos de workload
<a name="ResourceGovernor.ManageWorkloadGroups"></a>

Grupos de workload, criados e gerenciados com `rds_create_workload_group` e `rds_alter_workload_group`, permitem que você defina níveis de importância, concessões de memória e outros parâmetros para grupos de consultas.

### Criar grupo de workload
<a name="ResourceGovernor.CreateWorkloadGroup"></a>

**Uso**

```
USE [msdb]
EXEC dbo.rds_create_workload_group 
@group_name = value, 
@IMPORTANCE ={ LOW | MEDIUM | HIGH }, 
@REQUEST_MAX_MEMORY_GRANT_PERCENT =value, 
@REQUEST_MAX_CPU_TIME_SEC = value , 
@REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value, 
@MAX_DOP = value, 
@GROUP_MAX_REQUESTS = value, 
@pool_name = value
```

Os seguintes parâmetros são obrigatórios:
+ `@pool_name`: é o nome de um grupo de recursos existente definido pelo usuário.
+ `@group_name`: é o nome de um grupo de workload definido pelo usuário existente.

Os seguintes parâmetros são opcionais:
+ `@IMPORTANCE`: especifica a importância relativa de uma solicitação no grupo de workload. O valor padrão é `MEDIUM`.
+ `@REQUEST_MAX_MEMORY_GRANT_PERCENT`: especifica a quantidade máxima de memória do espaço de trabalho de consulta que uma única solicitação pode ter do grupo. *valor* é uma porcentagem do tamanho do grupo de recursos definido por `MAX_MEMORY_PERCENT`. O valor padrão é 25
+ `@REQUEST_MAX_CPU_TIME_SEC`: especifica o tempo máximo de CPU, em segundos, que uma solicitação em lote pode usar. *valor* deve ser 0 ou um inteiro positivo. A configuração padrão para *valor* é 0, o que significa ilimitado.
+ `@REQUEST_MEMORY_GRANT_TIMEOUT_SEC`: especifica o tempo máximo, em segundos, que uma consulta pode esperar até que uma concessão da memória do espaço de trabalho da consulta fique disponível. *valor* deve ser 0 ou um inteiro positivo. A configuração padrão para *valor*, 0, usa um cálculo interno com base no custo da consulta para determinar o tempo máximo.
+ `@MAX_DOP`: especifica o grau máximo de paralelismo (`MAXDOP`) para execução paralela de consultas. O intervalo permitido para *valor* é de 0 a 64. A configuração padrão para *valor*, 0, usa a configuração global.
+ `@GROUP_MAX_REQUESTS`: especifica o número máximo de solicitações simultâneas que podem ser executadas no grupo de workload. *valor* deve ser 0 ou um inteiro positivo. A configuração padrão para *valor* é 0 e permite solicitações ilimitadas.
+ `@pool_name`: associa o grupo de workload ao grupo de recursos definido pelo usuário identificado por *pool\$1name* ou ao grupo de recursos `default`. Se *pool\$1name* não for fornecido, o grupo de workload será associado ao grupo `default` integrado.

**Exemplos**

```
--This creates workload group named 'analytics'
USE msdb;
EXEC dbo.rds_create_workload_group 
    @group_name = 'analytics',
    @IMPORTANCE = 'HIGH',
    @REQUEST_MAX_MEMORY_GRANT_PERCENT = 25, 
    @REQUEST_MAX_CPU_TIME_SEC = 0, 
    @REQUEST_MEMORY_GRANT_TIMEOUT_SEC = 0, 
    @MAX_DOP = 0, 
    @GROUP_MAX_REQUESTS = 0, 
    @pool_name = 'analytics';

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
  
--Validate configuration
select * from sys.resource_governor_workload_groups
```

### Alterar o grupo de workload
<a name="ResourceGovernor.AlterWorkloadGroup"></a>

**Uso**

```
EXEC msdb.dbo.rds_alter_workload_group
    @group_name = value,
    @IMPORTANCE = 'LOW|MEDIUM|HIGH',
    @REQUEST_MAX_MEMORY_GRANT_PERCENT = value,
    @REQUEST_MAX_CPU_TIME_SEC = value,
    @REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value,
    @MAX_DOP = value,
    @GROUP_MAX_REQUESTS = value,
    @pool_name = value
```

Os seguintes parâmetros são obrigatórios:
+ `@group_name`: é o nome de um grupo de workload definido pelo usuário existente ou padrão.

**nota**  
Alterar somente o parâmetro `REQUEST_MAX_MEMORY_GRANT_PERCENT` no grupo de workload padrão é aceito. Para o grupo de workload padrão, `REQUEST_MAX_MEMORY_GRANT_PERCENT` deve estar entre 1 e 70. Nenhum outro parâmetro pode ser modificado no grupo de workload padrão. Todos os parâmetros podem ser modificados no grupo de workload definido pelo usuário.

Os seguintes parâmetros são opcionais:
+ `@IMPORTANCE`: especifica a importância relativa de uma solicitação no grupo de workload. O valor padrão é MEDIUM.
+ `@REQUEST_MAX_MEMORY_GRANT_PERCENT`: especifica a quantidade máxima de memória do espaço de trabalho de consulta que uma única solicitação pode ter do grupo. *valor* é uma porcentagem do tamanho do grupo de recursos definido por `MAX_MEMORY_PERCENT`. O valor padrão é 25 No Amazon RDS, `REQUEST_MAX_MEMORY_GRANT_PERCENT` deve estar entre 1 e 70.
+ `@REQUEST_MAX_CPU_TIME_SEC`: especifica o tempo máximo de CPU, em segundos, que uma solicitação em lote pode usar. *valor* deve ser 0 ou um inteiro positivo. A configuração padrão para *valor* é 0, o que significa ilimitado.
+ `@REQUEST_MEMORY_GRANT_TIMEOUT_SEC`: especifica o tempo máximo, em segundos, que uma consulta pode esperar até que uma concessão da memória do espaço de trabalho da consulta fique disponível. *valor* deve ser 0 ou um inteiro positivo. A configuração padrão para *valor*, 0, usa um cálculo interno com base no custo da consulta para determinar o tempo máximo.
+ `@MAX_DOP`: especifica o grau máximo de paralelismo (MAXDOP) para execução paralela de consultas. O intervalo permitido para *valor* é de 0 a 64. A configuração padrão para *valor*, 0, usa a configuração global.
+ `@GROUP_MAX_REQUESTS`: especifica o número máximo de solicitações simultâneas que podem ser executadas no grupo de workload. *valor* deve ser 0 ou um inteiro positivo. A configuração padrão para *valor* é 0 e permite solicitações ilimitadas.
+ `@pool_name`: associa o grupo de workload ao grupo de recursos definido pelo usuário identificado por *pool\$1name*.

**Exemplos**

Exemplo para modificar a alteração do grupo de workload padrão REQUEST\$1MAX\$1MEMORY\$1GRANT\$1PERCENT:

```
--Modify default workload group (set memory grant cap to 10%)
USE msdb
EXEC dbo.rds_alter_workload_group    
    @group_name = 'default',
    @REQUEST_MAX_MEMORY_GRANT_PERCENT=10;
    
--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration
SELECT * FROM sys.resource_governor_workload_groups WHERE name='default';
```

Exemplo para modificar o grupo de workload não padrão:

```
EXEC msdb.dbo.rds_alter_workload_group    
    @group_name = 'analytics',
    @IMPORTANCE = 'HIGH',
    @REQUEST_MAX_MEMORY_GRANT_PERCENT = 30,
    @REQUEST_MAX_CPU_TIME_SEC = 3600,
    @REQUEST_MEMORY_GRANT_TIMEOUT_SEC = 60,
    @MAX_DOP = 4,
    @GROUP_MAX_REQUESTS = 100;

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
```

Exemplo para mover um grupo de workload não padrão para outro grupo de recursos:

```
EXEC msdb.dbo.rds_alter_workload_group    
@group_name = 'analytics',
@pool_name='abc'

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration
select * from sys.resource_governor_workload_groups
```

### Eliminar um grupo de workload
<a name="ResourceGovernor.DropWorkloadGroup"></a>

**Uso**

```
EXEC msdb.dbo.rds_drop_workload_group    
@group_name = value
```

Os seguintes parâmetros são obrigatórios:
+ `@group_name`: é o nome de um grupo de workload definido pelo usuário existente.

**Exemplos**

```
--Drops a Workload Group:
EXEC msdb.dbo.rds_drop_workload_group    
@group_name = 'analytics';

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration
select * from sys.resource_governor_workload_groups
```

## Criar e registrar a função classificadora
<a name="ResourceGovernor.ClassifierFunction"></a>

Esse procedimento cria uma função classificadora do administrador de recursos no banco de dados principal que direciona as conexões para grupos de workload personalizados com base em critérios especificados (nome do usuário, banco de dados, host ou nome da aplicação). Se o administrador de recursos estiver habilitado e uma função classificadora for especificada na configuração do administrador de recursos, a saída da função determinará o grupo de workload usado para novas sessões. Na ausência de uma função classificadora, todas as sessões são classificadas no grupo `default`.

**Recursos:**
+ Comporta até dois grupos de workload com as respectivas condições de roteamento.
+ Combina critérios com condições `AND` dentro de cada grupo.
+ Requer pelo menos um critério de roteamento por grupo de workload.
+ O nome da função deve começar com `rg_classifier_`.
+ Atribuição de grupo padrão se nenhuma condição coincidir.

A função classificadora tem as seguintes características e comportamentos:
+ A função é definida no escopo do servidor (no banco de dados principal).
+ A função é definida com associação de esquema.
+ A função é avaliada para cada nova sessão, mesmo quando o grupo de conexões está habilitado.
+ A função exibe o contexto do grupo de workload da sessão. A sessão é atribuída ao grupo de workload exibido pelo classificador durante a vida útil da sessão.
+ Se a função exibir NULL, padrão ou o nome de um grupo de workload inexistente, a sessão receberá o contexto padrão do grupo de workload. A sessão também receberá o contexto padrão se a função falhar por qualquer motivo.
+ É possível criar várias funções classificadoras. No entanto, o SQL Server permite que somente uma função classificadora seja registrada por vez.
+ A função classificadora não pode ser descartada, a menos que seu status de classificador seja removido usando o procedimento de cancelamento de registro (`EXEC dbo.msdb.rds_alter_resource_governor_configuration @deregister_function = 1;`) que define o nome da função como NULL ou outra função classificadora seja registrada usando (`EXEC dbo.msdb.rds_alter_resource_governor_configuration @classifier_function = <function_name>;`).
+ Na ausência de uma função classificadora, todas as sessões são classificadas no grupo padrão.
+ Você não pode modificar uma função classificadora enquanto ela é referida na configuração do administrador de recursos. No entanto, é possível modificar a configuração para usar uma função classificadora diferente. Se você quiser fazer alterações no classificador, pense em criar um par de funções classificadoras. Por exemplo, você pode criar `rg_classifier_a` e `rg_classifier_b`.

**Uso**

```
EXEC msdb.dbo.rds_create_classifier_function 
@function_name = value,
@workload_group1 = value, 
@user_name1 = value,
@db_name1 = value,
@host_name1 = value, 
@app_name1 = value, 
@workload_group2 = value,
@user_name2 = value,
@db_name2 = value,
@host_name2 = value,
@app_name2 = value
```

Os seguintes parâmetros são obrigatórios:
+ `@function_name`: nome da função classificadora. Deve começar com `rg_classifier_`
+ `@workload_group1`: nome do primeiro grupo de workload.

Os seguintes parâmetros são opcionais:

(Pelo menos um desses critérios deve ser especificado para o grupo 1.)
+ `@user_name1`: nome de login para o grupo 1.
+ `@db_name1`: nome do banco de dados para o grupo 1.
+ `@host_name1`: nome do host para o grupo 1.
+ `@app_name1`: nome da aplicação para o grupo 1.

(Se o grupo 2 for especificado, pelo menos, um critério deve ser fornecido.)
+ `@workload_group2`: nome do segundo grupo de workload.
+ `@user_name2`: nome de login para o grupo 2.
+ `@db_name2`: nome do banco de dados para o grupo 2.
+ `@host_name2`: nome do host para o grupo 2.
+ `@app_name2`: nome da aplicação para o grupo 2.

**nota**  
As contas do sistema, bancos de dados, aplicações e host são restritos.

**Exemplos**

Exemplo básico com um grupo de workload:

```
/*Create a classifier to route all requests from 'PowerBI' app to workload group 
'reporting_group'*/

EXEC msdb.dbo.rds_create_classifier_function
@function_name = 'rg_classifier_a',
@workload_group1 = 'reporting_group',
@app_name1 = 'PowerBI';

--Register the classifier
EXEC msdb.dbo.rds_alter_resource_governor_configuration
@classifier_function = 'rg_classifier_a';

-- Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration

/*Query sys.resource_governor_configuration to validate that resource governor is enabled and is using the classifier function we created and registered*/

use master
go
SELECT OBJECT_SCHEMA_NAME(classifier_function_id) AS classifier_schema_name,
       OBJECT_NAME(classifier_function_id) AS classifier_object_name,
       is_enabled
FROM sys.resource_governor_configuration;
```

## Eliminar função classificadora
<a name="ResourceGovernor.DropClassifier"></a>

**Uso**

```
USE [msdb]
EXEC dbo.rds_drop_classifier_function
@function_name = value;
```

O seguinte parâmetro é obrigatório:
+ `@function_name`: é o nome de uma função classificadora existente definida pelo usuário.

**Exemplo**

```
EXEC msdb.dbo.rds_drop_classifier_function
@function_name = 'rg_classifier_b';
```

## Cancelar registro da função classificadora
<a name="ResourceGovernor.DeregisterClassifier"></a>

Use esse procedimento para cancelar o registro da função classificadora. Depois que o registro da função for cancelado, novas sessões serão automaticamente atribuídas ao grupo de workload padrão.

**Uso**

```
USE [msdb]
EXEC dbo.rds_alter_resource_governor_configuration    
@deregister_function = 1;
```

Para cancelar o registro, o seguinte parâmetro é obrigatório:
+ `@deregister_function` deve ser 1.

**Exemplo**

```
EXEC msdb.dbo.rds_alter_resource_governor_configuration 
    @deregister_function = 1;
GO

-- Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
```

## Redefinir estatísticas
<a name="ResourceGovernor.ResetStats"></a>

As estatísticas do administrador de recursos são cumulativas desde a última reinicialização do servidor. Se precisar coletar estatísticas a partir de determinado momento, você poderá redefinir as estatísticas usando o procedimento armazenado do Amazon RDS a seguir.

**Uso**

```
USE [msdb]
EXEC dbo.rds_alter_resource_governor_configuration  
@reset_statistics = 1;
```

Para ver as estatísticas de redefinição, o seguinte parâmetro é necessário:
+ `@reset_statistics` deve ser 1.

## Alterações na configuração do administrador de recursos
<a name="ResourceGovernor.ConfigChanges"></a>

Quando o administrador de recursos não está habilitado, `rds_alter_resource_governor_configuration` habilita o administrador de recursos. A desativação do administrador de recursos tem os seguintes resultados:
+ A função classificadora, se houver, é executada para novas sessões, atribuindo-as a grupos de workload.
+ Os limites de recursos especificados na configuração do administrador de recursos são respeitados e aplicados.
+ Os limites de recursos especificados na configuração do administrador de recursos são respeitados e aplicados.
+ As solicitações que existiam antes da ativação do administrador de recursos podem ser afetadas por quaisquer alterações de configuração feitas quando o administrador de recursos está habilitado.
+ As solicitações que existiam antes da ativação do administrador de recursos podem ser afetadas por quaisquer alterações de configuração feitas quando o administrador de recursos está habilitado.
+ No RDS para SQL Server, `EXEC msdb.dbo.rds_alter_resource_governor_configuration` deve ser executado para que qualquer alteração na configuração do administrador de recursos tenha efeito. 

**Uso**

```
USE [msdb]
EXEC dbo.rds_alter_resource_governor_configuration
```

## Vincular TempDB a um grupo de recursos
<a name="ResourceGovernor.BindTempDB"></a>

Você pode vincular metadados otimizados para memória tempdb a um grupo de recursos específico usando `rds_bind_tempdb_metadata_to_resource_pool` no Amazon RDS SQL Server versão 2019 e posterior.

**nota**  
O recurso de metadados tempdb otimizado para memória deve ser habilitado antes de vincular os metadados tempdb ao grupo de recursos. Para habilitar esse recurso no Amazon RDS, trata-se de um parâmetro estático `tempdb metadata memory-optimized`.

Habilite o parâmetro estático no Amazon RDS e realize uma reinicialização sem failover para que o parâmetro entre em vigor:

```
aws rds modify-db-parameter-group \
    --db-parameter-group-name test-sqlserver-ee-2022 \
    --parameters "ParameterName='tempdb metadata memory-optimized',ParameterValue=True,ApplyMethod=pending-reboot"
```

**Uso**

```
USE [msdb]
EXEC dbo.rds_bind_tempdb_metadata_to_resource_pool  
@pool_name=value;
```

O seguinte parâmetro é obrigatório:
+ `@pool_name`: é o nome de um grupo de recursos existente definido pelo usuário.

**nota**  
Essa alteração também exige que a reinicialização do serviço sql sem failover entre em vigor, mesmo que o recurso de metadados TempDB otimizado para memória já esteja habilitado.

## Desvincular o TempDB de um grupo de recursos
<a name="ResourceGovernor.UnbindTempDB"></a>

Desvincule metadados otimizados para memória tempdb de um grupo de recursos.

**nota**  
Essa alteração também requer a reinicialização do serviço sql sem failover para entrar em vigor.

**Uso**

```
USE [msdb]
EXEC dbo.rds_unbind_tempdb_metadata_from_resource_pool
```

## Limpar o administrador de recursos
<a name="ResourceGovernor.Cleanup"></a>

Esse procedimento é utilizado para limpar todos os objetos associados depois de remover a opção de administrador de recursos do grupo de opções. Isso desabilita o administrador de recursos, reverte o grupo de carga de workload padrão para as configurações padrão, remove grupos de workload personalizados, grupos de recursos e funções classificadoras.

**Atributos principais**
+ Reverte o grupo de workload padrão para as configurações padrão.
+ Desabilita o administrador de recursos.
+ Remove grupos de workload personalizados.
+ Remove grupos de recursos personalizados.
+ Elimina funções classificadoras.
+ Remove a vinculação do grupo de recursos tempdb, se habilitada.

**Importante**  
Essa limpeza poderá causar um erro se houver sessões ativas no grupo de workload. Aguarde o término das sessões ativas ou encerre as sessões ativas de acordo com suas necessidades comerciais. É recomendável realizar isso durante a janela de manutenção.   
Essa limpeza poderá gerar um erro se um grupo de recursos estiver vinculado ao tempdb e a reinicialização sem failover ainda não tiver ocorrido. Se você vinculou um grupo de recursos ao tempdb ou o desvinculou do tempdb anteriormente, realize a reinicialização sem failover para que a alteração seja implementada. É recomendável realizar isso durante a janela de manutenção.

**Uso**

```
USE [msdb]
EXEC dbo.rds_cleanup_resource_governor
```

## Considerações para implantações Multi-AZ
<a name="ResourceGovernor.Considerations"></a>

O RDS para SQL Server replica o administrador de recursos em uma instância secundária em uma implantação multi-AZ. Você pode verificar quando foi modificado e quando o novo administrador de recursos foi sincronizado pela última vez com a instância secundária.

Use a seguinte consulta para conferir o `last_sync_time` da replicação:

```
SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();
```

Nos resultados da consulta, se o horário de sincronização tiver passado do horário de atualização ou criação do administrador de recursos, este será sincronizado com o secundário.

Para realizar um failover manual do banco de dados para confirmar a replicação do administrador de recursos, aguarde `last_sync_time` ser atualizado primeiro. Depois, continue com o failover multi-AZ.

## Considerações sobre réplicas de leitura
<a name="ResourceGovernor.ReadReplica"></a>
+ Para réplicas do SQL Server na mesma região da instância de banco de dados de origem, use o mesmo grupo de opções que essa instância. As alterações no grupo de opções se propagam para as réplicas imediatamente, independentemente de suas janelas de manutenção.
+ Quando você cria uma réplica entre regiões do SQL Server, o RDS cria um grupo de opções dedicado para ela.
+ Não é possível remover uma réplica entre regiões no SQL Server do seu grupo de opções dedicado. Nenhuma outra instância de banco de dados pode usar o grupo de opções dedicado para uma réplica entre regiões no SQL Server.
+ A opção de administrador de recursos é uma opção não replicada. Você pode adicionar ou remover opções não replicadas de um grupo de opções dedicado.
+ Quando você promove uma réplica de leitura entre regiões no SQL Server, a réplica promovida se comporta da mesma maneira que outras instâncias de banco de dados do SQL Server, inclusive o gerenciamento de suas opções.

**nota**  
Ao usar o administrador de recursos em uma réplica de leitura, você deve garantir manualmente que o administrador de recursos tenha sido configurado em sua réplica de leitura usando os procedimentos armazenados do Amazon RDS depois que a opção for adicionada ao grupo de opções. As configurações do administrador de recursos não são replicadas automaticamente na réplica de leitura. Além disso, a workload na réplica de leitura geralmente é diferente da instância primária. Portanto, é recomendável aplicar a configuração do recurso na réplica com base na sua workload e no tipo de instância. Você pode executar esses procedimentos armazenados do Amazon RDS na réplica de leitura de forma independente para configurar o administrador de recursos na réplica de leitura.

# Monitorar o administrador de recursos do Microsoft SQL Server utilizando visualizações do sistema para sua instância do RDS para SQL Server
<a name="ResourceGovernor.Monitoring"></a>

As estatísticas do administrador de recursos são cumulativas desde a última reinicialização do servidor. Se precisar coletar estatísticas a partir de determinado momento, você poderá redefinir as estatísticas usando o seguinte procedimento armazenado do Amazon RDS:

```
EXEC msdb.dbo.rds_alter_resource_governor_configuration  
@reset_statistics = 1;
```

## Estatísticas de runtime do grupo de recursos
<a name="ResourceGovernor.ResourcePoolStats"></a>

Para cada grupo de recursos, o administrador de recursos monitora a utilização da CPU e da memória, eventos de falta de memória, concessões de memória, E/S e outras estatísticas. Para acessar mais informações, consulte [sys.dm\$1resource\$1governor\$1resource\$1pools](https://learn.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-resource-governor-resource-pools-transact-sql?view=sql-server-ver17).

A consulta a seguir exibe um subconjunto das estatísticas disponíveis para todos os grupos de recursos:

```
SELECT rp.pool_id,
       rp.name AS resource_pool_name,
       wg.workload_group_count,
       rp.statistics_start_time,
       rp.total_cpu_usage_ms,
       rp.target_memory_kb,
       rp.used_memory_kb,
       rp.out_of_memory_count,
       rp.active_memgrant_count,
       rp.total_memgrant_count,
       rp.total_memgrant_timeout_count,
       rp.read_io_completed_total,
       rp.write_io_completed_total,
       rp.read_bytes_total,
       rp.write_bytes_total,
       rp.read_io_stall_total_ms,
       rp.write_io_stall_total_ms
FROM sys.dm_resource_governor_resource_pools AS rp
OUTER APPLY (
            SELECT COUNT(1) AS workload_group_count
            FROM sys.dm_resource_governor_workload_groups AS wg
            WHERE wg.pool_id = rp.pool_id
            ) AS wg;
```

# Desabilitar o administrador de recursos do Microsoft SQL Server para sua instância do RDS para SQL Server
<a name="ResourceGovernor.Disabling"></a>

Quando você desabilita o administrador de recursos no RDS para SQL Server, o serviço para de gerenciar os recursos da workload. Antes de desabilitar o administrador de recursos, analise como isso afeta suas configurações e conexões de banco de dados.

A desativação do administrador de recursos tem os seguintes resultados:
+ A função classificadora não é executada quando uma nova conexão é aberta.
+ As novas conexões são classificadas automaticamente no grupo de workload padrão.
+ Todas as configurações existentes do grupo de workload e do grupo de recursos são redefinidas como os valores padrão.
+ Nenhum evento é acionado quando os limites são atingidos.
+ Alterações na configuração do administrador de recursos podem ser feitas, mas elas não são implementadas até que o administrador de recursos seja habilitado.

Para desabilitar o administrador de recursos, remova a opção `RESOURCE_GOVERNOR` do grupo de opções.

## Console
<a name="ResourceGovernor.Disabling.Console"></a>

O procedimento a seguir remove a opção `RESOURCE_GOVERNOR`.

**Como remover a opção RESOURCE\$1GOVERNOR do grupo de opções**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Selecione o grupo de opções com a opção `RESOURCE_GOVERNOR` (`resource-governor-ee-2022` nos exemplos anteriores).

1. Selecione **Delete option (Excluir opção)**.

1. Em **Opções de exclusão**, selecione **RESOURCE\$1GOVERNOR** em **Opções a serem excluídas**.

1. Em **Apply immediately** (Aplicar imediatamente), selecione **Yes** (Sim) para excluí-la imediatamente ou **No** (Não) para excluí-la na próxima janela de manutenção.

1. Escolha **Excluir**.

## CLI
<a name="ResourceGovernor.Disabling.CLI"></a>

O procedimento a seguir remove a opção `RESOURCE_GOVERNOR`.

**Como remover a opção RESOURCE\$1GOVERNOR do grupo de opções**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds remove-option-from-option-group \
      --option-group-name resource-governor-ee-2022 \
      --options RESOURCE_GOVERNOR \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name resource-governor-ee-2022 ^
      --options RESOURCE_GOVERNOR ^
      --apply-immediately
  ```

# Práticas recomendadas para configurar o administrador de recursos no RDS para SQL Server
<a name="ResourceGovernor.BestPractices"></a>

Para controlar o consumo de recursos, o RDS para SQL Server comporta o administrador de recursos do Microsoft SQL Server. As práticas recomendadas a seguir ajudam a evitar problemas comuns de configuração e otimizar a performance do banco de dados.

1. A configuração do administrador de recursos é armazenada no banco de dados `master`. Recomendamos que você sempre salve uma cópia dos scripts de configuração do administrador de recursos separadamente.

1. A função classificadora estende o tempo de processamento do login, portanto, é recomendável evitar uma lógica complexa no classificador. Uma função excessivamente complexa pode causar atrasos no login ou tempos limite de conexão, incluindo sessões de automação do Amazon RDS. Isso pode afetar a capacidade da automação do Amazon RDS de monitorar a integridade da instância. Portanto, é sempre recomendável testar a função classificadora em um ambiente de pré-produção antes de implementá-la em ambientes de produção.

1. Evite definir valores altos (acima de 70) para `REQUEST_MAX_MEMORY_GRANT_PERCENT` em grupos de workload, pois isso pode impedir que a instância do banco de dados aloque memória suficiente para outras consultas simultâneas, o que pode gerar erros de tempo limite de concessão de memória (Erro 8645). Por outro lado, definir esse valor muito baixo (menor que 1) ou como 0 pode impedir que consultas que precisam de espaço de trabalho de memória (como aquelas que envolvem operações de classificação ou hash) sejam executadas adequadamente em grupos de workload definidos pelo usuário. O RDS impõe esses limites restringindo os valores entre 1 e 70 nos grupos de workload padrão.

1. Para vincular tempdb ao grupo de recursos, depois de vincular metadados tempdb otimizados para memória a um grupo, o grupo pode atingir sua configuração máxima e qualquer consulta que use `tempdb` pode falhar com erros de falta de memória. Em determinadas circunstâncias, o SQL Server pode parar caso ocorra um erro de falta de memória. Para reduzir a chance de isso acontecer, defina o `MAX_MEMORY_PERCENT` do grupo de memória como um valor alto.

# Tarefas comuns de DBA no Amazon RDS para Microsoft SQL Server
<a name="Appendix.SQLServer.CommonDBATasks"></a>

Esta seção descreve implantações específicas ao Amazon RDS de algumas tarefas comuns de DBA para instâncias de bancos de dados que executam o mecanismo de banco de dados do Microsoft SQL Server. A fim de oferecer uma experiência de serviço gerenciado, o Amazon RDS não fornece acesso ao shell para instâncias de bancos de dados e restringe o acesso a determinados procedimentos e tabelas do sistema que exigem privilégios avançados. 

**nota**  
Ao trabalhar com uma instância de banco de dados SQL Server, é possível executar scripts para modificar um banco de dados recém-criado. No entanto, não é possível modificar o banco de dados [model], pois ele é usado como o modelo para novos bancos de dados. 

**Topics**
+ [Acessar o banco de dados tempdb em instâncias de banco de dados Microsoft SQL Server no Amazon RDS](SQLServer.TempDB.md)
+ [Análise da workload do banco de dados em uma instância de banco de dados do Amazon RDS para SQL Server com o Orientador de Otimização do Mecanismo de Banco de Dados](Appendix.SQLServer.CommonDBATasks.Workload.md)
+ [Alterar `db_owner` para a conta `rdsa` do banco de dados do Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.ChangeDBowner.md)
+ [Gerenciar agrupamentos e conjuntos de caracteres para o Amazon RDS para Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.Collation.md)
+ [Criar um usuário de banco de dados para o Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.CreateUser.md)
+ [Determinar um modelo de recuperação para o banco de dados do Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.DatabaseRecovery.md)
+ [Determinar o horário do último failover do Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.LastFailover.md)
+ [Solução de problemas de falhas de recuperação para um ponto no tempo devido a uma descontinuidade no número de sequência de log](Appendix.SQLServer.CommonDBATasks.PITR-LSN-Gaps.md)
+ [Negue ou permita a visualização de nomes de banco de dados no Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.ManageView.md)
+ [Desabilitar inserções rápidas durante o carregamento em massa para o Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.DisableFastInserts.md)
+ [Eliminar um banco de dados em uma instância de banco de dados do Amazon RDS para Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.DropMirrorDB.md)
+ [Renomear um banco de dados do Amazon RDS para Microsoft SQL Server em uma implantação multi-AZ](Appendix.SQLServer.CommonDBATasks.RenamingDB.md)
+ [Redefinir a associação ao perfil db\$1owner para o usuário principal no Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.ResetPassword.md)
+ [Restaurar instâncias de banco de dados com licenças encerradas no Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.RestoreLTI.md)
+ [Transição de um banco de dados do Amazon RDS para SQL Server de OFFLINE para ONLINE](Appendix.SQLServer.CommonDBATasks.TransitionOnline.md)
+ [Usar a captura de dados de alteração para o Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.CDC.md)
+ [Usar o agente do SQL Server para o Amazon RDS](Appendix.SQLServer.CommonDBATasks.Agent.md)
+ [Trabalhar com logs do Amazon RDS para Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.Logs.md)
+ [Trabalhar com arquivos de rastreamento e despejo do Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.TraceFiles.md)

# Acessar o banco de dados tempdb em instâncias de banco de dados Microsoft SQL Server no Amazon RDS
<a name="SQLServer.TempDB"></a>

Você pode acessar o banco de dados `tempdb` nas instâncias de bancos de dados Microsoft SQL Server no Amazon RDS. É possível executar o código em `tempdb` usando Transact-SQL pelo Microsoft SQL Server Management Studio (SSMS) ou de qualquer outro aplicativo cliente SQL padrão. Para obter mais informações sobre como se conectar à sua instância de banco de dados, consulte [Conectar-se à instância de banco de dados do Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md). 

O usuário mestre para a instância de banco de dados tem acesso `CONTROL` a `tempdb` para que esse usuário possa modificar as opções do banco de dados `tempdb`. O usuário mestre não é o proprietário do banco de dados `tempdb`. Se necessário, o usuário mestre poderá conceder acesso a `CONTROL` a outros usuários, para que eles também possam modificar as opções do banco de dados `tempdb`. 

**nota**  
Não é possível executar Database Console Commands (DBCC) no banco de dados `tempdb`. 

# Modificar opções do banco de dados tempdb
<a name="SQLServer.TempDB.Modifying"></a>

Você pode modificar as opções no banco de dados `tempdb` nas instâncias de bancos de dados do Amazon RDS. Para obter mais informações sobre quais opções podem ser modificadas, consulte [Banco de dados tempdb](https://msdn.microsoft.com/en-us/library/ms190768%28v=sql.120%29.aspx) na documentação da Microsoft.

As opções do banco de dados, como as opções de tamanho máximo do arquivo, são persistentes depois que você reinicia sua instância de banco de dados. Você pode modificar as opções do banco de dados para otimizar a performance ao importar dados e para não ficar sem espaço de armazenamento.

## Otimizar a performance ao importar dados
<a name="SQLServer.TempDB.Modifying.Import"></a>

Para otimizar a performance ao importar grandes quantidades de dados na sua instância de banco de dados, defina as propriedades `SIZE` e `FILEGROWTH` do banco de dados tempdb para grandes quantidades. Para obter mais informações sobre como otimizar `tempdb`, consulte [Otimizando a performance do tempdb](https://technet.microsoft.com/en-us/library/ms175527%28v=sql.120%29.aspx) na documentação da Microsoft.

O exemplo a seguir demonstra a configuração do tamanho para 100 GB e o crescimento de arquivos para 10%. 

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

## Prevenir problemas de armazenamento
<a name="SQLServer.TempDB.Modifying.Full"></a>

Para evitar que o banco de dados `tempdb` use todo o espaço em disco disponível, defina a propriedade `MAXSIZE`. O exemplo a seguir demonstra a configuração da propriedade para 2048 MB. 

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

# Recolher o banco de dados tempdb
<a name="SQLServer.TempDB.Shrinking"></a>

Existem duas maneiras de reduzir o banco de dados `tempdb` na instância de banco de dados do Amazon RDS. Você pode usar o procedimento `rds_shrink_tempdbfile` ou pode definir a propriedade `SIZE`, 

## Usar o procedimento rds\$1shrink\$1tempdbfile
<a name="SQLServer.TempDB.Shrinking.Proc"></a>

Você pode usar o procedimento `msdb.dbo.rds_shrink_tempdbfile` do Amazon RDS para reduzir o banco de dados `tempdb`. Só será possível chamar `rds_shrink_tempdbfile` se você tiver acesso `CONTROL` a `tempdb`. Quando você chama `rds_shrink_tempdbfile`, não há tempo de inatividade para sua instância de banco de dados. 

O procedimento `rds_shrink_tempdbfile` tem os seguintes parâmetros.


****  

| Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição | 
| --- | --- | --- | --- | --- | 
| `@temp_filename` | SYSNAME | — | obrigatório | O nome lógico do arquivo para encolher. | 
| `@target_size` | int | nulo | opcional | O novo tamanho para o arquivo, em megabytes. | 

O exemplo a seguir obtém os nomes dos arquivos para o banco de dados `tempdb`.

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

O exemplo a seguir reduz um arquivo do banco de dados `tempdb` chamado `test_file` e solicita um novo tamanho de `10` megabytes: 

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

## Definir a propriedade SIZE
<a name="SQLServer.TempDB.Shrinking.Size"></a>

Você também pode reduzir o banco de dados `tempdb` definindo a propriedade `SIZE` e reiniciando a instância de banco de dados. Para obter mais informações sobre como reiniciar sua instância de banco de dados, consulte [Reinicializar uma instância de banco de dados](USER_RebootInstance.md).

O exemplo a seguir demonstra a configuração da propriedade `SIZE` para 1024 MB. 

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

# Configuração TempDB para implantações multi-AZ
<a name="SQLServer.TempDB.MAZ"></a>

Se a instância de banco de dados do RDS para o SQL Server estiver em uma implantação multi-AZ usando o Database Mirroring (DBM) ou grupos de disponibilidade (AGs) Always On, lembre-se das considerações a seguir para o uso do banco de dados `tempdb`.

Não é possível replicar dados do `tempdb` da instância de banco de dados primária para a instância de banco de dados secundária. Ao fazer failover para uma instância de banco de dados secundária, o `tempdb` nessa instância de banco de dados secundária estará vazia.

É possível sincronizar a configuração das opções do banco de dados `tempdb`, incluindo o tamanho do arquivo e as configurações de crescimento automático, da instância de banco de dados primária para a instância de banco de dados secundária. A sincronização da configuração `tempDB` é aceita em todas as versões do RDS para SQL Server. É possível ativar a sincronização automática da configuração `tempdb` usando o seguinte procedimento armazenado:

```
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'TempDbFile';
```

**Importante**  
Antes de usar o procedimento armazenado `rds_set_system_database_sync_objects`, defina a configuração `tempdb` preferencial na instância de banco de dados primária, e não na instância de banco de dados secundária. Se você tiver feito a alteração na instância de banco de dados secundária, a configuração `tempdb` preferencial poderá ser excluída ao ativar a sincronização automática.

É possível usar a seguinte função para confirmar se a sincronização automática da configuração `tempdb` está ativada:

```
SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();
```

Quando a sincronização automática da configuração `tempdb` estiver ativada, haverá um valor exibido para o campo `object_class`. Quando está desativada, nenhum valor é exibido.

É possível usar a seguinte função para descobrir a última vez que os objetos foram sincronizados no horário UTC:

```
SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();
```

Por exemplo, se você modificou a configuração `tempdb` às 01:00 e depois executou a função `rds_fn_server_object_last_sync_time`, o valor exibido para `last_sync_time` deve ser posterior à 01:00, indicando que ocorreu uma sincronização automática.

Se você também estiver usando a replicação do SQL Server Agent, poderá habilitar a replicação tanto para os trabalhos do SQL Agent quanto para a configuração `tempdb` fornecendo-os no parâmetro `@object_type`:

```
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'SQLAgentJob,TempDbFile';
```

Para ter mais informações sobre a replicação de trabalhos do SQL Server Agent, consulte [Ativar a replicação de trabalhos do SQL Server Agent](Appendix.SQLServer.CommonDBATasks.Agent.md#SQLServerAgent.Replicate).

Como alternativa ao uso do procedimento armazenado `rds_set_system_database_sync_objects` para garantir que as alterações da configuração `tempdb` sejam sincronizadas automaticamente, é possível usar um dos seguintes métodos manuais:

**nota**  
Recomendamos ativar a sincronização automática da configuração `tempdb` usando o procedimento armazenado `rds_set_system_database_sync_objects`: O uso da sincronização automática evita a necessidade de realizar essas tarefas manuais sempre que você altera a configuração `tempdb`.
+ Primeiro modifique sua instância de banco de dados e desative o Multi-AZ e depois modifique tempdb e finalmente volte a ativar o Multi-AZ. Esse método não envolve qualquer tempo de inatividade.

  Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md). 
+ Modifique `tempdb` na instância primária original, faça failover manualmente e, por fim, modifique `tempdb` na nova instância primária. Esse método envolve tempo de inatividade. 

  Para ter mais informações, consulte [Reinicializar uma instância de banco de dados](USER_RebootInstance.md).

# Análise da workload do banco de dados em uma instância de banco de dados do Amazon RDS para SQL Server com o Orientador de Otimização do Mecanismo de Banco de Dados
<a name="Appendix.SQLServer.CommonDBATasks.Workload"></a>

O Orientador de Otimização do Mecanismo de Banco de Dados é uma aplicação de cliente fornecida pela Microsoft que analisa a workload do banco de dados e recomenda um conjunto ideal de índices aos bancos de dados do Microsoft SQL Server, com base nos tipos de consultas que você executa. Assim como no SQL Server Management Studio, você executa o Orientador de Otimização em um computador cliente conectado à instância de banco de dados do Amazon RDS que está executando o SQL Server. O computador cliente pode ser um computador local que você executa nas instalações dentro de sua própria rede, ou pode ser uma instância do Amazon EC2 para Windows que está sendo executada na mesma região que a sua instância de banco de dados do Amazon RDS.

Esta seção mostra como capturar uma workload para análise do Orientador de Otimização. Este é o processo ideal para capturar uma workload, pois o Amazon RDS restringe o acesso do host à instância do SQL Server. Para obter mais informações, consulte [Database Engine Tuning Advisor](https://docs.microsoft.com/en-us/sql/relational-databases/performance/database-engine-tuning-advisor) (Orientador de Otimização do Mecanismo de Banco de dados) na documentação da Microsoft.

Para usar Orientador de Otimização, é necessário fornecer uma workload ao aplicativo. Uma workload é um conjunto de instruções Transact-SQL executadas em um banco de dados ou nos bancos de dados que você deseja ajustar. Orientador de Otimização do Mecanismo de Banco de Dados usa arquivos de rastreamento, tabelas de rastreamento, scripts Transact-SQL ou arquivos XML como entrada de workload ao ajustar bancos de dados. Ao trabalhar com o Amazon RDS, uma workload pode ser um arquivo em um computador cliente ou uma tabela de banco de dados em um banco de dados do Amazon RDS para SQL Server que pode ser acessada pelo computador cliente. O arquivo ou a tabela deve conter consultas feitas nos bancos de dados que você deseja ajustar e em um formato adequado para repetição.

Para que o Orientador de Otimização seja mais eficiente, uma workload deve ser o mais realista possível. É possível gerar um arquivo ou uma tabela de workload executando rastreamento na instância de banco de dados. Durante a execução do rastreamento, é possível simular uma carga na instância de banco de dados ou executar os aplicativos com uma carga normal.

Há dois tipos de rastreamento: no lado do cliente e no lado do servidor. A configuração de um rastreamento no lado do cliente é mais fácil e permite acompanhar a captura dos eventos de rastreamento em tempo real no SQL Server Profiler. A configuração de um rastreamento no lado do servidor é mais complexa e requer o uso de scripts Transact-SQL. Além disso, como o rastreamento é gravado em um arquivo na instância de banco de dados do Amazon RDS, o espaço de armazenamento é consumido pelo rastreamento. É importante controlar o espaço de armazenamento usado pelo rastreamento em execução no lado do servidor, pois a instância de banco de dados não ficará mais disponível se não houver espaço de armazenamento.

No caso de um rastreamento no lado do cliente, quando uma quantidade suficiente de dados de rastreamento é capturada no SQL Server Profiler, é possível gerar o arquivo de workload. Para isso, basta salvar o rastreamento em um arquivo no computador local ou em uma tabela de banco de dados em uma instância de banco de dados disponível para o seu computador cliente. A principal desvantagem de usar um rastreamento no lado do cliente é que talvez nem todas as consultas sejam capturadas quando sob cargas pesadas. Isso pode diminuir a eficácia da análise realizada pelo Orientador de Otimização do Mecanismo de Banco de Dados. Se você precisar executar um rastreamento sob cargas pesadas e desejar garantir que sejam capturadas todas as consultas durante uma sessão de rastreamento, será necessário usar um rastreamento no lado do servidor.

Para realizar um rastreamento do lado do servidor, é necessário que os arquivos de rastreamento na instância de banco de dados estejam em um arquivo de workload adequado. Também é possível salvar o rastreamento em uma tabela na instância de banco de dados após a conclusão do rastreamento. Você pode usar SQL Server Profiler para salvar o rastreamento em um arquivo no computador local ou usar Orientador de Otimização, de modo que ele faça a leitura na tabela de rastreamento na instância de banco de dados.

# Execução de um rastreamento no lado do cliente em uma instância de banco de dados SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.TuningAdvisor.ClientSide"></a>

 **Para executar um rastreamento no lado do cliente em uma instância de banco de dados SQL Server** 

1. Inicie SQL Server Profiler. Ele é instalado na pasta Performance Tools da instância do SQL Server. É necessário carregar ou especificar um modelo de definição de rastreamento para iniciar um rastreamento no lado do cliente.

1. No menu Arquivo do SQL Server Profiler, escolha **New Trace (Novo rastreamento)**. Na caixa de diálogo **Connect to Server (Conectar-se ao servidor)**, insira o endpoint da instância de banco de dados, a porta, o nome de usuário principal e a senha do banco de dados no qual deseja executar um rastreamento.

1. Na caixa de diálogo **Trace Properties (Propriedades de rastreamento)**, insira um nome de rastreamento e escolha um modelo de definição de rastreamento. O aplicativo vem com o modelo padrão TSQL\$1Replay. É possível editar este modelo para definir o rastreamento. Edite eventos e as informações sobre eles na guia **Events Selection (Seleção de eventos)** da caixa de diálogo **Trace Properties (Propriedades de rastreamento)**.

   Para obter mais informações sobre os modelos de definição de rastreamento e sobre o uso do SQL Server Profiler para especificar um rastreamento no lado do cliente, consulte [Database Engine Tuning Advisor ](https://docs.microsoft.com/en-us/sql/relational-databases/performance/database-engine-tuning-advisor) (Orientador de Otimização do Mecanismo de Banco de dados) na documentação da Microsoft.

1. Inicie o rastreamento no lado do cliente e acompanhe as consultas do SQL em tempo real enquanto elas são executadas na instância de banco de dados.

1. Selecione **Stop Trace (Parar rastreamento)** no menu **File (Arquivo)** quando você tiver concluído o rastreamento. Salve os resultados como um arquivo ou como uma tabela de rastreamento na instância de banco de dados.

# Execução de rastreamentos no lado do servidor em uma instância de banco de dados SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.TuningAdvisor.ServerSide"></a>

A criação de scripts para fazer um rastreamento no lado do servidor pode ser uma tarefa complexa e está além do escopo deste documento. Esta seção contém amostras de scripts que é possível usar como exemplos. Assim como em um rastreamento no lado do cliente, o objetivo é criar um arquivo de workload ou uma tabela de rastreamento que você pode abrir usando o Orientador de Otimização do Mecanismo de Banco de Dados.

Veja a seguir um script de exemplo resumido iniciado no lado do servidor e que captura detalhes de rastreamento para um arquivo de workload. Inicialmente, o rastreamento é salvo no arquivo, que fica no diretório D:\$1RDSDBDATA\$1Log RDSTrace.trc, e é renovado a cada 100 MB. Assim, os arquivos de rastreamento subsequentes são chamados RDSTrace\$11.trc, RDSTrace\$12.trc etc.

```
DECLARE @file_name NVARCHAR(245) = 'D:\RDSDBDATA\Log\RDSTrace';
DECLARE @max_file_size BIGINT = 100;
DECLARE @on BIT = 1
DECLARE @rc INT
DECLARE @traceid INT

EXEC @rc = sp_trace_create @traceid OUTPUT, 2, @file_name, @max_file_size
IF (@rc = 0) BEGIN
   EXEC sp_trace_setevent @traceid, 10, 1, @on
   EXEC sp_trace_setevent @traceid, 10, 2, @on
   EXEC sp_trace_setevent @traceid, 10, 3, @on
 . . .
   EXEC sp_trace_setfilter @traceid, 10, 0, 7, N'SQL Profiler'
   EXEC sp_trace_setstatus @traceid, 1
   END
```

O exemplo a seguir é um script que interrompe um rastreamento. Observe que um rastreamento criado pelo script anterior continuará a ser executado até que seja explicitamente interrompido ou até que o processo fique sem espaço em disco.

```
DECLARE @traceid INT
SELECT @traceid = traceid FROM ::fn_trace_getinfo(default) 
WHERE property = 5 AND value = 1 AND traceid <> 1 

IF @traceid IS NOT NULL BEGIN
   EXEC sp_trace_setstatus @traceid, 0
   EXEC sp_trace_setstatus @traceid, 2
END
```

É possível salvar os resultados do rastreamento no lado do servidor em uma tabela de banco de dados e usar essa como a workload do Orientador de Otimização com a função fn\$1trace\$1gettable. Os comandos a seguir carregam os resultados de todos os arquivos chamados RDSTrace.trc no diretório D:\$1rdsdbdata\$1Log RDSTrace.trc, inclusive todos os arquivos subsequentes como RDSTrace\$11.trc, em uma tabela chamada RDSTrace no banco de dados atual.

```
SELECT * INTO RDSTrace
FROM fn_trace_gettable('D:\rdsdbdata\Log\RDSTrace.trc', default);
```

Para salvar um arquivo subsequente específico em uma tabela (por exemplo o RDSTrace\$11.trc), especifique o nome do arquivo e substitua default pelo número 1 como o último parâmetro para fn\$1trace\$1gettable.

```
SELECT * INTO RDSTrace_1
FROM fn_trace_gettable('D:\rdsdbdata\Log\RDSTrace_1.trc', 1);
```

# Execução do Orientador de Otimização com um rastreamento
<a name="Appendix.SQLServer.CommonDBATasks.TuningAdvisor.Running"></a>

Após a criação de um rastreamento, seja como um arquivo local ou uma tabela de banco de dados, é possível executar Orientador de Otimização na instância de banco de dados. Usar o Orientador de Otimização com o Amazon RDS é como trabalhar com uma instância autônoma e remota do SQL Server. É possível usar a interface de usuário do Orientador de Otimização na máquina cliente ou o utilitário dta.exe na linha de comando. Em ambos os casos, ao usar o Orientador de Otimização, você deve se conectar à instância de banco de dados do Amazon RDS usando o endpoint para a instância de banco de dados e fornecer seu nome de usuário mestre e senha de usuário mestre. 

O exemplo de código a seguir demonstra como usar o utilitário de linha de comando dta.exe em uma instância de banco de dados do Amazon RDS com um endpoint de **dta.cnazcmklsdei.us-east-1.rds.amazonaws.com**. O exemplo inclui o nome de usuário mestre **admin** e a senha do usuário mestre **test**. O banco de dados de exemplo a ser ajustado é chamado de máquina **C:\$1RDSTrace.trc**. O código de linha de comando do exemplo também especifica uma sessão de rastreamento chamada **RDSTrace1** e especifica os arquivos de saída para a máquina local chamados **RDSTrace.sql** para o script de saída do SQL, **RDSTrace.txt** para um arquivo de resultado e **RDSTrace.xml** para um arquivo XML da análise. Há também uma tabela de erros especificada no banco de dados do RDSDTA chamada **RDSTraceErrors**.

```
dta -S dta.cnazcmklsdei.us-east-1.rds.amazonaws.com -U admin -P test -D RDSDTA -if C:\RDSTrace.trc -s RDSTrace1 -of C:\ RDSTrace.sql -or C:\ RDSTrace.txt -ox C:\ RDSTrace.xml -e RDSDTA.dbo.RDSTraceErrors 
```

Veja o mesmo exemplo de código de linha de comando, exceto que a workload de entrada é uma tabela na instância remota do Amazon RDS denominada **RDSTrace** que está no banco de dados **RDSDTA**.

```
dta -S dta.cnazcmklsdei.us-east-1.rds.amazonaws.com -U admin -P test -D RDSDTA -it RDSDTA.dbo.RDSTrace -s RDSTrace1 -of C:\ RDSTrace.sql -or C:\ RDSTrace.txt -ox C:\ RDSTrace.xml -e RDSDTA.dbo.RDSTraceErrors
```

Para obter uma lista completa dos parâmetros da linha de comando do utilitário dta, consulte [dta Utility](https://docs.microsoft.com/en-us/sql/tools/dta/dta-utility) (Utilitário dta) na documentação da Microsoft.

# Alterar `db_owner` para a conta `rdsa` do banco de dados do Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.ChangeDBowner"></a>

Quando você cria ou restaura um banco de dados em uma instância de banco de dados do RDS para SQL Server, o Amazon RDS define o proprietário do banco de dados como. `rdsa`. Se você tiver uma implantação multi-AZ usando o espelhamento de banco de dados (DBM) ou grupos de disponibilidade AlwaysOn (AGs) do SQL Server, o Amazon RDS definirá o proprietário do banco de dados na instância de banco de dados secundária como `NT AUTHORITY\SYSTEM`. O proprietário do banco de dados secundário não poderá ser alterado enquanto a instância de banco de dados secundária não for promovida à função principal. Na maioria dos casos, definir o proprietário do banco de dados como `NT AUTHORITY\SYSTEM` não é um problema ao executar consultas, mas pode gerar erros ao executar procedimentos armazenados no sistema, como `sys.sp_updatestats` que exigem permissões elevadas para execução.

Você pode usar a seguinte consulta para identificar o proprietário dos bancos de dados de propriedade de `NT AUTHORITY\SYSTEM`:

```
SELECT name FROM sys.databases WHERE SUSER_SNAME(owner_sid) = 'NT AUTHORITY\SYSTEM';
```

É possível usar o procedimento armazenado `rds_changedbowner_to_rdsa` do Amazon RDS para alterar o proprietário do banco de dados para `rdsa`. Os seguintes bancos de dados não podem ser usados com `rds_changedbowner_to_rdsa`: `master, model, msdb, rdsadmin, rdsadmin_ReportServer, rdsadmin_ReportServerTempDB, SSISDB`.

Para alterar o proprietário do banco de dados para `rdsa`, chame o procedimento armazenado `rds_changedbowner_to_rdsa` e forneça o nome do banco de dados.

**Example uso:**  

```
exec msdb.dbo.rds_changedbowner_to_rdsa 'TestDB1';
```

O seguinte parâmetro é obrigatório:
+ `@db_name`: o nome do banco de dados para o qual alterar o proprietário do banco de dados `rdsa`.

**Importante**  
Não é possível usar `rds_changedbowner_to_rdsa` para alterar a propriedade de um banco de dados para um login diferente de `rdsa`. Por exemplo, não é possível alterar a propriedade do login com o qual você criou o banco de dados. Para restaurar a associação perdida no perfil `db_owner` de seu usuário mestre quando nenhum outro usuário do banco de dados puder ser usado para conceder a associação, redefina a senha do usuário mestre para ter a associação ao perfil `db_owner`. Para obter mais informações, consulte [Redefinir a associação ao perfil db\$1owner para o usuário principal no Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.ResetPassword.md).

# Gerenciar agrupamentos e conjuntos de caracteres para o Amazon RDS para Microsoft SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.Collation"></a>

Este tópico fornece orientações sobre como gerenciar agrupamentos e conjuntos de caracteres do Microsoft SQL Server no Amazon RDS. Ele explica como configurar agrupamentos durante a criação do banco de dados e modificá-los posteriormente, garantindo o tratamento adequado dos dados de texto com base nos requisitos de idioma e localidade. Além disso, ele aborda as práticas recomendadas para manter a compatibilidade e o desempenho em ambientes do SQL Server no Amazon RDS.

O SQL Server é compatível com agrupamentos em vários níveis. Você define o agrupamento de servidores padrão quando cria a instância de banco de dados. É possível substituir o agrupamento no nível de banco de dados, tabela ou coluna.

**Topics**
+ [Agrupamento no nível do servidor para o Microsoft SQL Server](#Appendix.SQLServer.CommonDBATasks.Collation.Server)
+ [Agrupamento no nível do banco de dados para o Microsoft SQL Server](#Appendix.SQLServer.CommonDBATasks.Collation.Database-Table-Column)

## Agrupamento no nível do servidor para o Microsoft SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.Collation.Server"></a>

Ao criar uma instância de banco de dados do Microsoft SQL Server, você pode definir o agrupamento de servidor que você deseja usar. Se você não escolher um agrupamento diferente, o agrupamento no nível do servidor será padronizado como SQL\$1Latin1\$1General\$1CP1\$1CI\$1AS. O agrupamento do servidor é aplicado por padrão a todos os bancos de dados e objetos de banco de dados.

**nota**  
Não é possível alterar o agrupamento ao fazer a restauração a partir de um snapshot de banco de dados.

Atualmente, o Amazon RDS é compatível com os seguintes agrupamentos de servidores:


| Collation (Agrupamento) | Descrição | 
| --- | --- | 
|  Árabe\$1CI\$1AS  |  Arabic, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Chinese\$1PRC\$1BIN2  |  Chinese-PRC, ordem de classificação por pontos de código binário  | 
|  Chinese\$1PRC\$1CI\$1AS  |  Chinese-PRC, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Chinese\$1Taiwan\$1Stroke\$1CI\$1AS  |  Chinese-Taiwan-Stroke, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Danish\$1Norwegian\$1CI\$1AS  |  Danish-Norwegian, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Danish\$1Norwegian\$1CI\$1AS\$1KS  |  Danish-Norwegian, não diferencia letras maiúsculas de minúsculas, diferencia acentos, diferencia o tipo de kana, não diferencia a largura  | 
|  Danish\$1Norwegian\$1CI\$1AS\$1KS\$1WS  |  Danish-Norwegian, não diferencia letras maiúsculas de minúsculas, diferencia acentos, diferencia o tipo de kana, não diferencia a largura  | 
|  Danish\$1Norwegian\$1CI\$1AS\$1WS  |  Danish-Norwegian, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, diferencia a largura  | 
|  Danish\$1Norwegian\$1CS\$1AI  |  Danish-Norwegian, diferencia letras maiúsculas de minúsculas, não diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Danish\$1Norwegian\$1CS\$1AI\$1KS  |  Danish-Norwegian, diferencia letras maiúsculas de minúsculas, não diferencia acentos, diferencia o tipo de kana, não diferencia a largura  | 
|  Finnish\$1Swedish\$1100\$1BIN  |  Finnish-Swedish-100, classificação binária  | 
|  Finnish\$1Swedish\$1100\$1BIN2  |  Finnish-Swedish-100, classificação binária de comparação de ponto de código  | 
|  Finnish\$1Swedish\$1100\$1CI\$1AI  |  Finnish-Swedish 100, não diferencia letras maiúsculas de minúsculas, não diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Finnish\$1Swedish\$1100\$1CI\$1AS  |  Finnish-Swedish 100, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Finnish\$1Swedish\$1CI\$1AS  |  Finlandês, sueco e sueco (Finlândia) – não diferenciam maiúsculas de minúsculas, diferenciação de acentos, indiferentes ao tipo de kana, indiferentes à largura  | 
|  French\$1CI\$1AS  |  French, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Greek\$1CI\$1AS  |  Grego, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Greek\$1CS\$1AS  |  Grego, diferencia maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Hebrew\$1BIN  |  Hebraico, classificação binária  | 
|  Hebrew\$1CI\$1AS  |  Hebrew, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Japanese\$1BIN  | Japonês, tipo binário | 
|  Japanese\$1CI\$1AS  |  Japanese, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Japanese\$1CS\$1AS  |  Japanese, diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Japanese\$1XJIS\$1140\$1CI\$1AS  |  Japanese, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura, caracteres complementares, não diferencia o seletor de variação  | 
|  Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS\$1VSS  |  Japanese, não diferencia letras maiúsculas de minúsculas, diferencia acentos, diferencia o tipo de kana, não diferencia a largura, caracteres complementares, diferencia o seletor de variação  | 
|  Japanese\$1XJIS\$1140\$1CI\$1AS\$1VSS  |  Japanese, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura, caracteres complementares, diferencia o seletor de variação  | 
|  japonês\$1XJIS\$1140\$1CS\$1AS\$1KS\$1WS  |  Japanese, diferencia letras maiúsculas de minúsculas, diferencia acentos, diferencia o tipo de kana, diferencia a largura, caracteres complementares, não diferencia o seletor de variação  | 
|  Korean\$1Wansung\$1CI\$1AS  |  Korean-Wansung, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Latin1\$1General\$1100\$1BIN  |  Latin1-General-100, tipo binário  | 
|  Latin1\$1General\$1100\$1BIN2  |  Latin1-General-100, ordem de classificação por pontos de código binário  | 
|  Latin1\$1General\$1100\$1BIN2\$1UTF8  |  Latin1-General-100, ordem de classificação por pontos de código binário, codificado em UTF-8  | 
|  Latin1\$1General\$1100\$1CI\$1AS  |  Latin1-General-100, não diferencia maiúsculas de minúsculas, diferenciação de acentos, indiferente ao tipo de kana, indiferente à largura  | 
|  Latin1\$1General\$1100\$1CI\$1AS\$1SC\$1UTF8  |  Latin1-General-100, não diferencia letras maiúsculas de minúsculas, diferencia acentos, caracteres complementares, codificação em UTF-8  | 
|  Latin1\$1General\$1BIN  |  Latin1-General, tipo binário  | 
|  Latin1\$1General\$1BIN2  |  Latin1-General, ordem de classificação por pontos de código binário  | 
|  Latin1\$1General\$1CI\$1AI  |  Latin1-General, não diferencia letras maiúsculas de minúsculas, não diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Latin1\$1General\$1CI\$1AS  |  Latin1-General, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  Latin1\$1General\$1CI\$1AS\$1KS  |  Latin1-General, não diferencia letras maiúsculas de minúsculas, diferencia acentos, diferencia o tipo de kana, não diferencia a largura  | 
|  Latin1\$1General\$1CS\$1AS  |  Latin1-Geral, diferencia maiúsculas de minúsculas, diferenciação de acentos, indiferente ao tipo de kana, indiferente à largura  | 
|  Modern\$1Spanish\$1CI\$1AS  |  Modern-Spanish, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  polish\$1ci\$1as  |  Polish, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  SQL\$11xCompat\$1CP850\$1CI\$1AS  |  Latin1-Geral, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 49 na página de código 850 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1CP1\$1CI\$1AI  |  Latin1-Geral, não diferencia letras maiúsculas de minúsculas, não diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 54 na página de código 1252 para dados que não são do Unicode  | 
|  **SQL\$1Latin1\$1General\$1CP1\$1CI\$1AS (padrão)**  |  Latin1-Geral, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 52 na página de código 1252 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1CP1\$1CS\$1AS  |  Latin1-Geral, diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 51 na página de código 1252 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1CP437\$1CI\$1AI  |  Latin1-Geral, não diferencia letras maiúsculas de minúsculas, não diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 34 na página de código 437 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1CP850\$1bin  |  Latin1-General, ordem de classificação por pontos de código binário para dados do Unicode, ordem de classificação do SQL Server 40 na página de código 850 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1CP850\$1BIN2  |  Latin1-General, ordem de classificação por pontos de código binário para dados do Unicode, ordem de classificação do SQL Server 40 na página de código 850 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1CP850\$1CI\$1AI  |  Latin1-Geral, não diferencia letras maiúsculas de minúsculas, não diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 44 na página de código 850 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1CP850\$1CI\$1AS  |  Latin1-Geral, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 42 na página de código 850 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1Pref\$1CP850\$1CI\$1AS  |  Latin1-General-Pref, não diferencia maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 183 na página de código 850 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1CP1256\$1CI\$1AS  |  Latin1-Geral, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 146 na página de código 1256 para dados que não são do Unicode  | 
|  SQL\$1Latin1\$1General\$1CP1255\$1CS\$1AS  |  Latin1-Geral, diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura para dados do Unicode, ordem de classificação do SQL Server 137 na página de código 1255 para dados que não são do Unicode  | 
|  Thai\$1CI\$1AS  |  Thai, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 
|  turkish\$1ci\$1as  |  Turkish, não diferencia letras maiúsculas de minúsculas, diferencia acentos, não diferencia o tipo de kana, não diferencia a largura  | 

Você também pode recuperar a lista de agrupamentos aceitos programaticamente usando a AWS CLI.

```
aws rds describe-db-engine-versions --engine sqlserver-ee --list-supported-character-sets --query 'DBEngineVersions[].SupportedCharacterSets[].CharacterSetName' | sort -u
```

Para escolher o agrupamento:
+ Se você estiver usando o console do Amazon RDS, ao criar uma instância de banco de dados, escolha **Additional configuration** (Configuração adicional) e insira o agrupamento no campo **Collation** (Agrupamento). Para obter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md). 
+ Se você estiver usando a AWS CLI, use a opção `--character-set-name` com o comando `create-db-instance`. Para obter mais informações, consulte [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html).
+ Se você estiver usando a API do Amazon RDS, use o parâmetro `CharacterSetName` com a operação `CreateDBInstance`. Para obter mais informações, consulte [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html).

## Agrupamento no nível do banco de dados para o Microsoft SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.Collation.Database-Table-Column"></a>

Para alterar o agrupamento padrão no banco de dados, na tabela ou na coluna, anule o nível do agrupamento ao criar um novo banco de dados ou um objeto de banco de dados. Por exemplo, se o agrupamento de servidores padrão for SQL\$1Latin1\$1General\$1CP1\$1CI\$1AS, você poderá alterá-lo para Mohawk\$1100\$1CI\$1AS para suporte ao agrupamento Mohawk. Se necessário, é possível até mesmo converter o tipo de argumentos em uma consulta, de modo que eles usem um tipo de agrupamento diferente.

Por exemplo, a consulta abaixo altera o agrupamento padrão da coluna AccountName para Mohawk\$1100\$1CI\$1AS

```
CREATE TABLE [dbo].[Account]
	(
	    [AccountID] [nvarchar](10) NOT NULL,
	    [AccountName] [nvarchar](100) COLLATE Mohawk_100_CI_AS NOT NULL 
	) ON [PRIMARY];
```

O mecanismo de banco de dados Microsoft SQL Server é compatível com Unicode por meio dos tipos de dados NCHAR, NVARCHAR e NTEXT. Por exemplo, se precisar de suporte para CJK, use esses tipos de dados Unicode para armazenamento de caracteres e substitua o agrupamento padrão de servidor ao criar seus bancos de dados e tabelas. Veja a seguir alguns links da Microsoft sobre agrupamentos e compatibilidade com o Unicode do SQL Server:
+ [Trabalhando com agrupamentos](http://msdn.microsoft.com/en-us/library/ms187582%28v=sql.105%29.aspx) 
+ [Collation and international terminology](http://msdn.microsoft.com/en-us/library/ms143726%28v=sql.105%29) 
+ [Using SQL Server collations](http://msdn.microsoft.com/en-us/library/ms144260%28v=sql.105%29.aspx) 
+ [Considerações internacionais para aplicativos de banco de dados e aplicativos do Mecanismo de Banco de Dados](http://msdn.microsoft.com/en-us/library/ms190245%28v=sql.105%29.aspx)

# Criar um usuário de banco de dados para o Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.CreateUser"></a>

Você pode criar um usuário de banco de dados para a instância de banco de dados Amazon RDS para Microsoft SQL Server executando um script T-SQL como o exemplo a seguir. Use uma aplicação como o SQL Server Management Suite (SSMS). Você faz login na instância de banco de dados como o usuário mestre que foi criado ao criar a instância de banco de dados.

```
--Initially set context to master database
USE [master];
GO
--Create a server-level login named theirname with password theirpassword
CREATE LOGIN [theirname] WITH PASSWORD = 'theirpassword';
GO
--Set context to msdb database
USE [msdb];
GO
--Create a database user named theirname and link it to server-level login theirname
CREATE USER [theirname] FOR LOGIN [theirname];
GO
```

Para obter um exemplo da adição de um usuário de banco de dados a uma função, consulte [Adicionar um usuário à função SQLAgentUser](SQLServerAgent.AddUser.md).

**nota**  
Se você receber erros de permissão ao adicionar um usuário, poderá restaurar privilégios modificando a senha de usuário primário da instância de banco de dados. Para ter mais informações, consulte [Redefinir a associação ao perfil db\$1owner para o usuário principal no Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.ResetPassword.md).   
Não é uma prática recomendada clonar as permissões do usuário principal em suas aplicações. Para ter mais informações, consulte [How to clone master user permissions in Amazon RDS for SQL Server](https://aws.amazon.com/blogs/database/how-to-clone-master-user-permissions-in-amazon-rds-for-sql-server/).

# Determinar um modelo de recuperação para o banco de dados do Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.DatabaseRecovery"></a>

No Amazon RDS, o modelo de recuperação, o período de retenção e o status do banco de dados estão vinculados.

É importante entender as consequências antes de fazer uma alteração em uma dessas configurações. Cada configuração pode afetar as outras. Por exemplo:
+ Se você alterar o modelo de recuperação de um banco de dados para SIMPLE ou BULK\$1LOGGED enquanto a retenção de backup estiver habilitada, o Amazon RDS redefinirá o modelo de recuperação para FULL em cinco minutos. Isso também fará com que o RDS tire um snapshot da instância de banco de dados.
+ Se você definir a retenção de backup como `0` dias, o RDS definirá o modo de recuperação como SIMPLE.
+ Se você alterar o modelo de recuperação de um banco de dados de SIMPLE para qualquer outra opção enquanto a retenção de backup estiver definida como `0` dias, o RDS redefinirá o modelo de recuperação de volta para SIMPLE.

**Importante**  
Nunca altere o modelo de recuperação em instâncias multi-AZ, mesmo que pareça que você pode fazer isso—por exemplo, usando ALTER DATABASE. A retenção de backup e, portanto, o modo de recuperação FULL, é necessária para o multi-AZ. Se você alterar o modelo de recuperação, o RDS o alterará imediatamente para FULL.  
Esta reinicialização automática força o RDS a reconstruir completamente o espelhamento. Durante essa reconstrução, a disponibilidade do banco de dados é degradada por cerca de 30-90 a 90 minutos até que o espelhamento esteja pronto para failover. A instância de banco de dados também enfrenta a degradação da performance da mesma maneira que durante uma conversão de single-AZ para multi-AZ. O tempo durante o qual a performance é degradada depende do tamanho do armazenamento de banco de dados — quanto maior o banco de dados armazenado, mais longa será a degradação.

Para obter mais informações sobre modelos de recuperação do SQL Server, consulte [Modelos de recuperação (SQL Server)](https://docs.microsoft.com/en-us/sql/relational-databases/backup-restore/recovery-models-sql-server) na documentação da Microsoft.

# Determinar o horário do último failover do Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.LastFailover"></a>

Para determinar o último tempo de failover, use o seguinte procedimento armazenado:

```
execute msdb.dbo.rds_failover_time;
```

Este procedimento retorna as informações a seguir.


****  

| Parâmetro de saída | Descrição | 
| --- | --- | 
|  errorlog\$1available\$1from  |  Mostra o tempo em que os logs de erro estão disponíveis no diretório de log.  | 
|  recent\$1failover\$1time  |  Mostra o último tempo de failover se estiver disponível nos logs de erro. Caso contrário, será exibido `null`.  | 

**nota**  
O procedimento armazenado pesquisa todos os logs de erro disponíveis do SQL Server no diretório de log para recuperar o tempo de failover mais recente. Se as mensagens de failover foram substituídas pelo SQL Server, o procedimento não recuperará o tempo de failover.

**Example de nenhum failover recente**  
Este exemplo mostra a saída quando não há nenhum failover recente nos logs de erros. Nenhum failover aconteceu desde 29-04-2020 23:59:00.01.  


| errorlog\$1available\$1from | recent\$1failover\$1time | 
| --- | --- | 
|  29-04-2020 23:59:00.0100000  |  nulo  | 

**Example de failover recente**  
Este exemplo mostra a saída quando há um failover nos logs de erros. O failover mais recente foi em 05-05-2020 18:57:51.89.  


| errorlog\$1available\$1from | recent\$1failover\$1time | 
| --- | --- | 
|  29-04-2020 23:59:00.0100000  |  05-05-2020 18:57:51.8900000  | 

# Solução de problemas de falhas de recuperação para um ponto no tempo devido a uma descontinuidade no número de sequência de log
<a name="Appendix.SQLServer.CommonDBATasks.PITR-LSN-Gaps"></a>

Ao tentar a recuperação para um ponto no tempo (PITR) no RDS para SQL Server, você pode encontrar falhas devido a descontinuidades nos números de sequência de log (LSNs). Essas descontinuidade impedem que o RDS restaure o banco de dados no horário solicitado, e o RDS coloca a instância de restauração no estado `incompatible-restore`.

Algumas causas comuns desse problema são:
+ Alterações manuais no modelo de recuperação do banco de dados.
+ Alterações automáticas no modelo de recuperação pelo RDS devido à insuficiência de recursos para concluir o backup dos logs de transações.

Para identificar descontinuidades no LSN em seu banco de dados, execute esta consulta:

```
SELECT * FROM msdb.dbo.rds_fn_list_tlog_backup_metadata(database_name)
ORDER BY backup_file_time_utc desc;
```

Se você descobrir uma descontinuidade no LSN, você pode:
+ Escolher um ponto de restauração antes da descontinuidade do LSN.
+ Aguardar e restaurar para um ponto após a conclusão do próximo backup da instância.

Para evitar esse problema, recomendamos que você não altere manualmente o modelo de recuperação dos bancos de dados do RDS para SQL Server, pois isso interrompe a durabilidade da instância. Também recomendamos que você escolha um tipo de instância com recursos suficientes para sua workload, a fim de garantir backups regulares do log de transações.

Para ter mais informações sobre o gerenciamento de logs de transações, consulte [SQL Server transaction log architecture and management guide](https://learn.microsoft.com/en-us/sql/relational-databases/sql-server-transaction-log-architecture-and-management-guide?view=sql-server-ver16) na documentação do Microsoft SQL Server.

# Negue ou permita a visualização de nomes de banco de dados no Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.ManageView"></a>

O usuário principal não pode definir `DENY VIEW ANY DATABASE TO LOGIN` para ocultar bancos de dados de um usuário.   Para alterar essa permissão, use o seguinte procedimento armazenado:
+ Negar acesso de visualização do banco de dados ao *LOGIN*:

  ```
  EXEC msdb.dbo.rds_manage_view_db_permission @permission=‘DENY’, @server_principal=‘LOGIN’  
  go
  ```
+ Permitir acesso de visualização do banco de dados ao *LOGIN*:

  ```
  EXEC msdb.dbo.rds_manage_view_db_permission @permission='GRANT', @server_principal='LOGIN' 
   go
  ```

Pense no seguinte ao usar esse procedimento armazenado:
+ Os nomes dos bancos de dados estão ocultos do SSMS e do DMV interno (visualizações de gerenciamento dinâmico). No entanto, os nomes dos bancos de dados ainda são visíveis nas tabelas de auditoria, de logs e de metadados. Essas são permissões protegidas `VIEW ANY DATABASE` do servidor. Para ter mais informações, consulte [Permissões do servidor DENY](https://learn.microsoft.com/en-us/sql/t-sql/statements/deny-server-permissions-transact-sql?view=sql-server-ver16#permissions).
+ Depois que a permissão for revertida para `GRANT` (permitido), o *LOGIN* poderá visualizar todos os bancos de dados.
+ Se você excluir e recriar *LOGIN*, a permissão de visualização relacionada ao LOGIN será redefinida como `ALLOW`.
+ Para instâncias multi-AZ, defina a permissão `DENY` ou `GRANT` somente para o *LOGIN* no host primário. As alterações são propagadas automaticamente para o host secundário.
+ Essa permissão só altera se um login pode visualizar os nomes do banco de dados. No entanto, o acesso aos bancos de dados e objetos internos é gerenciado separadamente.

# Desabilitar inserções rápidas durante o carregamento em massa para o Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.DisableFastInserts"></a>

A partir do SQL Server 2016, as inserções rápidas são habilitadas por padrão. As inserções rápidas aproveitam o registro em log mínimo que ocorre enquanto o banco de dados está no modelo de recuperação simples ou em massa registrada em log para otimizar a performance da inserção. Com as inserções rápidas, cada lote de carregamento em massa adquire novas extensões, ignorando a pesquisa de alocação para extensões existentes com espaço livre disponível para otimizar a performance das inserções.

No entanto, com as inserções rápidas, os carregamentos em massa com tamanhos de lote pequenos podem levar ao aumento do espaço não utilizado consumido pelos objetos. Se aumentar o tamanho do lote não for viável, habilitar o sinalizador de rastreamento 692 poderá ajudar a reduzir o espaço reservado não utilizado, mas isso afetará a performance. Habilitar esse sinalizador de rastreamento desabilitará as inserções rápidas durante o carregamento em massa de dados no heap ou índices em cluster.

O sinalizador de rastreamento 692 é habilitado como um parâmetro de inicialização usando grupos de parâmetros de banco de dados. Para obter mais informações, consulte [Grupos de parâmetros para Amazon RDS](USER_WorkingWithParamGroups.md).

Há suporte ao sinalizador de rastreamento 692 para o Amazon RDS no SQL Server 2016 e posterior. Para obter mais informações sobre sinalizadores de rastreamento, consulte [DBCC TRACEON – sinalizadores de rastreamento](https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-traceon-trace-flags-transact-sql) na documentação da Microsoft.

# Eliminar um banco de dados em uma instância de banco de dados do Amazon RDS para Microsoft SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.DropMirrorDB"></a>

É possível eliminar um banco de dados em uma instância de banco de dados do Amazon RDS que executa o Microsoft SQL Server em uma implantação single-AZ ou multi-AZ. Para ignorar o banco de dados, use o seguinte comando:

```
--replace your-database-name with the name of the database you want to drop
EXECUTE msdb.dbo.rds_drop_database  N'your-database-name'
```

**nota**  
Use aspas simples retas no comando. Aspas curvas causarão um erro.

Depois que você usa esse procedimento para ignorar o banco de dados, o Amazon RDS ignora todas as conexões existentes com o banco de dados e remove o histórico de backup do banco de dados.

Para conceder permissão de backup e restauração a outros usuários, siga este procedimento:

```
USE master
GO
CREATE LOGIN user1 WITH PASSWORD=N'changeThis', DEFAULT_DATABASE=master, CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE msdb
GO
CREATE USER user1 FOR LOGIN user1
GO
use msdb
GO
GRANT EXECUTE ON msdb.dbo.rds_backup_database TO user1
GO
GRANT EXECUTE ON msdb.dbo.rds_restore_database TO user1
GO
```

# Renomear um banco de dados do Amazon RDS para Microsoft SQL Server em uma implantação multi-AZ
<a name="Appendix.SQLServer.CommonDBATasks.RenamingDB"></a>

Para renomear uma instância do banco de dados do Microsoft SQL Server que use o multi-AZ, use o seguinte procedimento:

1. Primeiramente, desative multi-AZ para a instância de banco de dados.

1. Renomeie o banco de dados executando `rdsadmin.dbo.rds_modify_db_name`.

1. Em seguida, ative o multi-AZ com Espelhamento ou os Grupos de disponibilidade AlwaysOn para a instância de banco de dados para retorná-la ao estado original.

Para obter mais informações, consulte [Adicionar Multi-AZ a uma instância de banco de dados do Microsoft SQL Server](USER_SQLServerMultiAZ.md#USER_SQLServerMultiAZ.Adding). 

**nota**  
Se a instância não usar multi-AZ, não será necessário alterar nenhuma configuração antes ou depois de executar `rdsadmin.dbo.rds_modify_db_name`.  
Não é possível renomear um banco de dados em uma instância de origem de réplica de leitura.

**Exemplo: **No exemplo a seguir, o procedimento armazenado `rdsadmin.dbo.rds_modify_db_name` renomeia um banco de dados de **MOO** para **ZAR**. É semelhante a executar a instrução `DDL ALTER DATABASE [MOO] MODIFY NAME = [ZAR]`. 

```
EXEC rdsadmin.dbo.rds_modify_db_name N'MOO', N'ZAR'
GO
```

# Redefinir a associação ao perfil db\$1owner para o usuário principal no Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.ResetPassword"></a>

Se você bloquear seu usuário mestre da associação ao perfil `db_owner` em seu banco de dados do RDS para SQL Server e nenhum outro usuário do banco de dados puder conceder a associação, você poderá restaurar a associação perdida modificando a senha do usuário mestre da instância de banco de dados. 

Ao alterar a senha do usuário mestre da instância de banco de dados, o RDS concede a associação `db_owner` aos bancos de dados na instância de banco de dados que pode ter sido revogada acidentalmente. É possível alterar a senha da instância de banco de dados usando o console do Amazon RDS, o comando da AWS CLI [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) ou a operação da API [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html). Para ter mais informações sobre a modificação de uma instância de banco de dados , consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).

# Restaurar instâncias de banco de dados com licenças encerradas no Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.RestoreLTI"></a>

A Microsoft solicitou que alguns clientes do Amazon RDS que não informaram seus dados de Microsoft License Mobility encerrassem sua instância de banco de dados. O Amazon RDS faz snapshots dessas instâncias de banco de dados, e é possível restaurar do snapshot para uma nova instância de banco de dados que tenha o modelo de licença inclusa. 

É possível restaurar a partir de um snapshot da Standard Edition para a própria Standard Edition ou para a Enterprise Edition. 

É possível restaurar a partir de um snapshot da Enterprise Edition para a Standard Edition ou para a própria Enterprise Edition. 

**Como restaurar de um snapshot do SQL Server após o Amazon RDS criar um snapshot final da sua instância**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Snapshots**.

1. Escolha o snapshot da instância de banco de dados do SQL Server. O Amazon RDS cria um snapshot final da instância de banco de dados. O nome do snapshot da instância encerrada está no formato `instance_name-final-snapshot`. Por exemplo, se o nome da instância de banco de dados for **mytest.cdxgahslksma.us-east-1.rds.com**, o snapshot final se chamará ** mytest-final-snapshot** e estará na mesma região da AWS da instância de banco de dados original. 

1. Em **Actions (Ações)**, escolha **Restore Snapshot (Restaurar snapshot)**.

   A janela **Restore DB Instance (Restaurar instância de banco de dados)** é exibida.

1. Em **License Model (Modelo de licença)**, escolha **license-included (licença incluída)**. 

1. Escolha o mecanismo de banco de dados SQL Server que você deseja usar. 

1. Em **DB Instance Identifier (Identificador da instância de banco de dados)**, digite o nome da instância de banco de dados restaurada. 

1. Escolha **Restore DB Instance**.

Para obter mais informações sobre a restauração a partir de um snapshot, consulte [Restaurar uma instância de banco de dados](USER_RestoreFromSnapshot.md). 

# Transição de um banco de dados do Amazon RDS para SQL Server de OFFLINE para ONLINE
<a name="Appendix.SQLServer.CommonDBATasks.TransitionOnline"></a>

Você pode mudar o estado de seu banco de dados do Microsoft SQL Server em uma instância de banco de dados do Amazon RDS de `OFFLINE` para `ONLINE`. 


****  

| Método do SQL Server | Método do Amazon RDS | 
| --- | --- | 
| ALTER DATABASE *db\$1name* SET ONLINE; | EXEC rdsadmin.dbo.rds\$1set\$1database\$1online *db\$1name* | 

# Usar a captura de dados de alteração para o Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.CDC"></a>

O Amazon RDS comporta captura de dados de alteração (CDC) em instâncias de banco de dados que estejam executando o Microsoft SQL Server. A CDC captura alterações feitas nos dados de suas tabelas. Ela armazena metadados sobre cada alteração, que podem ser acessados posteriormente. Para obter mais informações sobre como a CDC funciona, consulte [Captura de dados de alteração](https://docs.microsoft.com/en-us/sql/relational-databases/track-changes/track-data-changes-sql-server#Capture) na documentação da Microsoft. Para usar a CDC com suas instâncias de banco de dados do Amazon RDS, habilite-a no banco de dados executando `msdb.dbo.rds_cdc_enable_db`. Após a habilitação da CDC, qualquer usuário que seja um `db_owner` desse banco de dados poderá habilitar ou desabilitar a CDC em tabelas desse banco de dados.

**Importante**  
Durante restaurações, a CDC será desabilitada. Todos os metadados relacionados são removidos automaticamente do banco de dados. Isso se aplica a restaurações de snapshot e a restaurações pontuais. Após a execução desses tipos de restauração, você pode habilitar novamente a CDC e especificar tabelas novamente para acompanhamento.

Para habilitar o CDC para uma instância de banco de dados, execute o procedimento `msdb.dbo.rds_cdc_enable_db` armazenado.

```
1. exec msdb.dbo.rds_cdc_enable_db 'database_name'
```

Para desabilitar o CDC para uma instância de banco de dados, execute o procedimento `msdb.dbo.rds_cdc_disable_db` armazenado.

```
1. exec msdb.dbo.rds_cdc_disable_db 'database_name'
```

Para conceder permissões de CDC a um usuário, use o seguinte procedimento:

```
1. go
2. 		GRANT EXECUTE ON msdb.dbo.rds_cdc_enable_db TO User1
3. 		GRANT EXECUTE ON msdb.dbo.rds_cdc_disable_db TO User1
```

**Topics**
+ [Acompanhamento de tabelas com a Captura de dados de alteração](#Appendix.SQLServer.CommonDBATasks.CDC.tables)
+ [Trabalhos de captura de dados de alteração](#Appendix.SQLServer.CommonDBATasks.CDC.jobs)
+ [Change Data Capture para instâncias multi-AZ](#Appendix.SQLServer.CommonDBATasks.CDC.Multi-AZ)

## Acompanhamento de tabelas com a Captura de dados de alteração
<a name="Appendix.SQLServer.CommonDBATasks.CDC.tables"></a>

Após a CDC ser habilitada no banco de dados, você pode começar a acompanhar tabelas específicas. Você pode escolher as tabelas a serem acompanhadas executando [sys.sp\$1cdc\$1enable\$1table.](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-enable-table-transact-sql)

```
 1. --Begin tracking a table
 2. exec sys.sp_cdc_enable_table   
 3.    @source_schema           = N'source_schema'
 4. ,  @source_name             = N'source_name'
 5. ,  @role_name               = N'role_name'
 6. 
 7. --The following parameters are optional:
 8.  
 9. --, @capture_instance       = 'capture_instance'
10. --, @supports_net_changes   = supports_net_changes
11. --, @index_name             = 'index_name'
12. --, @captured_column_list   = 'captured_column_list'
13. --, @filegroup_name         = 'filegroup_name'
14. --, @allow_partition_switch = 'allow_partition_switch'
15. ;
```

Para visualizar a configuração de CDC para suas tabelas, execute [sys.sp\$1cdc\$1help\$1change\$1data\$1capture](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-help-change-data-capture-transact-sql).

```
1. --View CDC configuration
2. exec sys.sp_cdc_help_change_data_capture 
3. 
4. --The following parameters are optional and must be used together.
5. --  'schema_name', 'table_name'
6. ;
```

Para obter mais informações sobre tabelas, funções e procedimentos armazenados de CDC na documentação do SQL Server, consulte o seguinte:
+ [Procedimentos armazenados de captura de dados de alteração (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/change-data-capture-stored-procedures-transact-sql)
+ [Change data capture functions (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-functions/change-data-capture-functions-transact-sql)
+ [tabelas Change Data Capture (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-tables/change-data-capture-tables-transact-sql)

## Trabalhos de captura de dados de alteração
<a name="Appendix.SQLServer.CommonDBATasks.CDC.jobs"></a>

Quando você habilita a CDC, o SQL Server cria os trabalhos de CDC. Os proprietários de bancos de dados (`db_owner`) podem visualizar, criar, modificar e excluir trabalhos de CDC. Contudo, os trabalhos são de propriedade da conta do sistema do RDS. Portanto, os trabalhos não estão visíveis em visualizações, procedimentos nativos ou no SQL Server Management Studio.

Para controlar o comportamento de CDC em um banco de dados, use procedimentos nativos do SQL Server, como [sp\$1cdc\$1enable\$1table](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-enable-table-transact-sql) e [sp\$1cdc\$1start\$1job ](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-start-job-transact-sql). Para alterar os parâmetros de trabalhos de CDC, como `maxtrans` e `maxscans`, use [sp\$1cdc\$1change\$1job.](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-change-job-transact-sql).

Para obter mais informações sobre os trabalhos de CDC, você pode consultar as seguintes visualizações de gerenciamento dinâmico: 
+ sys.dm\$1cdc\$1errors
+ sys.dm\$1cdc\$1log\$1scan\$1sessions
+ sysjobs
+ sysjobhistory

## Change Data Capture para instâncias multi-AZ
<a name="Appendix.SQLServer.CommonDBATasks.CDC.Multi-AZ"></a>

Se você usar a CDC em uma instância multi-AZ, verifique se a configuração do trabalho de CDC do espelho corresponde a do principal. Os trabalhos de CDC são mapeados para o `database_id`. Se os IDs de bancos de dados no secundário forem diferentes do principal, os trabalhos não serão associados ao banco de dados correto. Para tentar evitar erros após um failover, o RDS descarta e recria os trabalhos no novo principal. Os trabalhos recriados usam os parâmetros que o principal registrou antes do failover.

Embora esse processo seja executado rapidamente, ainda é possível que os trabalhos de CDC possam ser executados antes que o RDS possa corrigi-los. Estas são três maneiras de forçar os parâmetros para que sejam consistentes entre as réplicas primária e secundária:
+ Use os mesmos parâmetros de trabalho para todos os bancos de dados que têm a CDC habilitada. 
+ Antes de alterar a configuração do trabalho de CDC, converta a instância multi-AZ para single-AZ.
+ Transfira os parâmetros manualmente sempre que alterá-los no principal.

Para visualizar e definir os parâmetros de CDC usados para recriar os trabalhos de CDC após um failover, use `rds_show_configuration` e `rds_set_configuration`.

O exemplo a seguir retorna o valor definido para `cdc_capture_maxtrans`. Para qualquer parâmetro definido como `RDS_DEFAULT`, o RDS configura o valor automaticamente.

```
-- Show configuration for each parameter on either primary and secondary replicas. 
exec rdsadmin.dbo.rds_show_configuration 'cdc_capture_maxtrans';
```

Para definir a configuração na secundária, execute `rdsadmin.dbo.rds_set_configuration`. Esse procedimento define os valores dos parâmetros para todos os bancos de dados no servidor secundário. Essas configurações são usadas somente após um failover. Os exemplo a seguir define o `maxtrans` de todos os trabalhos de captura de CDC como *1000*:

```
--To set values on secondary. These are used after failover.
exec rdsadmin.dbo.rds_set_configuration 'cdc_capture_maxtrans', 1000;
```

Para definir os parâmetros de trabalhos de CDC no principal, use [sys.sp\$1cdc\$1change\$1job](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-change-job-transact-sql).

# Usar o agente do SQL Server para o Amazon RDS
<a name="Appendix.SQLServer.CommonDBATasks.Agent"></a>

Com o Amazon RDS, você pode usar o SQL Server Agent em uma instância de banco de dados que executa o Microsoft SQL Server Enterprise Edition, Standard Edition ou Web Edition. SQL Server Agent é um serviço do Microsoft Windows que executa tarefas administrativas programadas, chamadas de trabalhos. É possível usar SQL Server Agent para executar trabalhos T-SQL para recompilar índices, executar verificações de corrupção e agregar dados em uma instância de banco de dados SQL Server.

Ao criar uma instância de banco de dados do SQL Server, o nome de usuário principal é registrado na função `SQLAgentUserRole`.

SQL Server Agent pode executar um trabalho agendado em resposta a um evento específico ou sob demanda. Para ter mais informações, consulte a página [SQL Server Agent](http://msdn.microsoft.com/en-us/library/ms189237) na documentação do SQL Server.

**nota**  
Evite programar trabalhos para execução durante as janelas de manutenção e backup da sua instância de banco de dados. Os processos de manutenção e backup que são iniciados pela AWS podem interromper um trabalho ou fazer com que ele seja cancelado.  
Em implantações multi-AZ, os trabalhos do SQL Server Agent são replicados do host primário para o host secundário quando o recurso de replicação de trabalhos é ativado. Para obter mais informações, consulte [Ativar a replicação de trabalhos do SQL Server Agent](#SQLServerAgent.Replicate).  
As implantações multi-AZ têm um limite de cem trabalhos do SQL Server Agent. Se um limite mais alto for necessário, solicite um aumento de cota entrando em contato com o Suporte. Abra a página do [AWS Support Center](https://console.aws.amazon.com/support/home#/), faça login, se necessário, e escolha **Create case** (Criar caso). Escolha **Service limit increase** (Aumento de limite do serviço). Preencha e envie o formulário.

Para visualizar o histórico de um trabalho específico do SQL Server Agent no SQL Server Management Studio (SSMS), abra o Object Explorer, clique com o botão direito no trabalho e, em seguida, escolha **View History (Visualizar histórico)**.

Como o SQL Server Agent está sendo executado em um host gerenciado em uma instância de banco de dados, algumas ações não são aceitas:
+ Não é possível executar trabalhos de replicação e de scripts da linha de comando usando o ActiveX, o shell de comando do Windows ou o Windows PowerShell.
+ Não é possível iniciar, interromper ou reiniciar manualmente o SQL Server Agent.
+ As notificações de e-mail por meio do SQL Server Agent não estão disponíveis a partir de uma instância de banco de dados.
+ Alertas e operadores do SQL Server Agent não são aceitos.
+ O uso do SQL Server Agent para criar backups não é aceito. Use o Amazon RDS para fazer backup de sua instância de banco de dados.
+ Atualmente, o RDS para SQL Server não comporta o uso de tokens do SQL Server Agent.

## Ativar a replicação de trabalhos do SQL Server Agent
<a name="SQLServerAgent.Replicate"></a>

Você pode ativar a replicação de trabalhos do SQL Server Agent usando o seguinte procedimento armazenado:

```
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'SQLAgentJob';
```

É possível executar o procedimento armazenado em todas as versões do SQL Server compatíveis com o Amazon RDS para SQL Server. Os trabalhos nas seguintes categorias são replicados:
+ [Sem categoria (local)]
+ [Sem categoria (vários servidores)]
+ [Sem categoria]
+ Coletor de dados
+ Database Engine Tuning Advisor
+ Manutenção do banco de dados
+ Texto completo

Somente trabalhos que usam etapas de trabalho T-SQL são replicados. Trabalhos com tipos de etapas, como o SQL Server Integration Services (SSIS), o SQL Server Reporting Services (SSRS), a Replicação e o PowerShell, não são replicados. Os trabalhos que usam o Database Mail e objetos no nível do servidor não são replicados.

**Importante**  
O host principal é a fonte da verdade para replicação. Antes de ativar a replicação do trabalho, verifique se os trabalhos do SQL Server Agent estão no host primário. Se você não fizer isso, poderá ocorrer a exclusão de seus trabalhos do SQL Server Agent se você ativar o recurso quando os trabalhos mais recentes estiverem no host secundário.

Você pode usar a função a seguir para confirmar se a replicação está ativada.

```
SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();
```

 A consulta T-SQL retornará o seguinte se os trabalhos do SQL Server Agent estiverem sendo replicados. Se eles não estiverem sendo replicados, não retornará nada para`object_class`.

![\[Os trabalhos do SQL Server Agent estão sendo replicados\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/SQLAgentJob.png)


Você pode usar a função a seguir para descobrir a última vez que os objetos foram sincronizados no horário UTC.

```
SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();
```

Por exemplo, suponha que você modifique um trabalho do SQL Server Agent às 01:00. Você espera que o tempo de sincronização mais recente seja após a 01:00, indicando que a sincronização ocorreu.

Após a sincronização, espera-se que os valores retornados para `date_created` e `date_modified` no nó secundário coincidam.

![\[A última vez que os objetos do servidor foram sincronizados foi às 01:21:23.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/SQLAgentJob_last_sync_time.png)


Se você também estiver usando a replicação `tempdb`, poderá habilitar a replicação tanto para os trabalhos do SQL Agent quanto para a configuração `tempdb` fornecendo-os no parâmetro `@object_type`:

```
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'SQLAgentJob,TempDbFile';
```

Para ter mais informações sobre a replicação `tempdb`, consulte [Configuração TempDB para implantações multi-AZ](SQLServer.TempDB.MAZ.md).

# Perfis do SQL Server Agent
<a name="SQLServerAgent.AgentRoles"></a>

O RDS para SQL Server oferece suporte aos seguintes perfis do SQL Server Agent com diferentes níveis de permissões para gerenciar trabalhos:
+ **SQLAgentUserRole**

  Permissões
  + Criar e gerenciar seus próprios trabalhos, agendamentos e operadores
  + Visualizar as propriedades de seus próprios trabalhos e agendamentos
  + Não é possível visualizar ou gerenciar trabalhos criados por outros usuários

  Essa função é adequada para usuários que precisam criar e gerenciar seus próprios trabalhos, mas não requerem acesso aos trabalhos criados por outros usuários.
+ **SQLAgentReaderRole**

  Permissões
  + Todas as permissões de SQLAgentUserRole
  + Visualizar uma lista de todos os trabalhos e agendamentos, incluindo aqueles criados por outros
  + Visualizar as propriedades de todos os trabalhos
  + Veja o histórico de trabalhos

  Essa função é adequada para usuários que precisam monitorar o status de todos os trabalhos, mas não precisam gerenciá-los.
+ **SQLAgentOperatorRole**

  Permissões
  + Todas as permissões de SQLAgentUserRole e SQLAgentReaderRole
  + Executar, interromper ou iniciar trabalhos
  + Gerenciar o histórico de trabalhos
  + Ativar/desativar trabalhos e agendamentos
  + Visualizar operadores e proxies

  Esse perfil fornece as permissões mais abrangentes e é adequado para usuários que precisam ter controle total sobre todos os trabalhos.

Use o comando a seguir para atribuir as funções ao seu login do SQL Server:

```
USE msdb;
EXEC sp_addrolemember 'SQLAgentOperatorRole', 'username';
```

## Gerenciamento do SQLAgentOperatorRole no RDS para SQL Server
<a name="SQLServerAgent.AgentRoles.ManageSQLAgentOperatorRole"></a>

Para visualizar os trabalhos atuais, você deve adicionar o SQLAgentOperatorRole ao seu login do SQL Server e removê-lo antes de se desconectar do banco de dados.

Para visualizar a árvore do SQL Server Agent no SQL Server Management Studio, siga estas instruções:

**Visualizar o SQL Server Agent no SQL Server Management Studio (SSMS)**

1. Usando as credenciais mestras do RDS, faça login na instância do SQL Server do RDS e conceda ao usuário desejado o SQLAgentUserRole.

   ```
   USE msdb
   GO
   IF NOT EXISTS(SELECT name FROM sys.database_principals WHERE name = 'UserName')
   BEGIN
   CREATE USER UserName FROM LOGIN UserName
   END
   GO
   ALTER ROLE SQLAgentUserRole ADD MEMBER UserName
   GO
   GRANT ALTER ON ROLE::[SQLAgentOperatorRole] to UserName
   GO
   ```

   Esses comandos criam o usuário no banco de dados `msdb`, caso ele não exista. Ele também adiciona o usuário ao SQLAgentUserRole, para que a árvore do SQL Server Agent no SSMS possa ser visualizada. Por fim, ele concede permissões de alteração no SQLAgentOperatorRole ao usuário. Isso permite que o usuário adicione/remova a si mesmo dessa função. 

1. Para se adicionar à função mencionada acima, conecte-se à instância do SQL Server do RDS com o usuário que precisa ver os trabalhos e execute o script a seguir.

   ```
   use msdb
   go
   ALTER ROLE SQLAgentOperatorRole ADD MEMBER UserName
   GO
   ```

   Depois disso, clique com o botão direito na pasta **Jobs** (Trabalhos) e escolha **Refresh** (Atualizar).

1. Quando você executa essa ação, a guia **Jobs** (Trabalhos) exibe um botão **\$1** (mais). Clique para expandir a lista de Jobs do SQL Server Agent.

1. 
**Importante**  
Antes de se desconectar da instância do SQL Server do RDS, você precisa se remover da SQLAgentOperatorRole.

   Para remover seu login do SQLAgentOperatorRole, execute a seguinte consulta antes de desconectar ou fechar o Management Studio:

   ```
   USE msdb
   GO
   ALTER ROLE SQLAgentOperatorRole DROP MEMBER UserName
   GO
   ```

Para ter mais informações, consulte [Leveraging SQLAgentOperatorRole in RDS SQL Server](https://aws.amazon.com/blogs/database/leveraging-sqlagentoperatorrole-in-rds-sql-server/).

# Adicionar um usuário à função SQLAgentUser
<a name="SQLServerAgent.AddUser"></a>

Para permitir que um usuário ou login adicional use o SQL Server Agent, faça login com o usuário principal e realize as seguintes etapas:

1. Crie outro login no nível do servidor usando o comando `CREATE LOGIN`.

1. Crie um usuário no `msdb` usando o comando `CREATE USER` e, então, vincule esse usuário ao login criado na etapa anterior.

1. Adicione o usuário ao `SQLAgentUserRole` usando o procedimento armazenado pelo sistema `sp_addrolemember`.

Por exemplo, digamos que o nome de usuário principal seja **admin** e que você deseja conceder acesso ao SQL Server Agent para um usuário chamado **theirname** com uma senha **theirpassword**. Nesse caso, é possível ignorar o procedimento a seguir.

**Para adicionar um usuário à função SQLAgentUser**

1. Faça login como usuário mestre.

1. Execute os seguintes comandos:

   ```
   --Initially set context to master database
   USE [master];
   GO
   --Create a server-level login named theirname with password theirpassword
   CREATE LOGIN [theirname] WITH PASSWORD = 'theirpassword';
   GO
   --Set context to msdb database
   USE [msdb];
   GO
   --Create a database user named theirname and link it to server-level login theirname
   CREATE USER [theirname] FOR LOGIN [theirname];
   GO
   --Added database user theirname in msdb to SQLAgentUserRole in msdb
   EXEC sp_addrolemember [SQLAgentUserRole], [theirname];
   ```

# Excluir um trabalho do SQL Server Agent
<a name="SQLServerAgent.DeleteJob"></a>

Você usa o procedimento armazenado `sp_delete_job` para excluir trabalhos do SQL Server Agent em Amazon RDS para Microsoft SQL Server.

Você não pode usar SSMS para excluir trabalhos do SQL Server Agent. Quando você tenta fazer isso, recebe uma mensagem de erro semelhante à seguinte:

```
The EXECUTE permission was denied on the object 'xp_regread', database 'mssqlsystemresource', schema 'sys'.
```

Como um serviço gerenciado, o RDS é restrito na execução de procedimentos que acessam o Registro do Windows. Quando você usa o SSMS, ele tenta executar um processo (`xp_regread`) para o qual o RDS não está autorizado.

**nota**  
No RDS para SQL Server, somente membros da função sysadmin podem atualizar ou excluir trabalhos pertencentes a um login diferente. Para ter mais informações, consulte [ Leveraging SQLAgentOperatorRole in RDS SQL Server](https://aws.amazon.com/blogs/database/leveraging-sqlagentoperatorrole-in-rds-sql-server/).

**Para excluir um trabalho do SQL Server Agent**
+ Execute a seguinte instrução T-SQL:

  ```
  EXEC msdb..sp_delete_job @job_name = 'job_name';
  ```

# Trabalhar com logs do Amazon RDS para Microsoft SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.Logs"></a>

É possível usar o console do Amazon RDS para visualizar, monitorar e baixar os logs do SQL Server Agent e os logs de erros do Microsoft SQL Server e os logs do SQL Server Reporting Services (SSRS)

## Monitorar arquivos de log
<a name="Appendix.SQLServer.CommonDBATasks.Logs.Watch"></a>

Ao visualizar um log no console do Amazon RDS, você pode ver o conteúdo conforme ele é naquele momento. Ao observar um log no console, ele é aberto em um estado dinâmico para que você possa ver as atualizações feitas nele em tempo quase real.

Só é possível monitorar o log mais recente. Por exemplo, digamos que os seguintes logs mostrem:

![\[Uma imagem da seção Logs do console do Amazon RDS com um log de erros selecionado.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/logs_sqlserver.png)


Somente log/ERRO está sendo ativamente atualizado, por ser o log mais recente. É possível monitorar os demais, mas eles são estáticos e não serão atualizados.

## Guardar arquivos de log
<a name="Appendix.SQLServer.CommonDBATasks.Logs.Archive"></a>

O console do Amazon RDS mostra os logs da última semana até o dia atual. É possível baixar os logs e arquivá-los se você deseja mantê-los para fins de referência após esse período. Uma maneira de arquivar logs é carregá-los em uma bucket do Amazon S3. Para obter instruções sobre como configurar um bucket do Amazon S3 e fazer upload de um arquivo, consulte [Noções básicas do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/AmazonS3Basics.html) no *Guia de conceitos básicos do Amazon Simple Storage Service* e clique em **Get Started (Conceitos básicos)**. 

## Visualizar logs do agente ou erros
<a name="Appendix.SQLServer.CommonDBATasks.Logs.SP"></a>

Para visualizar os logs de erro e do agente do Microsoft SQL Server, use o procedimento armazenado do Amazon RDS `rds_read_error_log` com os seguintes parâmetros: 
+ **`@index`** – a versão do log para recuperação. O valor padrão é 0, que recupera o log de erro atual. Especifique 1 para recuperar o registro anterior, especifique 2 para recuperar o anterior a ele, e assim por diante. 
+ **`@type`** – o tipo do log para recuperação. Especifique 1 para recuperar um log de erro. Especifique 2 para recuperar um log de agente. 

**Example**  
O exemplo a seguir solicita o log de erro atual.  

```
EXEC rdsadmin.dbo.rds_read_error_log @index = 0, @type = 1;
```

Para obter mais informações sobre erros do SQL Server, consulte [Erros do mecanismo de banco](https://docs.microsoft.com/en-us/sql/relational-databases/errors-events/database-engine-events-and-errors) de dados na documentação da Microsoft.

# Trabalhar com arquivos de rastreamento e despejo do Amazon RDS para SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.TraceFiles"></a>

Esta seção descreve como trabalhar com arquivos de rastreamento e arquivos de despejo para as instâncias de banco de dados do Amazon RDS que executam o Microsoft SQL Server. 

## Como gerar uma consulta de SQL de rastreamento
<a name="Appendix.SQLServer.CommonDBATasks.TraceFiles.TraceSQLQuery"></a>

```
1. declare @rc int 
2. declare @TraceID int 
3. declare @maxfilesize bigint 
4. 
5. set @maxfilesize = 5
6. 
7. exec @rc = sp_trace_create @TraceID output,  0, N'D:\rdsdbdata\log\rdstest', @maxfilesize, NULL
```

## Como visualizar um rastreamento aberto
<a name="Appendix.SQLServer.CommonDBATasks.TraceFiles.ViewOpenTrace"></a>

```
1. select * from ::fn_trace_getinfo(default)
```

## Como visualizar o conteúdo de um rastreamento
<a name="Appendix.SQLServer.CommonDBATasks.TraceFiles.ViewTraceContents"></a>

```
1. select * from ::fn_trace_gettable('D:\rdsdbdata\log\rdstest.trc', default)
```

## Como definir o período de retenção para arquivos de rastreamento e despejo
<a name="Appendix.SQLServer.CommonDBATasks.TraceFiles.PurgeTraceFiles"></a>

Os arquivos de rastreamento e despejo podem acumular e consumir espaço em disco. Por padrão, o Amazon RDS limpa os arquivos de rastreamento e despejo com mais de sete dias. 

Para visualizar o período de retenção atual de arquivos de rastreamento e despejo, use o procedimento `rds_show_configuration`, conforme mostrado no exemplo a seguir. 

```
1. exec rdsadmin..rds_show_configuration;
```

Para modificar o período de retenção dos arquivos de rastreamento, use o procedimento `rds_set_configuration` e defina a `tracefile retention` em minutos. O exemplo a seguir define o período de retenção para arquivos de rastreamento em 24 horas. 

```
1. exec rdsadmin..rds_set_configuration 'tracefile retention', 1440; 
```

Para modificar o período de retenção dos arquivos de despejo, use o procedimento `rds_set_configuration` e defina a `dumpfile retention` em minutos. O exemplo a seguir define o período de retenção para arquivos de despejo em 3 dias. 

```
1. exec rdsadmin..rds_set_configuration 'dumpfile retention', 4320; 
```

Por motivos de segurança, não é possível excluir um arquivo específico de rastreamento ou despejo em uma instância de banco de dados do SQL Server. Para excluir todos os arquivos de rastreamento ou despejo não utilizados, defina o período de retenção dos arquivos como 0. 