

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