

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