

# Opciones para el motor de base de datos de Microsoft SQL Server
<a name="Appendix.SQLServer.Options"></a>

En esta sección encontrará descripciones de las opciones que están disponibles para las instancias de Amazon RDS que ejecutan el motor de base de datos de Microsoft SQL Server. Para habilitar estas opciones, puede añadirlas a un grupo de opciones y, a continuación, asociar el grupo de opciones a la instancia de base de datos. Para obtener más información, consulte [Trabajo con grupos de opciones](USER_WorkingWithOptionGroups.md). 

Si busca características opcionales que no se hayan agregado a través de los grupos de opciones de RDS, (como SSL, la autenticación de Microsoft Windows y la integración de Amazon S3), consulte [Características adicionales para Microsoft SQL Server en Amazon RDS](User.SQLServer.AdditionalFeatures.md).

Amazon RDS admite las siguientes opciones para las instancias de base de datos de Microsoft SQL Server. 


****  

| Opción | ID de la opción | Ediciones del motor | 
| --- | --- | --- | 
|  [Servidores enlazados con Oracle OLEDB](Appendix.SQLServer.Options.LinkedServers_Oracle_OLEDB.md)  |  `OLEDB_ORACLE`  |  SQL Server Enterprise Edition SQL Server Standard Edition  | 
|  [Copia de seguridad y restauración nativas](Appendix.SQLServer.Options.BackupRestore.md)  |  `SQLSERVER_BACKUP_RESTORE`  |  SQL Server Enterprise Edition SQL Server Standard Edition SQL Server Web Edition SQL Server Express Edition  | 
|  [Cifrado de datos transparente](Appendix.SQLServer.Options.TDE.md)  |  `TRANSPARENT_DATA_ENCRYPTION` (consola de RDS) `TDE` (AWS CLI y API de RDS)  |  SQL Server 2016–2022 Enterprise Edition SQL Server 2022 Standard Edition | 
|  [SQL Server Audit](Appendix.SQLServer.Options.Audit.md)  |  `SQLSERVER_AUDIT`  |  En RDS, a partir de SQL Server 2016, todas las ediciones de SQL Server admiten auditorías de nivel de servidor, y la edición Enterprise también admite auditorías de nivel de base de datos. A partir del SQL Server SQL Server 2016 (13.x) SP1, todas las ediciones admiten tanto auditorías de nivel de servidor como de nivel de base de datos. Para obtener más información, consulte [SQL Server Audit (motor de base de datos)](https://docs.microsoft.com/sql/relational-databases/security/auditing/sql-server-audit-database-engine?view=sql-server-2017) en la documentación de 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  | 
|  [Coordinador de transacciones distribuidas de Microsoft](Appendix.SQLServer.Options.MSDTC.md)  |  `MSDTC`  |  En RDS, a partir de SQL Server 2016, todas las ediciones de SQL Server admiten transacciones distribuidas.  | 
|  [Gobernador de recursos de SQL Server](Appendix.SQLServer.Options.ResourceGovernor.md)  |  `RESOURCE_GOVERNOR`  |  SQL Server Enterprise Edition Edición Developer de SQL Server 2022  | 

## Descripción de las opciones disponibles para las versiones y ediciones de SQL Server
<a name="Appendix.SQLServer.Options.Describe"></a>

Puede usar el comando `describe-option-group-options` AWS CLI a fin de enumerar las opciones disponibles para las versiones y ediciones de SQL Server, así como la configuración de esas opciones.

En el siguiente ejemplo se muestran las opciones y la configuración de opciones para SQL Server 2019 Enterprise Edition. La opción `--engine-name` es obligatoria.

```
aws rds describe-option-group-options --engine-name sqlserver-ee --major-engine-version 15.00
```

La salida se parece a la siguiente:

```
{
    "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": []
        }
    ]
}
```

# Compatibilidad con servidores enlazados con Oracle OLEDB en Amazon RDS para SQL Server
<a name="Appendix.SQLServer.Options.LinkedServers_Oracle_OLEDB"></a>

Los servidores enlazados con Oracle Provider for OLEDB en RDS para SQL Server le permiten acceder a orígenes de datos externos en una base de datos de Oracle. Puede leer datos de orígenes de datos remotos de Oracle y ejecutar comandos en servidores de bases de datos de Oracle remotos fuera de su instancia de base de datos de RDS para SQL Server. Al usar servidores enlazados con Oracle OLEDB puede:
+ Acceder directamente a orígenes de datos distintas de SQL Server
+ Realizar consultas en diversos orígenes de datos de Oracle con la misma consulta sin mover los datos
+ Emitir consultas, actualizaciones, comandos y transacciones distribuidas en orígenes de datos en un ecosistema empresarial
+ Integrar las conexiones a una base de datos de Oracle desde la suite de Microsoft Business Intelligence (SSIS, SSRS, SSAS)
+ Migrar desde una base de datos de Oracle a RDS para SQL Server

Puede activar uno o más servidores enlazados para Oracle en una instancia de base de datos de RDS para SQL Server existente o nueva. A continuación, puede integrar orígenes de datos de Oracle externas con su instancia de base de datos.

**Contents**
+ [Versiones y regiones compatibles](#LinkedServers_Oracle_OLEDB.VersionRegionSupport)
+ [Limitaciones y recomendaciones](#LinkedServers_Oracle_OLEDB.Limitations)
+ [Activación de servidores enlazados con Oracle](#LinkedServers_Oracle_OLEDB.Enabling)
  + [Creación del grupo de opciones para OLEDB\$1ORACLE](#LinkedServers_Oracle_OLEDB.OptionGroup)
  + [Agregar la opción `OLEDB_ORACLE` al grupo de opciones](#LinkedServers_Oracle_OLEDB.Add)
  + [Modificación de la opción de la versión de `OLEDB_ORACLE` a otra versión](#LinkedServers_Oracle_OLEDB.Modify)
  + [Asociación del grupo de opciones a su instancia de base de datos](#LinkedServers_Oracle_OLEDB.Apply)
+ [Modificación de las propiedades del proveedor de OLEDB](#LinkedServers_Oracle_OLEDB.ModifyProviderProperties)
+ [Modificación de las propiedades del controlador OLEDB](#LinkedServers_Oracle_OLEDB.ModifyDriverProperties)
+ [Activación de servidores enlazados con Oracle](#LinkedServers_Oracle_OLEDB.Disable)

## Versiones y regiones compatibles
<a name="LinkedServers_Oracle_OLEDB.VersionRegionSupport"></a>

RDS para SQL Server admite servidores vinculados con Oracle OLEDB en todas las regiones para las ediciones Standard y Enterprise de SQL Server en las siguientes versiones:
+ SQL Server 2022, todas las versiones
+ SQL Server 2019, todas las versiones
+ SQL Server 2017, todas las versiones

Los servidores vinculados con Oracle OLEDB son compatibles con las siguientes versiones de Oracle Database:
+ Oracle Database 21c, todas las versiones
+ Oracle Database 19c, todas las versiones
+ Oracle Database 18c, todas las versiones

Los servidores vinculados con Oracle OLEDB son compatibles con las siguientes versiones de controlador de OLEDB Oracle:
+ 21.7
+ 21.16

## Limitaciones y recomendaciones
<a name="LinkedServers_Oracle_OLEDB.Limitations"></a>

Tenga en cuenta las siguientes limitaciones y recomendaciones que se aplican a los servidores enlazados con Oracle OLEDB:
+ Permita el tráfico de red añadiendo el puerto TCP correspondiente en el grupo de seguridad para cada instancia de base de datos de RDS para SQL Server. Por ejemplo, si está configurando un servidor vinculado entre una instancia de base de datos de Oracle de EC2 y una instancia de base de datos de RDS para SQL Server, debe permitir el tráfico desde la dirección IP de la instancia de base de datos de Oracle de EC2. También debe permitir el tráfico en el puerto que utiliza SQL Server para escuchar la comunicación de la base de datos. Para obtener más información acerca de los grupos de seguridad, consulte [Control de acceso con grupos de seguridad](Overview.RDSSecurityGroups.md).
+ Reinicie la instancia de base de datos de RDS para SQL Server después de activar, desactivar o modificar la opción `OLEDB_ORACLE` del grupo de opciones. El estado del grupo de opciones muestra `pending_reboot` para estos eventos y es obligatorio. Para las instancias Multi-AZ de RDS para SQL Server con las opciones AlwaysOn o Mirroring habilitadas, se espera una conmutación por error cuando la instancia se reinicie tras la creación o restauración de la instancia nueva.
+ Solo se admite la autenticación simple con un nombre de usuario y una contraseña para el origen de datos de Oracle.
+ No se admiten los controladores de Open Database Connectivity (ODBC). Solo se admiten las versiones de controladores OLEDB indicadas anteriormente.
+ Se admiten transacciones distribuidas (XA). Para activar las transacciones distribuidas, active la opción `MSDTC` del grupo de opciones de su instancia de base de datos y asegúrese de que las transacciones XA estén activadas. Para obtener más información, consulte [Compatibilidad con el Coordinador de transacciones distribuidas de Microsoft en RDS for SQL Server](Appendix.SQLServer.Options.MSDTC.md).
+ No se admite la creación de nombres de orígenes de datos (DSN, por sus siglas en inglés) para usarlos como atajos para una cadena de conexión.
+ No se admite el rastreo del controlador OLEDB. Puede utilizar eventos extendidos de SQL Server para rastrear eventos de OLEDB. Para obtener más información, 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/) (Configuración de eventos extendidos en RDS para SQL Server).
+ SQL Server Management Studio (SSMS) no admite el acceso a la carpeta de catálogos para un servidor vinculado a Oracle.

## Activación de servidores enlazados con Oracle
<a name="LinkedServers_Oracle_OLEDB.Enabling"></a>

Active los servidores enlazados con Oracle al agregar la opción `OLEDB_ORACLE` a la instancia de instancia de base de RDS para SQL Server. Utilice el siguiente proceso:

1. Cree un nuevo grupo de opciones o elija un grupo de opciones ya existente.

1. Añada la opción `OLEDB_ORACLE` al grupo de opciones.

1. Elija una versión del controlador OLEDB que desee utilizar.

1. Asocie el grupo de opciones a la instancia de base de datos.

1. Reinicie la instancia de base de datos.

### Creación del grupo de opciones para OLEDB\$1ORACLE
<a name="LinkedServers_Oracle_OLEDB.OptionGroup"></a>

Para trabajar con servidores enlazados con Oracle, cree un grupo de opciones o modifique un grupo de opciones que corresponda a la edición y versión de SQL Server de la instancia de base de datos que planea utilizar. Para completar este procedimiento, utilice la Consola de administración de AWS o la AWS CLI.

#### Consola
<a name="LinkedServers_Oracle_OLEDB.OptionGroup.Console"></a>

El siguiente procedimiento crea un grupo de opciones para SQL Server Standard Edition 2019.

**Para crear el grupo de opciones**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija **Create group**.

1. En la ventana **Create option group** (Crear grupo de opciones), haga lo siguiente:

   1. En **Nombre**, escriba un nombre para el grupo de opciones que sea exclusivo dentro de su cuenta de AWS, como **oracle-oledb-se-2019**. El nombre solo puede contener letras, dígitos y guiones.

   1. En **Descripción**, escriba una breve descripción del grupo de opciones, como **OLEDB\$1ORACLE option group for SQL Server SE 2019**. La descripción se utiliza para fines de visualización.

   1. Para **Engine (Motor)**, elija **sqlserver-se**.

   1. En **Major engine version** (Versión principal del motor), elija **15.00**.

1. Seleccione **Crear**.

#### CLI
<a name="LinkedServers_Oracle_OLEDB.OptionGroup.CLI"></a>

El siguiente procedimiento crea un grupo de opciones para SQL Server Standard Edition 2019.

**Para crear el grupo de opciones**
+ Ejecute uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o 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"
  ```

### Agregar la opción `OLEDB_ORACLE` al grupo de opciones
<a name="LinkedServers_Oracle_OLEDB.Add"></a>

A continuación, utilice la Consola de administración de AWS o la AWS CLI para agregar la opción `OLEDB_ORACLE` al grupo de opciones.

#### Consola
<a name="LinkedServers_Oracle_OLEDB.Add.Console"></a>

**Para añadir la opción OLEDB\$1ORACLE**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija el grupo de opciones que acaba de crear, **oracle-oledb-se-2019** en este ejemplo.

1. Elija **Agregar opción**.

1. En **Option details** (Detalles de la opción), elija **OLEDB\$1ORACLE** para **Option name** (Nombre de la opción).

1. En **Versión**, elija la versión del controlador OLEDB Oracle que desee instalar.

1. En **Scheduling** (Programación), elija si desea agregar la opción inmediatamente o en el siguiente período de mantenimiento.

1. Elija **Add option** (Agregar opción).

#### CLI
<a name="LinkedServers_Oracle_OLEDB.Add.CLI"></a>

**Para añadir la opción OLEDB\$1ORACLE**
+ Agregue la opción `OLEDB_ORACLE` al grupo de opciones.  
**Example**  

  Para Linux, macOS o 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
  ```

### Modificación de la opción de la versión de `OLEDB_ORACLE` a otra versión
<a name="LinkedServers_Oracle_OLEDB.Modify"></a>

Para modificar la versión de la opción `OLEDB_ORACLE` a otra versión, utilice la Consola de administración de AWS o la AWS CLI.

#### Consola
<a name="LinkedServers_Oracle_OLEDB.Modify.Console"></a>

**Modificación de la opción OLEDB\$1ORACLE**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija el grupo de opciones con la opción `OLEDB_ORACLE` (**oracle-oledb-se-2019** en los ejemplos anteriores).

1. Elija **Modify option** (Modificar opción).

1. En **Option details** (Detalles de la opción), elija **OLEDB\$1ORACLE** para **Option name** (Nombre de la opción).

1. En **Versión**, elija la versión del controlador OLEDB Oracle que desee utilizar.

1. En **Programación**, elija si desea modificar la opción inmediatamente o en el siguiente periodo de mantenimiento.

1. Elija **Modify option** (Modificar opción).

#### CLI
<a name="LinkedServers_Oracle_OLEDB.Add.CLI"></a>

Para modificar la versión de la opción `OLEDB_ORACLE`, use el 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)AWS CLI con el grupo de opciones y la versión de la opción que desea usar.

**Modificación de la opción OLEDB\$1ORACLE**
+   
**Example**  

  Para Linux, macOS o 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
  ```

### Asociación del grupo de opciones a su instancia de base de datos
<a name="LinkedServers_Oracle_OLEDB.Apply"></a>

Para asociar el grupo de opciones `OLEDB_ORACLE` y el grupo de parámetros con su instancia de base de datos, utilice la Consola de administración de AWS o la AWS CLI 

#### Consola
<a name="LinkedServers_Oracle_OLEDB.Apply.Console"></a>

Para terminar de activar los servidores enlazados para Oracle, asocie su grupo de opciones `OLEDB_ORACLE` a una instancia de base de datos nueva o existente:
+ Para una nueva instancia de base de datos, asóciela cuando inicie la instancia. Para obtener más información, consulte [Creación de una instancia de base de datos de Amazon RDS](USER_CreateDBInstance.md).
+ Para una instancia de base de datos existente, asóciela modificando la instancia. Para obtener más información, consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md).

#### CLI
<a name="LinkedServers_Oracle_OLEDB.Apply.CLI"></a>

Puede asociar el grupo de opciones `OLEDB_ORACLE` y el grupo de parámetros con una instancia de base de datos nueva o existente.

**Para crear una instancia con el grupo de opciones `OLEDB_ORACLE` y el grupo de parámetros**
+ Especifique el mismo tipo de motor de base de datos y la misma versión principal que ha utilizado al crear el grupo de opciones.  
**Example**  

  Para Linux, macOS o 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
  ```

**Para modificar una instancia y asociar el grupo de opciones `OLEDB_ORACLE`**
+ Ejecute uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o 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
  ```

## Modificación de las propiedades del proveedor de OLEDB
<a name="LinkedServers_Oracle_OLEDB.ModifyProviderProperties"></a>

Puede ver y cambiar las propiedades del proveedor de OLEDB. Solo el usuario `master` puede realizar esta tarea. Todos los servidores enlazados de Oracle que se crean en la instancia de base de datos utilizan las mismas propiedades de ese proveedor de OLEDB. Ejecute el procedimiento almacenado `sp_MSset_oledb_prop` para cambiar las propiedades del proveedor de OLEDB.

Para cambiar las propiedades del proveedor de 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
```

Se pueden modificar las siguientes propiedades:


****  

| Nombre de la propiedad | Valor recomendado (1 = activado, 0 = desactivado) | Descripción | 
| --- | --- | --- | 
| `Dynamic parameter` | 1 | Permite los marcadores de posición de SQL (representados por “?”) en consultas parametrizadas. | 
| `Nested queries` | 1 | Permite sentencias `SELECT` anidadas en la cláusula `FROM`, como las subconsultas. | 
| `Level zero only` | 0 | Solo las interfaces OLEDB de nivel base se invocan contra el proveedor. | 
| `Allow inprocess` | 1 | Si está activado, Microsoft SQL Server permite crear instancias del proveedor como un servidor en proceso. Defina esta propiedad en 1 para usar servidores enlazados de Oracle. | 
| `Non transacted updates` | 0 | Si no es cero, SQL Server permite las actualizaciones. | 
| `Index as access path` | False | Si no es cero, SQL Server intenta usar los índices del proveedor para obtener datos. | 
| `Disallow adhoc access` | False | Si está configurado, SQL Server no permite ejecutar consultas de transferencia con el proveedor de OLEDB. Si bien se puede marcar esta opción, a veces es adecuado ejecutar consultas de transferencia. | 
| `Supports LIKE operator` | 1 | Indica que el proveedor admite consultas con la palabra clave LIKE. | 

## Modificación de las propiedades del controlador OLEDB
<a name="LinkedServers_Oracle_OLEDB.ModifyDriverProperties"></a>

Puede ver y cambiar las propiedades del controlador OLEDB al crear un servidor vinculado para Oracle. Solo el usuario `master` puede realizar esta tarea. Las propiedades del controlador definen la forma en que el controlador OLEDB gestiona los datos cuando trabaja con un origen de datos remoto de Oracle. Las propiedades del controlador son específicas de cada servidor vinculado de Oracle creado en la instancia de base de datos. Ejecute el procedimiento almacenado `master.dbo.sp_addlinkedserver` para cambiar las propiedades del controlador OLEDB.

Ejemplo: Para crear un servidor vinculado y cambiar la propiedad `FetchSize` del controlador 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 una contraseña distinta de la que se muestra aquí como práctica recomendada de seguridad.

## Activación de servidores enlazados con Oracle
<a name="LinkedServers_Oracle_OLEDB.Disable"></a>

Para desactivar los servidores enlazados con Oracle, quite la opción `OLEDB_ORACLE` de su grupo de opciones.

**importante**  
La eliminación de la opción no elimina las configuraciones de servidor enlazado a la instancia de la base de datos. Debe eliminarlos manualmente para eliminarlos de la instancia de base de datos.  
Puede volver a activar la opción `OLEDB_ORACLE` después de eliminarla para volver a utilizar las configuraciones del servidor enlazado que se configuraron previamente en la instancia de base de datos.

### Consola
<a name="LinkedServers_Oracle_OLEDB.Disable.Console"></a>

El procedimiento siguiente quita la opción `OLEDB_ORACLE`.

**Para quitar la opción OLEDB\$1ORACLE de su grupo de opciones**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija el grupo de opciones con la opción `OLEDB_ORACLE` (`oracle-oledb-se-2019` en los ejemplos anteriores).

1. Elija **Delete option (Eliminar opción)**.

1. En **Deletion options** (Eliminar opciones), elija **OLEDB\$1ORACLE** para **Options to delete** (Opciones para eliminar).

1. En **Apply immediately** (Aplicar inmediatamente), seleccione **Yes** (Sí) para eliminar la opción inmediatamente o **No** para eliminarla en el siguiente período de mantenimiento.

1. Elija **Delete** (Eliminar).

### CLI
<a name="LinkedServers_Oracle_OLEDB.Disable.CLI"></a>

El procedimiento siguiente quita la opción `OLEDB_ORACLE`.

**Para quitar la opción OLEDB\$1ORACLE de su grupo de opciones**
+ Ejecute uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o 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 enlazados con ODBC de Teradata en RDS para SQL Server
<a name="USER_SQLServerTeradata"></a>

La compatibilidad para servidores enlazados con el controlador ODBC de Teradata en RDS para SQL Server le permite acceder a orígenes de datos externos en una base de datos de Teradata. Puede leer datos y ejecutar comandos desde servidores de bases de datos de Teradata remotos fuera de la instancia de RDS para SQL Server. Utilice servidores enlazados con ODBC de Teradata para habilitar las siguientes capacidades:
+ Acceda directamente a orígenes de datos distintos de SQL Server.
+ Realice consultas en diversos orígenes de datos de Teradata con la misma consulta sin mover los datos.
+ Emita consultas, actualizaciones, comandos y transacciones distribuidas en orígenes de datos en un ecosistema empresarial.
+ Integre las conexiones a una base de datos de Teradata desde el conjunto de inteligencia empresarial de Microsoft (SSIS, SSRS, SSAS).
+ Migre desde una base de datos de Teradata a RDS para SQL Server.

Tiene la opción de elegir activar uno o más servidores enlazados para Teradata en una instancia de base de datos de RDS para SQL Server existente o nueva. A continuación, puede integrar orígenes de datos de Teradata externos con la instancia de base de datos.

**Topics**
+ [Versiones y regiones compatibles](#USER_SQLServerTeradata.VersionRegionSupport)
+ [Limitaciones y recomendaciones](#USER_SQLServerTeradata.LimitsandRecommendations)
+ [Consideraciones para implementaciones multi-AZ](#USER_SQLServerTeradata.MultiAZ)
+ [Activación de servidores enlazados con Teradata](USER_SQLServerTeradata.Activate.md)
+ [Creación de servidores enlazados con Teradata](USER_SQLServerTeradata.CreateLinkedServers.md)
+ [Desactivación de los servidores vinculados a Teradata](USER_SQLServerTeradata.Deactivate.md)

## Versiones y regiones compatibles
<a name="USER_SQLServerTeradata.VersionRegionSupport"></a>

RDS para SQL Server admite servidores vinculados con ODBC de Teradata en todas las Regiones de AWS para las ediciones Standard y Enterprise de SQL Server para las siguientes versiones:
+ SQL Server 2022, todas las versiones
+ SQL Server 2019, todas las versiones
+ SQL Server 2017, todas las versiones

Las siguientes versiones de bases de datos de Teradata admiten la vinculación con RDS para SQL Server
+ Teradata 17.20, todas las versiones

## Limitaciones y recomendaciones
<a name="USER_SQLServerTeradata.LimitsandRecommendations"></a>

Las siguientes limitaciones se aplican a los servidores enlazados con ODBC de Teradata:
+ RDS para SQL Server admite solo la autenticación simple con un nombre de usuario y una contraseña para el origen de Teradata.
+ RDS para SQL Server solo admite la versión 17.20.0.33 del controlador ODBC de Teradata.
+ RDS para SQL Server no admite la creación de nombres de orígenes de datos (DSN) para usarlos como atajos para una cadena de conexión.
+ RDS para SQL Server no admite el seguimiento de controladores ODBC. Utilice eventos extendidos de SQL Server para realizar un seguimiento de los eventos de ODBC. Para obtener más información, 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/) (Configuración de eventos extendidos en RDS para SQL Server).
+ RDS para SQL Server no admite el acceso a la carpeta de catálogos para un servidor vinculado a Teradata cuando se usa SQL Server Management Studio (SSMS).

Tenga en cuenta las siguientes recomendaciones cuando utilice servidores vinculados con ODBC de Teradata:
+ Permita el tráfico de red añadiendo el puerto TCP correspondiente en el grupo de seguridad para cada instancia de base de datos de RDS para SQL Server. Si configura un servidor vinculado entre una instancia de base de datos de Teradata de EC2 y una instancia de base de datos de RDS para SQL Server, debe permitir el tráfico desde la dirección IP de la instancia de base de datos de Teradata de EC2. También debe permitir el tráfico en el puerto que utiliza la instancia de base de datos de RDS para SQL Server para escuchar la comunicación de la base de datos. Para obtener más información acerca de los grupos de seguridad, consulte [Control de acceso con grupos de seguridad](Overview.RDSSecurityGroups.md).
+ Se admiten transacciones distribuidas (XA). Para activar las transacciones distribuidas, active la opción `MSDTC` del grupo de opciones de la instancia de base de datos y asegúrese de que las transacciones XA estén activadas. Para obtener más información, consulte [Compatibilidad con el Coordinador de transacciones distribuidas de Microsoft en RDS for SQL Server](Appendix.SQLServer.Options.MSDTC.md).
+ ODBC vinculados de Teradata admiten SSL/TLS siempre que estén configurados en el servidor de Teradata. Para obtener más información, consulte [Habilitar la conectividad TLS en 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).

## Consideraciones para implementaciones multi-AZ
<a name="USER_SQLServerTeradata.MultiAZ"></a>

Actualmente, RDS para SQL Server no replica los servidores vinculados en el servidor de base de datos reflejado (o en el servidor secundario del grupo de disponibilidad Always On) en una implementación multi-AZ. Si los servidores vinculados se agregan antes de cambiar la configuración para agregar replicación o Always On, entonces los servidores vinculados se copian para los servidores vinculados existentes.

Otra opción, puede crear los servidores vinculados en la instancia principal, realizar la conmutación por error a la instancia del servidor de alta disponibilidad y, a continuación, volver a crear los servidores vinculados para que estén en ambas instancias de RDS para SQL Server. 

# Activación de servidores enlazados con Teradata
<a name="USER_SQLServerTeradata.Activate"></a>

Active los servidores enlazados con Teradata al agregar la opción `ODBC_TERADATA` a la instancia de base de datos de RDS para SQL Server. Utilice el siguiente proceso:

**Topics**
+ [Creación del grupo de opciones para `ODBC_TERADATA`](#USER_SQLServerTeradata.Activate.CreateOG)
+ [Agregar la opción `ODBC_TERADATA` al grupo de opciones](#USER_SQLServerTeradata.Activate.AddOG)
+ [Asociación de la opción `ODBC_TERADATA` a la instancia de base de datos](#USER_SQLServerTeradata.Activate.AssociateOG)

## Creación del grupo de opciones para `ODBC_TERADATA`
<a name="USER_SQLServerTeradata.Activate.CreateOG"></a>

Para trabajar con servidores enlazados con Teradata, cree un grupo de opciones o modifique un grupo de opciones que corresponda a la edición y versión de SQL Server de la instancia de base de datos que planea utilizar. Para completar este procedimiento, utilice la Consola de administración de AWS o la AWS CLI.

### Consola
<a name="USER_SQLServerTeradata.Activate.CreateOG.Console"></a>

Use el siguiente procedimiento para crear un grupo de opciones para SQL Server Standard Edition 2019.

**Para crear el grupo de opciones**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija **Create group**.

1. En la ventana **Create option group** (Crear grupo de opciones), haga lo siguiente:

   1. En **Name** (Nombre), escriba un nombre para el grupo de opciones que sea exclusivo dentro de su Cuenta de AWS, como `teradata-odbc-se-2019`. El nombre solo puede contener letras, dígitos y guiones. 

   1. Para **Descripción**, ingrese una breve descripción del grupo de opciones.

   1. Para **Engine (Motor)**, elija **sqlserver-se**.

   1. En **Major engine version** (Versión principal del motor), elija **15.00**.

1. Seleccione **Crear**.

### AWS CLI
<a name="USER_SQLServerTeradata.Activate.CreateOG.CLI"></a>

El siguiente procedimiento crea un grupo de opciones para SQL Server Standard Edition 2019.

**Example**  
Para Linux, macOS o 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"
```

## Agregar la opción `ODBC_TERADATA` al grupo de opciones
<a name="USER_SQLServerTeradata.Activate.AddOG"></a>

A continuación, utilice la Consola de administración de AWS o la AWS CLI para agregar la opción `ODBC_Teradata` al grupo de opciones.

### Consola
<a name="USER_SQLServerTeradata.Activate.AddOG.Console"></a>

El uso del siguiente procedimiento crea un grupo de opciones para SQL Server Standard Edition 2019.

**Agregación de la opción de `ODBC_TERADATA`**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija el nuevo grupo de opciones.

1. Elija **Agregar opción**.

1. En **Detalles de la opción**:

   1. Elija **ODBC\$1TERADATA** para **Nombre de la opción**.

   1. Para `17.20.33.00` para **Versión de la opción**.

1. En la programación, elija si desea agregar la opción inmediatamente o en el siguiente periodo de mantenimiento.

1. Elija **Add option** (Agregar opción).

### AWS CLI
<a name="USER_SQLServerTeradata.Activate.AddOG.CLI"></a>

El siguiente procedimiento agrega la opción `ODBC_TERADATA` al grupo de opciones.

**Example**  
Para Linux, macOS o 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
```

## Asociación de la opción `ODBC_TERADATA` a la instancia de base de datos
<a name="USER_SQLServerTeradata.Activate.AssociateOG"></a>

Para asociar el grupo de opciones de `ODBC_TERADATA` a la instancia de base de datos, use la Consola de administración de AWS o la AWS CLI.

### Consola
<a name="USER_SQLServerTeradata.Activate.AssociateOG.Console"></a>

Para terminar de activar los servidores enlazados para Teradata, asocie el grupo de opciones a una instancia de base de datos nueva o existente:
+ Para una nueva instancia de base de datos, asóciela cuando lance la instancia. Para obtener más información, consulte [Creación de una instancia de base de datos de Amazon RDS](USER_CreateDBInstance.md).
+ Para una instancia de base de datos existente, asóciela modificando la instancia. Para obtener más información, consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md).

### AWS CLI
<a name="USER_SQLServerTeradata.Activate.AssociateOG.CLI"></a>

Especifique el mismo tipo de motor de base de datos y la misma versión principal que ha utilizado al crear el grupo de opciones.

Para Linux, macOS o 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 una instancia y asociar el grupo de opciones nuevo:

Para Linux, macOS o 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
```

# Creación de servidores enlazados con Teradata
<a name="USER_SQLServerTeradata.CreateLinkedServers"></a>

Para crear un servidor vinculado con Teradata, ejecute los siguientes 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'
```

A continuación, se muestra un ejemplo de los comandos anteriores:

```
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 una contraseña distinta de la que se muestra aquí como práctica recomendada de seguridad.

# Desactivación de los servidores vinculados a Teradata
<a name="USER_SQLServerTeradata.Deactivate"></a>

Para desactivar los servidores enlazados con Teradata, quite la opción `ODBC_TERADATA` de su grupo de opciones.

**importante**  
La eliminación de la opción no elimina las configuraciones de servidor enlazado a la instancia de la base de datos. Debe eliminarlos manualmente para eliminarlos de la instancia de base de datos.  
Puede volver a activar `ODBC_TERADATA` después de eliminarlo para volver a utilizar las configuraciones del servidor enlazado que se configuraron previamente en la instancia de base de datos.

## Consola
<a name="USER_SQLServerTeradata.Deactivate.Console"></a>

Eliminación de la opción `ODBC_TERADATA` del grupo de opciones

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija el grupo de opciones con la opción `ODBC_TERADATA`. 

1. Elija **Eliminar**.

1. En **Opciones de eliminación**, elija `ODBC_TERADATA` en **Opciones para eliminar**.

1. En **Apply immediately** (Aplicar inmediatamente), seleccione **Yes** (Sí) para eliminar la opción inmediatamente o **No** para eliminarla en el siguiente período de mantenimiento.

1. Elija **Eliminar**.

## AWS CLI
<a name="USER_SQLServerTeradata.Deactivate.CLI"></a>

Los comandos siguientes eliminan la opción `ODBC_TERADATA`.

Para Linux, macOS o 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
```

# Compatibilidad con copia de seguridad y restauración nativas en SQL Server
<a name="Appendix.SQLServer.Options.BackupRestore"></a>

Al utilizar las características de copia de seguridad y restauración nativas para bases de datos de SQL Server, puede crear una copia de seguridad diferencial o completa en la base de datos que tiene en las instalaciones y almacenar los archivos de copia de seguridad en Amazon S3. A continuación, puede restaurar a una instancia de base de datos de Amazon RDS existente que ejecute SQL Server. También puede realizar una copia de seguridad de una base de datos de SQL Server de RDS, almacenarla en Amazon S3 y restaurarla en otras ubicaciones. Además, puede restaurar la copia de seguridad a un servidor local, o bien a otra instancia de base de datos de Amazon RDS que ejecute SQL Server. Para obtener más información, consulte [Importación y exportación de bases de datos de SQL Server por copias de seguridad y restauración nativas](SQLServer.Procedural.Importing.md).

Amazon RDS da soporte a la copia de seguridad y la restauración nativas de bases de datos de Microsoft SQL Server mediante los archivos de copia de seguridad diferenciales y completos (archivos .bak).

## Adición de opciones de copia de seguridad y restauración nativas
<a name="Appendix.SQLServer.Options.BackupRestore.Add"></a>

El proceso general para añadir la opción de copia de seguridad y restauración nativas a una instancia de base de datos es el siguiente:

1. Cree un grupo de opciones nuevo o copie o modifique un grupo de opciones existente.

1. Añada la opción `SQLSERVER_BACKUP_RESTORE` al grupo de opciones.

1. Asocie un rol de AWS Identity and Access Management (IAM) con la opción. El rol de IAM debe tener acceso a un bucket de S3 para almacenar las copias de seguridad de base de datos.

   Es decir, la opción debe tener como ajuste de opción un nombre de recurso de Amazon (ARN) válido en el formato `arn:aws:iam::account-id:role/role-name`. Para obtener más información, consulte [Nombres de recurso de Amazon (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-iam) en la *Referencia general de AWS.*

   El rol de IAM también debe tener una relación de confianza y una política de permisos adjunta. La relación de confianza permite a RDS asumir el rol y la política de permisos define las acciones que puede realizar el rol. Para obtener más información, consulte [Creación manual de un rol de IAM para la copia de seguridad y la restauración nativas](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM).

1. Asocie el grupo de opciones a la instancia de base de datos.

Después de añadir la opción de copia de seguridad y restauración nativas, no es necesario reiniciar la instancia de base de datos. En cuanto el grupo de opciones esté activo, podrá empezar a crear copias de seguridad y restauraciones.

### Consola
<a name="Add.Native.Backup.Restore.Console"></a>

**Para añadir la opción de copia de seguridad y restauración nativas**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Cree un nuevo grupo de opciones o utilice un grupo de opciones existente. Para obtener más información sobre cómo crear un grupo de opciones de base de datos personalizado, consulte [Creación de un grupo de opciones](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create).

   Para utilizar un grupo de opciones existente, vaya al siguiente paso.

1. Añada la opción **SQLSERVER\$1BACKUP\$1RESTORE** al grupo de opciones. Para obtener más información acerca de la adición de opciones, consulte [Agregar una opción a un grupo de opciones](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption).

1. Aplique alguna de las siguientes acciones:
   + Para utilizar un rol de IAM existente y configuración de Amazon S3, elija un rol de IAM existente para **IAM Role (Rol de IAM)**. Si utiliza un rol de IAM existente, RDS utiliza los ajustes de Amazon S3 configurados para este rol.
   + Para crear un nuevo rol y establecer las configuraciones de Amazon S3, haga lo siguiente: 

     1. En **IAM Role** (Rol de IAM), elija **Create a New Role** (Crear un nuevo rol).

     1. Para **S3 bucket** (bucket de S3), elija un bucket de S3 de la lista.

     1. En **S3 prefix (optional)** (Prefijo de S3 [opcional]), especifique un prefijo para usarlo con los archivos almacenados en el bucket de Amazon S3. 

        Este prefijo puede incluir una ruta de archivo, pero no es obligatorio. Si proporciona un prefijo, RDS asocia dicho prefijo a todos los archivos de copia de seguridad. RDS utiliza a continuación el prefijo durante una restauración para identificar archivos relacionados y omitir archivos irrelevantes. Por ejemplo, podría usar el bucket de S3 para otros fines además de mantener archivos de copia de seguridad. En este caso, puede utilizar el prefijo para que RDS realice la copia de seguridad y restauración nativas solo en una carpeta específica y sus subcarpetas.

        Si deja el prefijo en blanco, RDS no utiliza un prefijo para identificar archivos de copia de seguridad o archivos que restaurar. En consecuencia, durante una restauración de varios archivos, RDS trata de restaurar todos los archivos de todas las carpetas del bucket de S3.

     1. Elija la casilla **Enable Encryption** (habilitar cifrado) para cifrar el archivo de copia de seguridad. No seleccione la casilla de verificación (predeterminada) para que el archivo de copia de seguridad no esté cifrado.

        Si eligió **Enable encryption** (habilitar cifrado), seleccione una clave de cifrado para **AWS KMS key**. Para obtener más información acerca de las claves de cifrado, consulte la [introducción](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html) en la *guía para desarrolladores de AWS Key Management Service*.

1. Elija **Add option** (Agregar opción).

1. Aplique el grupo de opciones a una instancia de base de datos nueva o existente:
   + Si se trata de una instancia de base de datos nueva, aplique el grupo de opciones al lanzar la instancia. Para obtener más información, consulte [Creación de una instancia de base de datos de Amazon RDS](USER_CreateDBInstance.md). 
   + Para una instancia de base de datos existente, el grupo de opciones se aplica modificando la instancia y asociando el grupo de opciones nuevo. Para obtener más información, consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md). 

### CLI
<a name="Add.Native.Backup.Restore.CLI"></a>

En este procedimiento se parte de las siguientes suposiciones:
+ Usted está agregando la opción SQLSERVER\$1BACKUP\$1RESTORE a un grupo de opciones que ya existe. Para obtener más información acerca de la adición de opciones, consulte [Agregar una opción a un grupo de opciones](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption).
+ Está asociando la opción a un rol de IAM que ya existe y tiene acceso a un bucket de S3 para almacenar las copias de seguridad.
+ Está aplicando el grupo de opciones a una instancia de base de datos que ya existe. Para obtener más información, consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md). 

**Para agregar la opción de copia de seguridad y restauración nativas**

1. Añada la opción `SQLSERVER_BACKUP_RESTORE` al grupo de opciones.  
**Example**  

   Para Linux, macOS o: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}]"
   ```

   En: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**  
Al utilizar el símbolo del sistema de Windows, debe aplicar escape con comillas dobles (") en código JSON al ponerlas como prefijo con una barra invertida (\$1).

1. Aplique el grupo de opciones a la instancia de base de datos.  
**Example**  

   Para Linux, macOS o:Unix

   ```
   aws rds modify-db-instance \
   	--db-instance-identifier mydbinstance \
   	--option-group-name mybackupgroup \
   	--apply-immediately
   ```

   En:Windows

   ```
   aws rds modify-db-instance ^
   	--db-instance-identifier mydbinstance ^
   	--option-group-name mybackupgroup ^
   	--apply-immediately
   ```

## Modificación de opciones de copia de seguridad y restauración nativas
<a name="Appendix.SQLServer.Options.BackupRestore.ModifySettings"></a>

Después de habilitar la opción de copia de seguridad y restauración nativas, puede modificar su configuración. Para obtener más información acerca de cómo modificar la configuración de las opciones, consulte [Modificación de una configuración de opciones](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption).

## Quitar la opción de copia de seguridad y restauración nativas
<a name="Appendix.SQLServer.Options.BackupRestore.Remove"></a>

Puede desactivar la característica de copia de seguridad y restauración nativas eliminando la opción de su instancia de base de datos. Después de eliminar la opción de copia de seguridad y restauración nativas, no es necesario reiniciar la instancia de base de datos. 

Para eliminar la opción de copia de seguridad y restauración nativas de una instancia de base de datos, lleve a cabo el siguiente procedimiento: 
+ Quite la opción del grupo de opciones al que pertenece. Este cambio afecta a todas las instancias de base de datos que utilizan el grupo de opciones. Para obtener más información, consulte [Quitar una opción de un grupo de opciones](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption). 
+ Modifique la instancia de base de datos y especifique otro grupo de opciones que no incluya la opción de copia de seguridad y restauración nativas. Este cambio afecta a una única instancia de base de datos. Puede especificar el grupo de opciones predeterminado (vacío) u otro grupo de opciones personalizado. Para obtener más información, consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md). 

# Compatibilidad con el Cifrado de datos transparente en SQL Server
<a name="Appendix.SQLServer.Options.TDE"></a>

Amazon RDS admite el Cifrado de datos transparente (TDE) para cifrar los datos almacenados en las instancias de base de datos en las que se ejecuta Microsoft SQL Server. La característica TDE cifra automáticamente los datos antes de que se escriban en el sistema de almacenamiento y los descifra también automáticamente cuando se leen. 

Amazon RDS admite TDE para las siguientes versiones y ediciones de SQL Server:
+ SQL Server 2022: Standard y Enterprise Editions
+ SQL Server 2019: Standard y Enterprise Editions
+ SQL Server 2017 Enterprise Edition
+ SQL Server 2016 Enterprise Edition

**nota**  
RDS para SQL Server no admite TDE para bases de datos de solo lectura.

Con el cifrado de datos transparente para SQL Server se ofrece administración de claves de cifrado mediante el uso de una arquitectura de claves de dos niveles. Para proteger las claves de cifrado de datos se usa un certificado generado desde la clave maestra de la base de datos. La clave de cifrado de base de datos efectúa el cifrado y descifrado real de los datos en la base de datos del usuario. Amazon RDS crea copias de seguridad y administra la clave maestra de la base de datos y el certificado de TDE

El cifrado de datos transparente se usa en situaciones en las que es necesario cifrar información confidencial. Por ejemplo, es posible que desee proporcionar archivos de datos y copias de seguridad a un tercero, o bien solucionar problemas de cumplimiento normativo relacionados con la seguridad. No puede cifrar las bases de datos del sistema para SQL Server, por ejemplo las bases de datos `model` o `master`.

Ofrece una descripción detallada del cifrado de datos transparente va más allá del alcance de esta guía, pero asegúrese de conocer los puntos fuertes y débiles de cada algoritmo y cada clave de cifrado. Para obtener información sobre el cifrado transparente de datos para SQL Server, consulte [Transparent Data Encryption (TDE)](http://msdn.microsoft.com/en-us/library/bb934049.aspx) (Cifrado transparente de datos) en la documentación de Microsoft.

**Topics**
+ [Activación de TDE en RDS para SQL Server](#TDE.Enabling)
+ [Cifrado de datos en RDS para SQL Server](TDE.Encrypting.md)
+ [Copia de seguridad y restauración de certificados TDE en RDS para SQL Server](TDE.BackupRestoreRDS.md)
+ [Copia de seguridad y restauración de certificados TDE para bases de datos en las instalaciones](TDE.BackupRestoreOnPrem.md)
+ [Desactivación de TDE en RDS para SQL Server](TDE.Disabling.md)

## Activación de TDE en RDS para SQL Server
<a name="TDE.Enabling"></a>

A fin de activar el cifrado de datos transparente para una instancia de base de datos de SQL Server de RDS, especifique la opción de TDE en un grupo de opciones de RDS que esté asociado con esa instancia de base de datos:

1. Determine si la instancia de base de datos ya está asociada con un grupo de opciones que tiene la opción TDE. Para ver el grupo de opciones al que está asociada una instancia de base de datos, utilice la consola de RDS, el comando [describe-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) de la AWS CLI o la operación [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html) de la API.

1.  Si la instancia de base de datos no está asociada a un grupo de opciones con TDE activado, dispone de dos alternativas: Puede crear un grupo de opciones o añadir la opción TDE, o bien modificar el grupo de opciones asociado para añadirla.
**nota**  
En la consola de RDS, la opción se denomina `TRANSPARENT_DATA_ENCRYPTION`. En la AWS CLI y la API de RDS, se denomina `TDE`.

   Para obtener información acerca de cómo crear o modificar un grupo de opciones, consulte [Trabajo con grupos de opciones](USER_WorkingWithOptionGroups.md). Para obtener información acerca de cómo añadir una opción a un grupo de opciones, consulte [Agregar una opción a un grupo de opciones](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption).

1.  Asocie la instancia de base de datos al grupo de opciones que tiene la opción TDE. Para obtener información acerca de cómo asociar una instancia de base de datos a un grupo de opciones, consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md).

### Consideraciones relativas al grupo de opciones
<a name="TDE.Options"></a>

La opción TDE es persistente. No se puede eliminar de un grupo de opciones a menos que todas las instancias de base de datos y las copias de seguridad dejen de estar asociadas al grupo de opciones. Una vez que la opción TDE se agrega a un grupo de opciones, este solo se puede asociar a instancias de base de datos que usan TDE. Para obtener más información acerca de las opciones persistentes de un grupo de opciones, use [Información general sobre grupos de opciones](USER_WorkingWithOptionGroups.md#Overview.OptionGroups). 

Como TDE es una opción persistente, puede producirse un conflicto entre el grupo de opciones y una instancia de base de datos asociada. Puede tener un conflicto en las siguientes situaciones:
+ El grupo de opciones actual tiene la opción TDE y lo reemplaza por un grupo de opciones que no la tiene.
+ Restaura desde una instantánea de base de datos a una nueva instancia de base de datos que no tiene un grupo de opciones que contenga la opción TDE. Para obtener más información acerca de esta situación, consulte [Aspectos a tener en cuenta sobre los grupos de opciones](USER_CopySnapshot.md#USER_CopySnapshot.Options). 

### Consideraciones sobre el rendimiento de SQL Server
<a name="TDE.Perf"></a>

El uso del cifrado de datos transparente puede afectar al rendimiento de una instancia de base de datos de SQL Server.

El desempeño de las bases de datos sin cifrar puede reducirse también si están en una instancia de base de datos que tenga al menos una base de datos cifrada. Como resultado, es recomendable mantener las bases de datos cifradas y sin cifrar en instancias de base de datos diferentes.

# Cifrado de datos en RDS para SQL Server
<a name="TDE.Encrypting"></a>

Cuando la opción TDE se agrega a un grupo de opciones, Amazon RDS genera un certificado que se usa en el proceso de cifrado. A continuación puede usar el certificado para ejecutar instrucciones SQL que cifren los datos de una base de datos de la instancia de base de datos.

En el siguiente ejemplo se usa un certificado creado por RDS llamado `RDSTDECertificateName` para cifrar una base de datos denominada `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
```

El tiempo que tarda en cifrarse una base de datos de SQL Server con TDE depende de varios factores. Estos incluyen el tamaño de la instancia de base de datos, si la instancia usa el almacenamiento de IOPS aprovisionadas, la cantidad de datos y otros factores.

# Copia de seguridad y restauración de certificados TDE en RDS para SQL Server
<a name="TDE.BackupRestoreRDS"></a>

RDS para SQL Server proporciona procedimientos almacenados para realizar copias de seguridad de los certificados TDE, restaurarlos y eliminarlos. RDS para SQL Server también proporciona una función para ver los certificados TDE de usuario restaurados.

Los certificados TDE de usuario se utilizan para restaurar las bases de datos en RDS para SQL Server que están en las instalaciones y tienen TDE activado. Estos certificados tienen el prefijo `UserTDECertificate_`. Después de restaurar las bases de datos, y antes de hacer que estén disponibles para usarlas, RDS modifica las bases de datos que tienen TDE activado a fin de utilizar los certificados TDE generados por RDS. Estos certificados tienen el prefijo `RDSTDECertificate`.

Los certificados TDE de usuario permanecen en la instancia de base de datos de RDS para SQL Server, a menos que los elimine mediante el procedimiento almacenado `rds_drop_tde_certificate`. Para obtener más información, consulte [Eliminación de certificados TDE restaurados](#TDE.BackupRestoreRDS.Drop).

Puede utilizar un certificado TDE de usuario para restaurar otras bases de datos desde la instancia de base de datos de origen. Las bases de datos que se van a restaurar deben utilizar el mismo certificado TDE y tener TDE activado. No tiene que volver a importar (restaurar) el mismo certificado. 

**Topics**
+ [Requisitos previos](#TDE.BackupRestoreRDS.Prereqs)
+ [Limitaciones](#TDE.Limitations)
+ [Copia de seguridad de un certificado TDE](#TDE.BackupRestoreRDS.Backup)
+ [Restauración de un certificado TDE](#TDE.BackupRestoreRDS.Restore)
+ [Visualización de certificados TDE](#TDE.BackupRestoreRDS.Show)
+ [Eliminación de certificados TDE restaurados](#TDE.BackupRestoreRDS.Drop)

## Requisitos previos
<a name="TDE.BackupRestoreRDS.Prereqs"></a>

Para poder hacer una copia de seguridad de los certificados TDE o restaurarlos en RDS para SQL Server, asegúrese de realizar las siguientes tareas. Las tres primeras se describen en [Configuración de la copia de seguridad y la restauración nativas](SQLServer.Procedural.Importing.Native.Enabling.md).

1. Cree buckets de uso general o buckets de directorio de Amazon S3 para almacenar archivos con el fin de realizar copias de seguridad y restauraciones.

   Le recomendamos que utilice buckets distintos para las copias de seguridad de la base de datos y para las copias de seguridad de los certificados TDE.

1. Cree un rol de IAM para hacer copias de seguridad de los archivos y restaurarlos.

   El rol de IAM debe ser tanto un usuario como un administrador para la AWS KMS key.

   Al usar buckets de directorio, no se requieren permisos adicionales aparte de los permisos necesarios para [Creación manual de un rol de IAM para la copia de seguridad y la restauración nativas](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM) con buckets de directorio.

   Al usar recursos de S3, el rol de IAM también requiere los siguientes permisos, además de los permisos necesarios para [Creación manual de un rol de IAM para la copia de seguridad y la restauración nativas](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM):
   + `s3:GetBucketAcl`, `s3:GetBucketLocation` y `s3:ListBucket` en el recurso de bucket de S3

1. Agregue la opción `SQLSERVER_BACKUP_RESTORE` a un grupo de opciones en su instancia de base de datos.

   Esto se agrega a la opción `TRANSPARENT_DATA_ENCRYPTION` (`TDE`).

1. Asegúrese de que tiene una clave de KMS de cifrado simétrica. Dispone de las opciones siguientes:
   + Si ya dispone de una clave de KMS en la cuenta, puede utilizarla. No hay que hacer nada más.
   + Si no tiene una clave de cifrado KMS simétrica existente en su cuenta, cree una clave KMS mediante las instrucciones de [Creating keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) (Crear claves) en la *AWS Key Management ServiceDeveloper Guide* (Guía para desarrolladores).

1. Habilite la integración de Amazon S3 para transferir archivos entre la instancia de base de datos y Amazon S3.

   Para obtener información sobre la habilitación de la integración de Amazon S3, consulte [Integración de una instancia de base de datos de Amazon RDS for SQL Server con Amazon S3](User.SQLServer.Options.S3-integration.md).

   Tenga en cuenta que los buckets de directorios no son compatibles con la integración de S3. Este paso solo es necesario para [Copia de seguridad y restauración de certificados TDE para bases de datos en las instalaciones](TDE.BackupRestoreOnPrem.md).

## Limitaciones
<a name="TDE.Limitations"></a>

El uso de procedimientos almacenados para hacer copias de seguridad de certificados TDE y restaurarlos tiene las siguientes limitaciones:
+ Las opciones `SQLSERVER_BACKUP_RESTORE` y `TRANSPARENT_DATA_ENCRYPTION` (`TDE`) deben agregarse al grupo de opciones que haya asociado a su instancia de base de datos.
+ Las copias de seguridad y la restauración de los certificados TDE no son compatibles con las instancias de base de datos Multi-AZ.
+ No se admite la cancelación de tareas de copia de seguridad y restauración de certificados TDE.
+ No puede utilizar un certificado TDE de usuario para el cifrado TDE de otra base de datos en su instancia de base de datos RDS para SQL Server. Puede utilizarlo para restaurar solo otras bases de datos de la instancia de base de datos de origen que tengan TDE activado y que utilicen el mismo certificado TDE.
+ Solo puede eliminar certificados TDE de usuario.
+ El número máximo de certificados TDE de usuario admitidos en RDS es 10. Si el número es superior a diez, elimine los certificados TDE no utilizados y vuelva a intentarlo.
+ El nombre del certificado no puede estar vacío ni ser nulo.
+ Al restaurar un certificado, su nombre no puede incluir la palabra clave `RDSTDECERTIFICATE` y debe comenzar por el prefijo `UserTDECertificate_`.
+ El parámetro `@certificate_name` solo puede incluir los siguientes caracteres: a-z, 0-9, @, \$1, \$1 y guion bajo (\$1).
+ La extensión del archivo para `@certificate_file_s3_arn` debe ser .cer (no se distingue entre mayúsculas y minúsculas).
+ La extensión del archivo para `@private_key_file_s3_arn` debe ser .pvk (no se distingue entre mayúsculas y minúsculas).
+ Los metadatos S3 del archivo de clave privada deben incluir la etiqueta `x-amz-meta-rds-tde-pwd`. Para obtener más información, consulte [Copia de seguridad y restauración de certificados TDE para bases de datos en las instalaciones](TDE.BackupRestoreOnPrem.md).
+ RDS para SQL Server no admite el uso de claves entre cuentas para TDE.

## Copia de seguridad de un certificado TDE
<a name="TDE.BackupRestoreRDS.Backup"></a>

Para hacer copias de seguridad de los certificados TDE, utilice el procedimiento almacenado `rds_backup_tde_certificate`. Tiene la siguiente sintaxis.

```
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];
```

Se requieren los siguientes parámetros:
+ `@certificate_name`: nombre del certificado TDE del que se hará una copia de seguridad.
+ `@certificate_file_s3_arn`: nombre de recurso de Amazon (ARN) de destino para el archivo de copia de seguridad de certificados en Amazon S3.
+ `@private_key_file_s3_arn`: ARN de S3 de destino del archivo de clave privada que protege el certificado TDE.
+ `@kms_password_key_arn`: ARN de la clave de KMS simétrica utilizada para cifrar la contraseña de clave privada.

El siguiente parámetro es opcional:
+ `@overwrite_s3_files`: indica si se deben sobrescribir los archivos de certificado y de clave privada existentes en S3:
  + `0`: no se sobrescriben los archivos existentes. Este valor es el valor predeterminado.

    Al establecer `@overwrite_s3_files` en 0, se devuelve un error si ya existe un archivo.
  + `1`: se sobrescribe un archivo existente que tenga el nombre especificado, aunque no sea un archivo de copia de seguridad.

**Example de copia de seguridad de un 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;
```

## Restauración de un certificado TDE
<a name="TDE.BackupRestoreRDS.Restore"></a>

Use el procedimiento almacenado `rds_restore_tde_certificate` para restaurar (importar) certificados TDE de usuario. Tiene la siguiente sintaxis.

```
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';
```

Se requieren los siguientes parámetros:
+ `@certificate_name`: nombre del certificado TDE que se va a restaurar. El nombre debe comenzar por el prefijo `UserTDECertificate_`.
+ `@certificate_file_s3_arn`: ARN de S3 del archivo de copia de seguridad que se usa para restaurar el certificado TDE.
+ `@private_key_file_s3_arn`: ARN de S3 del archivo de copia de seguridad de clave privada del certificado TDE que se va a restaurar.
+ `@kms_password_key_arn`: ARN de la clave de KMS simétrica utilizada para cifrar la contraseña de clave privada.

**Example de restauración de un 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';
```

## Visualización de certificados TDE
<a name="TDE.BackupRestoreRDS.Show"></a>

Use la función `rds_fn_list_user_tde_certificates` para ver los certificados TDE de usuario restaurados (importados). Tiene la siguiente sintaxis.

```
SELECT * FROM msdb.dbo.rds_fn_list_user_tde_certificates();
```

La salida se parece a la siguiente. Aquí no se muestran todas las columnas.


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

## Eliminación de certificados TDE restaurados
<a name="TDE.BackupRestoreRDS.Drop"></a>

Para eliminar los certificados TDE de usuario restaurados (importados) que no esté utilizando, utilice el procedimiento almacenado `rds_drop_tde_certificate`. Tiene la siguiente sintaxis.

```
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_certificate_name';
```

El siguiente parámetro es obligatorio:
+ `@certificate_name`: el nombre del certificado TDE que se va a eliminar.

Solo puede eliminar los certificados TDE restaurados (importados). No se pueden eliminar los certificados creados por RDS.

**Example de eliminación de un certificado TDE**  

```
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_myTDEcertificate';
```

# Copia de seguridad y restauración de certificados TDE para bases de datos en las instalaciones
<a name="TDE.BackupRestoreOnPrem"></a>

Puede realizar una copia de seguridad de los certificados TDE para las bases de datos en las instalaciones y, posteriormente, restaurarlos en RDS para SQL Server. También puede restaurar un certificado TDE de RDS para SQL Server en una instancia de base de datos en las instalaciones.

**nota**  
RDS para SQL Server no admite el uso de claves entre cuentas para TDE.

El siguiente procedimiento hace una copia de seguridad de un certificado TDE y una clave privada. La clave privada se cifra mediante una clave de datos generada a partir de su clave de KMS de cifrado simétrico.

**Para hacer una copia de seguridad de un certificado TDE en las instalaciones**

1. Genere la clave de datos mediante el comando [generate-data-key](https://docs.aws.amazon.com/cli/latest/reference/kms/generate-data-key.html) de AWS CLI.

   ```
   aws kms generate-data-key \
       --key-id my_KMS_key_ID \
       --key-spec AES_256
   ```

   La salida se parece a la siguiente.

   ```
   {
   "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"
   }
   ```

   La salida de texto sin formato se utiliza en el siguiente paso como contraseña de la clave privada.

1. Haga una copia de seguridad de su certificado TDE como se muestra en el siguiente ejemplo.

   ```
   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. Guarde el archivo de copia de seguridad de certificados en el bucket de certificados de Amazon S3.

1. Guarde el archivo de copia de seguridad de clave privada en su bucket de certificados de S3, con la siguiente etiqueta en los metadatos del archivo:
   + Clave: `x-amz-meta-rds-tde-pwd`
   + Valor: el valor de `CiphertextBlob` de la generación de la clave de datos, como en el siguiente ejemplo.

     ```
     AQIDAHimL2NEoAlOY6Bn7LJfnxi/OZe9kTQo/XQXduug1rmerwGiL7g5ux4av9GfZLxYTDATAAAAfjB8BgkqhkiG9w0B
     BwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMyCxLMi7GRZgKqD65AgEQgDtjvZLJo2cQ31Vetngzm2ybHDc3d2vI74SRUzZ
     2RezQy3sAS6ZHrCjfnfn0c65bFdhsXxjSMnudIY7AKw==
     ```

El siguiente procedimiento restaura un certificado TDE de RDS para SQL Server en una instancia de base de datos en las instalaciones. Copie y restaure el certificado TDE en su instancia de base de datos de destino mediante la copia de seguridad del certificado, el archivo de clave privada correspondiente y la clave de datos. El certificado restaurado está cifrado con la clave maestra de base de datos del nuevo servidor. 

**Para restaurar un certificado TDE**

1. Copie el archivo de copia de seguridad del certificado TDE y el archivo de clave privada de Amazon S3 en la instancia de destino. Para obtener más información sobre la copia de archivos desde Amazon S3, consulte [Transferencia de archivos entre RDS for SQL Server y Amazon S3](Appendix.SQLServer.Options.S3-integration.using.md).

1. Utilice la clave de KMS para descifrar el texto de cifrado de salida y recuperar el texto sin formato de la clave de datos. El texto de cifrado se encuentra en los metadatos de S3 del archivo de copia de seguridad de la clave privada.

   ```
   aws kms decrypt \
       --key-id my_KMS_key_ID \
       --ciphertext-blob fileb://exampleCiphertextFile | base64 -d \
       --output text \
       --query Plaintext
   ```

   La salida de texto sin formato se utiliza en el siguiente paso como contraseña de la clave privada.

1. Utilice el siguiente comando SQL para restaurar su 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 obtener más información sobre el descifrado de KMS, consulte [decrypt](https://docs.aws.amazon.com/cli/latest/reference/kms/decrypt.html) en la sección KMS de la *referencia de comandos de AWS CLI*.

Una vez restaurado el certificado TDE en la instancia de base de datos de destino, podrá restaurar las bases de datos cifradas con ese certificado.

**nota**  
Puede utilizar el mismo certificado TDE para cifrar varias bases de datos de SQL Server en la instancia de base de datos de origen. Para migrar varias bases de datos a una instancia de destino, copie el certificado TDE asociado a ellas en la instancia de destino solo una vez.

# Desactivación de TDE en RDS para SQL Server
<a name="TDE.Disabling"></a>

Para desactivar TDE en una instancia de base de datos de RDS para SQL Server, asegúrese primero de que no quedan objetos cifrados en la instancia de base de datos. Para ello, descifre los objetos o elimínelos. Si existe algún objeto cifrado en la instancia de base de datos, no podrá desactivar TDE para la instancia de base de datos. Si se restauró (importó) un certificado TDE de usuario para el cifrado, debe descartarse. Al usar la consola para eliminar la opción TDE de un grupo de opciones, la consola indica que se está procesando. Además, se creará un evento de error si el grupo de opciones se asocia a una instantánea de base de datos o una instancia de base de datos cifrada.

En el siguiente ejemplo se elimina el cifrado de TDE de una base de datos llamada `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
```

Cuando todos los objetos estén descifrados, tendrá a su disposición dos opciones:

1. Puede modificar la instancia de base de datos para asociarla a un grupo de opciones sin la opción TDE.

1. Puede quitar la opción TDE del grupo de opciones.

# SQL Server Audit
<a name="Appendix.SQLServer.Options.Audit"></a>

En Amazon RDS, puede auditar las bases de datos de Microsoft SQL Server mediante el mecanismo de auditoría de SQL Server integrado. Puede crear auditorías y especificaciones de auditoría del mismo modo que las crea para los servidores de base de datos locales. 

RDS carga los registros de auditoría completados en su bucket de S3 mediante el rol de IAM que proporciona. Si habilita la retención, RDS conservará sus registros de auditoría en su instancia de base de datos durante el periodo de tiempo configurado.

Para obtener más información, consulte la sección sobre [SQL Server Audit (motor de base de datos)](https://docs.microsoft.com/sql/relational-databases/security/auditing/sql-server-audit-database-engine) en la documentación de Microsoft SQL Server.

## Auditoría de SQL Server con flujos de actividad de bases de datos
<a name="Appendix.SQLServer.DAS.Audit"></a>

Puede utilizar los flujos de actividad de bases de datos para RDS para integrar los eventos de SQL Server Audit con las herramientas de supervisión de la actividad de las bases de datos de Imperva, McAfee e IBM. Para obtener más información acerca de cómo auditar con flujos de actividad de bases de datos para RDS SQL Server, consulte [Auditoría en Microsoft SQL Server](DBActivityStreams.md#DBActivityStreams.Overview.SQLServer-auditing) 

**Topics**
+ [Auditoría de SQL Server con flujos de actividad de bases de datos](#Appendix.SQLServer.DAS.Audit)
+ [Compatibilidad con SQL Server Audit](#Appendix.SQLServer.Options.Audit.Support)
+ [Incorporación de SQL Server Audit a las opciones de instancia de base de datos](Appendix.SQLServer.Options.Audit.Adding.md)
+ [Uso de SQL Server Audit](Appendix.SQLServer.Options.Audit.CreateAuditsAndSpecifications.md)
+ [Visualización de registros de auditoría](Appendix.SQLServer.Options.Audit.AuditRecords.md)
+ [Uso de SQL Server Audit con instancias Multi-AZ](#Appendix.SQLServer.Options.Audit.Multi-AZ)
+ [Configuración de un bucket de S3](Appendix.SQLServer.Options.Audit.S3bucket.md)
+ [Creación manual de un rol de IAM para SQL Server Audit](Appendix.SQLServer.Options.Audit.IAM.md)

## Compatibilidad con SQL Server Audit
<a name="Appendix.SQLServer.Options.Audit.Support"></a>

En Amazon RDS, a partir de SQL Server 2016, todas las ediciones de SQL Server admiten auditorías de nivel de servidor y la edición Enterprise también admite auditorías de nivel de base de datos. A partir de SQL Server 2016 (13.x) SP1, todas las ediciones admiten tanto auditorías de nivel de servidor como de nivel de base de datos. Para obtener más información, consulte [SQL Server Audit (motor de base de datos)](https://docs.microsoft.com/sql/relational-databases/security/auditing/sql-server-audit-database-engine) en la documentación de SQL Server.

RDS admite ajustar la siguiente configuración de opciones para SQL Server Audit. 


| Ajuste de la opción | Valores válidos | Descripción | 
| --- | --- | --- | 
| IAM\$1ROLE\$1ARN | Nombre de recurso de Amazon (ARN) válido en el formato arn:aws:iam::account-id:role/role-name. | ARN del rol de IAM que concede acceso al bucket de S3 donde desea almacenar sus registros de auditoría. Para obtener más información, consulte [Nombres de recurso de Amazon (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-iam) en la Referencia general de AWS. | 
| S3\$1BUCKET\$1ARN | ARN válido en el formato arn:aws:s3:::amzn-s3-demo-bucket o arn:aws:s3:::amzn-s3-demo-bucket/key-prefix | ARN para el bucket de S3 donde desea almacenar sus registros de auditoría. | 
| ENABLE\$1COMPRESSION | true o false | Controla la compresión de registros de auditoría. De forma predeterminada, la compresión está habilitada (establecida en true). | 
| RETENTION\$1TIME | 0 De a 840 | El tiempo de retención (en horas) durante el que se conservan los registros de auditoría de SQL Server en su instancia RDS. De forma predeterminada, la retención está deshabilitada. | 

# Incorporación de SQL Server Audit a las opciones de instancia de base de datos
<a name="Appendix.SQLServer.Options.Audit.Adding"></a>

Habilitar SQL Server Audit requiere dos pasos: habilitar la opción en la instancia de base de datos y habilitar la característica dentro de SQL Server. El proceso de incorporación de la opción SQL Server Audit a una instancia de base de datos es el siguiente: 

1. Cree un grupo de opciones nuevo o copie o modifique un grupo de opciones existente. 

1. Añada y configure todas las opciones necesarias.

1. Asocie el grupo de opciones a la instancia de base de datos.

Después de añadir la opción SQL Server Audit, no es necesario reiniciar la instancia de base de datos. En cuanto el grupo de opciones esté activo, podrá crear auditorías y almacenar registros de auditoría en su bucket de S3. 

**Para añadir y configurar SQL Server Audit en el grupo de opciones de una instancia de base de datos**

1. Elija una de las siguientes opciones:
   + Use un grupo de opciones existente.
   + Cree un grupo de opciones de base de datos personalizado y úselo. Para obtener más información, consulte [Creación de un grupo de opciones](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create). 

1. Agregue la opción **SQLSERVER\$1AUDIT** al grupo de opciones y establezca la configuración de opciones. Para obtener más información acerca de la adición de opciones, consulte [Agregar una opción a un grupo de opciones](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption). 
   + En **Rol de IAM**, si ya tiene un rol de IAM con las políticas necesarias, puede elegir ese rol. Para crear un nuevo rol de IAM, elija **Crear un nuevo rol**. Para obtener información acerca de las políticas necesarias, consulte [Creación manual de un rol de IAM para SQL Server Audit](Appendix.SQLServer.Options.Audit.IAM.md).
   + En la opción para **Select S3 destination (Seleccionar el destino de S3)**, si ya dispone de un bucket de S3 que desee usar, elíjalo. Para crear un bucket de S3, elija **Create a New S3 Bucket (Crear un nuevo bucket de S3)**. 
   + En **Enable Compression (Habilitar compresión)**, deje esta opción elegida para comprimir archivos de auditoría. La compresión está habilitada de forma predeterminada. Para deshabilitar la compresión, borre **Enable Compression (Habilitar compresión)**. 
   + En **Audit log retention (Retención de registros de auditoría)**, para conservar los registros de auditoría en la instancia de base de datos, elija esta opción. Especifique un tiempo de retención en horas. El tiempo de retención máximo son 35 días.

1. Aplique el grupo de opciones a una instancia de base de datos nueva o existente. Elija una de las siguientes opciones:
   + Si está creando una instancia de base de datos nueva, aplique el grupo de opciones al lanzar la instancia. 
   + En una instancia de base de datos existente, el grupo de opciones se aplica modificando la instancia y asociando el grupo de opciones nuevo. Para obtener más información, consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md). 

## Modificación de la opción SQL Server Audit
<a name="Appendix.SQLServer.Options.Audit.Modifying"></a>

Después de habilitar la opción SQL Server Audit, puede modificar la configuración. Para obtener más información acerca de cómo modificar la configuración de opciones, consulte [Modificación de una configuración de opciones](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption).

## Eliminación de SQL Server Audit de las opciones de instancia de base de datos
<a name="Appendix.SQLServer.Options.Audit.Removing"></a>

Puede desactivar la característica SQL Server Audit deshabilitando las auditorías y, a continuación, eliminando la opción. 

**Para eliminar auditorías**

1. Deshabilite toda la configuración de auditorías dentro de SQL Server. Para obtener información acerca de dónde se ejecutan las auditorías, consulte las vistas de catálogo de seguridad de SQL Server. Para obtener más información, consulte la sección sobre [Vistas de catálogo de seguridad](https://docs.microsoft.com/sql/relational-databases/system-catalog-views/security-catalog-views-transact-sql) en la documentación de Microsoft SQL Server. 

1. Elimine la opción SQL Server Audit de la instancia de base de datos. Elija una de las siguientes opciones: 
   + Elimine la opción SQL Server Audit del grupo de opciones que la instancia de base de datos usa. Este cambio afecta a todas las instancias de base de datos que utilizan el mismo grupo de opciones. Para obtener más información, consulte [Quitar una opción de un grupo de opciones](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption).
   + Modifique la instancia de base de datos y, a continuación, elija un grupo de opciones sin la opción SQL Server Audit. Este cambio solo afecta a la instancia de base de datos que modifique. Puede especificar el grupo de opciones predeterminado (vacío) u otro grupo de opciones personalizado. Para obtener más información, consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md).

1. Una vez que elimine la opción SQL Server Audit de la instancia de base de datos, no será necesario reiniciar la instancia. Elimine los archivos de auditoría innecesarios de su bucket de S3.

# Uso de SQL Server Audit
<a name="Appendix.SQLServer.Options.Audit.CreateAuditsAndSpecifications"></a>

Puede controlar auditorías de servidor y especificaciones de auditoría tanto de servidor como de base de datos del mismo modo que las controla para servidores de base de datos locales.

## Creación de auditorías
<a name="Appendix.SQLServer.Options.Audit.CreateAudits"></a>

Crea auditorías de servidor del mismo modo que las crea para los servidores de base de datos locales. Para obtener información acerca de cómo crear auditorías de servidor, consulte [CREATE SERVER AUDIT](https://docs.microsoft.com/sql/t-sql/statements/create-server-audit-transact-sql) en la documentación de Microsoft SQL Server.

Para evitar errores, cumpla las siguientes limitaciones:
+ No sobrepase el número máximo de auditorías de servidor admitidas por instancia de 50. 
+ Pida a SQL Server que escriba datos en un archivo binario.
+ No use `RDS_` como prefijo en el nombre de auditoría de servidor.
+ En `FILEPATH`, especifique `D:\rdsdbdata\SQLAudit`.
+ En `MAXSIZE`, especifique un tamaño entre 2 y 50 MB.
+ No configure `MAX_ROLLOVER_FILES` ni `MAX_FILES`.
+ No configure SQL Server para cerrar la instancia de base de datos si no escribe el registro de auditoría.

## Creación de especificaciones de auditoría
<a name="Appendix.SQLServer.Options.Audit.CreateSpecifications"></a>

Puede crear especificaciones de auditoría tanto de servidor como de base de datos del mismo modo que las crea para servidores de base de datos locales. Para obtener información acerca de cómo crear especificaciones de auditoría, consulte [CREATE SERVER AUDIT SPECIFICATION](https://docs.microsoft.com/sql/t-sql/statements/create-server-audit-specification-transact-sql) y [CREATE DATABASE AUDIT SPECIFICATION](https://docs.microsoft.com/sql/t-sql/statements/create-database-audit-specification-transact-sql) en la documentación de Microsoft SQL Server.

Para evitar errores, no use `RDS_` como prefijo en el nombre de la especificación de auditoría de base de datos o de servidor. 

# Visualización de registros de auditoría
<a name="Appendix.SQLServer.Options.Audit.AuditRecords"></a>

Sus registros de auditoría se almacenan en `D:\rdsdbdata\SQLAudit`.

Una vez que SQL Server termina de escribir en un archivo de registro de auditoría (cuando el archivo alcanza su límite de tamaño), Amazon RDS lo carga en su bucket de S3. Si se habilita la retención, Amazon RDS mueve el archivo a la carpeta de retención: `D:\rdsdbdata\SQLAudit\transmitted`. 

Para obtener información acerca de cómo configurar la retención, consulte [Incorporación de SQL Server Audit a las opciones de instancia de base de datos](Appendix.SQLServer.Options.Audit.Adding.md).

Los registros de auditoría se conservan en la instancia de base de datos hasta que se carga el archivo de registro de auditoría. Puede ver los registros de auditoría ejecutando el siguiente comando.

```
SELECT   * 
	FROM     msdb.dbo.rds_fn_get_audit_file
	             ('D:\rdsdbdata\SQLAudit\*.sqlaudit'
	             , default
	             , default )
```

Puede usar el mismo comando para ver los registros de auditoría en su carpeta de retención cambiando el filtro a `D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit`.

```
SELECT   * 
	FROM     msdb.dbo.rds_fn_get_audit_file
	             ('D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit'
	             , default
	             , default )
```

## Uso de SQL Server Audit con instancias Multi-AZ
<a name="Appendix.SQLServer.Options.Audit.Multi-AZ"></a>

En el caso de las instancias Multi-AZ, el proceso de envío de archivos de registro de auditoría a Amazon S3 es similar al de las instancias Single-AZ. No obstante, hay algunas diferencias importantes: 
+ Los objetos de especificación de auditoría de base de datos se replican en todos los nodos.
+ Las auditorías de servidor y las especificaciones de auditoría de servidor no se replican en nodos secundarios. En su lugar, debe crearlas o modificarlas manualmente.

Para capturar auditorías de servidor o una especificación de auditoría de servidor desde ambos nodos:

1. Cree una auditoría de servidor o una especificación de auditoría de servidor en el nodo principal.

1. Realice una conmutación por error al nodo secundario y cree una auditoría de servidor o una especificación de auditoría de servidor con los mismos nombre y GUID en el nodo secundario. Use el parámetro `AUDIT_GUID` para especificar el GUID.

# Configuración de un bucket de S3
<a name="Appendix.SQLServer.Options.Audit.S3bucket"></a>

Los archivos de registro de auditoría se cargan automáticamente desde la instancia de base de datos en su bucket de S3. Se aplican las siguientes restricciones al bucket de S3 que usa como destino para los archivos de auditoría: 
+ Debe estar en la misma región de AWS y cuenta de AWS que la instancia de base de datos.
+ No debe estar abierto al público.
+ El propietario del bucket también debe ser el propietario del rol de IAM.
+ Su rol de IAM debe tener permisos para la clave KMS administrada por el cliente asociada al cifrado del servidor del bucket de S3.

La clave de destino que se usa para almacenar los datos sigue este esquema de nomenclatura: `amzn-s3-demo-bucket/key-prefix/instance-name/audit-name/node_file-name.ext` 

**nota**  
Establece los valores del nombre del bucket y del prefijo de clave con la configuración de opciones `S3_BUCKET_ARN`.

El esquema se compone de los siguientes elementos:
+ ***amzn-s3-demo-bucket***: el nombre del bucket de S3.
+ **`key-prefix`** – prefijo de clave personalizado que desea usar para los registros de auditoría.
+ **`instance-name`** – nombre de su instancia Amazon RDS.
+ **`audit-name`** – nombre de la auditoría.
+ **`node`**: identificador del nodo que es el origen de los registros de auditoría (`node1` o `node2`). Hay un nodo para una instancia Single-AZ y dos nodos de replicación para una instancia Multi-AZ. Estos no son nodos principales ni secundarios, ya que los roles de principal y secundario cambian con el tiempo. En su lugar, el identificador de nodo es una simple etiqueta. 
  + **`node1`** – primer nodo de replicación (Single-AZ tiene solo un nodo).
  + **`node2`** – segundo nodo de replicación (Multi-AZ tiene dos nodos).
+ **`file-name`** – nombre del archivo de destino. El nombre del archivo se toma tal y como es de SQL Server.
+ **`ext`**: extensión del archivo (`zip` o `sqlaudit`):
  + **`zip`** – si la compresión está habilitada (valor predeterminado).
  + **`sqlaudit`** – si la compresión está deshabilitada.

# Creación manual de un rol de IAM para SQL Server Audit
<a name="Appendix.SQLServer.Options.Audit.IAM"></a>

Normalmente, al crear una nueva opción, la Consola de administración de AWS crea el rol de IAM y la política de confianza de IAM en su nombre. No obstante, puede crear manualmente un nuevo rol de IAM para usarlo con instancias de SQL Server Audit de modo que pueda personalizarlo con los requisitos adicionales que pueda tener. Para ello, debe crear un rol de IAM y delegar permisos de modo que el servicio Amazon RDS pueda usar su bucket de Amazon S3. Cuando cree este rol de IAM, debe asociar políticas de confianza y de permisos. La política de confianza permite a Amazon RDS asumir este rol. La política de permisos define las acciones que puede realizar este rol. Para obtener más información, consulte [Creación de un rol para delegar permisos a un servicio de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) en la *Guía del usuario de AWS Identity and Access Management*. 

Puede usar los ejemplos de esta sección para crear las relaciones de confianza y las políticas de permisos que necesite.

El siguiente ejemplo muestra una relación de confianza para SQL Server Audit. Usa el *principal de servicio* `rds.amazonaws.com` para permitir que RDS escriba en el bucket de S3 Un *principal de servicio* es un identificador que se utiliza para conceder permisos a un servicio. Cada vez que conceda acceso a `rds.amazonaws.com` de esta forma, permitirá a RDS realizar una acción en su nombre. Para obtener más información acerca de las entidades principales de servicio, consulte la sección sobre [elementos de las políticas de JSON de:AWS entidad principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html).

**Example relación de confianza para SQL Server Audit**    
****  

```
{
	    "Version":"2012-10-17",		 	 	 
	    "Statement": [
	        {
	            "Effect": "Allow",
	            "Principal": {
	                "Service": "rds.amazonaws.com"
	            },
	            "Action": "sts:AssumeRole"
	        }
	    ]
	}
```

Se recomienda usar las claves de contexto de condición 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) y [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) en las relaciones de confianza basadas en recursos para limitar los permisos del servicio a un recurso específico. Esta es la forma más eficaz de protegerse contra el [problema del suplente confuso](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html).

Puede utilizar claves de contexto de condición globales y hacer que el valor de `aws:SourceArn` contenga el ID de cuenta. En estos casos, el valor de `aws:SourceAccount` y la cuenta del valor de `aws:SourceArn` deben utilizar el mismo ID de cuenta cuando se utilizan en la misma instrucción.
+ Use `aws:SourceArn` si quiere acceso entre servicios para un único recurso.
+ Use `aws:SourceAccount` si quiere permitir que cualquier recurso de esa cuenta se asocie al uso entre servicios.

En la relación de confianza, asegúrese de usar la clave de contexto de la condición global `aws:SourceArn` con el nombre de recurso de Amazon (ARN) completo de los recursos que acceden al rol. En el caso de SQL Server Audit, asegúrese de incluir tanto el grupo de opciones de base de datos y las instancias de base de datos, como se muestra en el siguiente ejemplo.

**Example relación de confianza con clave de contexto de condición 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"
                    ]
                }
            }
        }
    ]
}
```

En el siguiente ejemplo de política de permisos para SQL Server Audit, especificamos un ARN para el bucket de Simple Storage Service (Amazon S3). Puede usar ARN para identificar una cuenta, un usuario o un rol específicos a los que desea conceder acceso. Para obtener más información acerca de cómo usar los ARN, consulte [Nombres de recurso de Amazon (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).

**Example política de permisos 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**  
La `s3:ListAllMyBuckets` acción es necesaria para verificar que la misma AWS cuenta posee tanto el bucket S3 como la instancia de base de datos de SQL Server. La acción enumera los nombres de los buckets de la cuenta.  
Los espacios de nombres del bucket de S3 son globales. Si elimina accidentalmente el bucket, otro usuario puede crear un bucket con el mismo nombre en una cuenta distinta. A continuación, los datos de auditoría de SQL Server se escriben en el nuevo bucket.

# Compatibilidad con SQL Server Analysis Services en Amazon RDS for SQL Server
<a name="Appendix.SQLServer.Options.SSAS"></a>

Microsoft SQL Server Analysis Services (SSAS) forma parte del conjunto Microsoft Business Intelligence (MSBI). SSAS es una herramienta de procesamiento analítico en línea (OLAP) y minería de datos instalada en SQL Server. Utilice SSAS para analizar datos como ayuda para tomar decisiones empresariales. SSAS es diferente de la base de datos relacional de SQL Server porque SSAS está optimizado para consultas y cálculos comunes en un entorno de inteligencia empresarial.

 Puede habilitar SSAS para instancias de base de datos existentes o nuevas. Está instalado en la misma instancia de base de datos que su motor de base de datos. Para obtener más información sobre SSAS, consulte la [documentación de Microsoft Analysis Services](https://docs.microsoft.com/en-us/analysis-services).

Amazon RDS admite SSAS para las ediciones Standard y Enterprise de SQL Server en las siguientes versiones:
+ Modo tabular:
  + SQL Server 2019, versión 15.00.4043.16.v1 y posteriores
  + SQL Server 2017, versión 14.00.3223.3.v1 y posteriores
  + SQL Server 2016, versión 13.00.5426.0.v1 y posteriores
+ Modo multidimensional:
  + SQL Server 2019, versión 15.00.4153.1.v1 y posteriores
  + SQL Server 2017, versión 14.00.3381.3.v1 y posteriores
  + SQL Server 2016, versión 13.00.5882.1.v1 y posteriores

**Contents**
+ [Limitaciones](#SSAS.Limitations)
+ [Activación de SSAS](SSAS.Enabling.md)
  + [Crear un grupo de opciones para SSAS](SSAS.Enabling.md#SSAS.OptionGroup)
  + [Agregar la opción de SSAS al grupo de opciones](SSAS.Enabling.md#SSAS.Add)
  + [Asociación del grupo de opciones a su instancia de base de datos](SSAS.Enabling.md#SSAS.Apply)
  + [Permitir el acceso de entrada a su grupo de seguridad de VPC](SSAS.Enabling.md#SSAS.InboundRule)
  + [Habilitación de la integración de Simple Storage Service (Amazon S3)](SSAS.Enabling.md#SSAS.EnableS3)
+ [Implementación de proyectos SSAS en Amazon RDS](SSAS.Deploy.md)
+ [Monitoreo del estado de una tarea de implementación](SSAS.Monitor.md)
+ [Uso de SSAS en Amazon RDS](SSAS.Use.md)
  + [Configuración de un usuario autenticado por Windows para SSAS](SSAS.Use.md#SSAS.Use.Auth)
  + [Agregar un usuario de dominio como administrador de bases de datos](SSAS.Use.md#SSAS.Admin)
  + [Creación de un proxy de SSAS](SSAS.Use.md#SSAS.Use.Proxy)
  + [Programación del procesamiento de bases de datos SSAS mediante SQL Server Agent](SSAS.Use.md#SSAS.Use.Schedule)
  + [Revocación de acceso de SSAS desde el proxy](SSAS.Use.md#SSAS.Use.Revoke)
+ [Copia de seguridad de una base de datos SSAS](SSAS.Backup.md)
+ [Restauración de una base de datos SSAS](SSAS.Restore.md)
  + [Restauración de una instancia de base de datos a un momento especificado](SSAS.Restore.md#SSAS.PITR)
+ [Cambiar el modo de SSAS](SSAS.ChangeMode.md)
+ [Desactivación de SSAS](SSAS.Disable.md)
+ [Solución de problemas de SSAS](SSAS.Trouble.md)

## Limitaciones
<a name="SSAS.Limitations"></a>

Las siguientes limitaciones se aplican al uso de SSAS en RDS for SQL Server:
+ RDS for SQL Server admite la ejecución de SSAS en modo tabular o multidimensional. Para obtener más información, consulte [Comparación de soluciones tabulares y multidimensionales](https://docs.microsoft.com/en-us/analysis-services/comparing-tabular-and-multidimensional-solutions-ssas) en la documentación de Microsoft.
+ Solo puede utilizar un modo de SSAS a la vez. Antes de cambiar de modo, asegúrese de eliminar todas las bases de datos SSAS.

  Para obtener más información, consulte [Cambiar el modo de SSAS](SSAS.ChangeMode.md).
+ No se da soporte a las instancias Multi-AZ.
+ Las instancias deben utilizar Active Directory autoadministrado o AWS Directory Service for Microsoft Active Directory para la autenticación SSAS. Para obtener más información, consulte [Uso de Active Directory con RDS para SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).
+ Los usuarios no tienen acceso de administrador del servidor SSAS, pero se les puede conceder acceso de administrador en el nivel de base de datos.
+ El único puerto con soporte para obtener acceso a SSAS es 2383.
+ No se pueden implementar proyectos directamente. Para implementarlos, proporcionamos un procedimiento almacenado de RDS. Para obtener más información, consulte [Implementación de proyectos SSAS en Amazon RDS](SSAS.Deploy.md).
+ No se da soporte a los procesamientos durante la implementación.
+ No se da soporte al uso de archivos .xmla para la implementación.
+ Los archivos de entrada del proyecto SSAS y los archivos de salida de copia de seguridad de la base de datos solo pueden estar en la carpeta `D:\S3` de la instancia de base de datos.

# Activación de SSAS
<a name="SSAS.Enabling"></a>

Utilice el siguiente proceso para activar SSAS para su instancia de base de datos:

1. Cree un nuevo grupo de opciones o elija un grupo de opciones ya existente.

1. Añada la opción `SSAS` al grupo de opciones.

1. Asocie el grupo de opciones a la instancia de base de datos.

1. Permitir el acceso entrante al grupo de seguridad de la nube virtual privada (VPC) para el puerto de escucha de SSAS.

1. Activar la integración de Simple Storage Service (Amazon S3).

## Crear un grupo de opciones para SSAS
<a name="SSAS.OptionGroup"></a>

Utilice la Consola de administración de AWS o la AWS CLI para crear un grupo de opciones que corresponda al motor de SQL Server y la versión de la instancia de base de datos que planee utilizar.

**nota**  
También puede utilizar un grupo de opciones ya existente si es para el motor y la versión correctos de SQL Server.

### Consola
<a name="SSAS.OptionGroup.Console"></a>

El siguiente procedimiento de consola crea un grupo de opciones para SQL Server Standard Edition 2017.

**Para crear el grupo de opciones**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija **Create group**.

1. En el panel **Create option group (Crear grupo de opciones)**, haga lo siguiente:

   1. En **Nombre**, escriba un nombre para el grupo de opciones que sea exclusivo dentro de su cuenta de AWS, como **ssas-se-2017**. El nombre solo puede contener letras, dígitos y guiones.

   1. En **Descripción**, escriba una breve descripción del grupo de opciones, como **SSAS option group for SQL Server SE 2017**. La descripción se utiliza para fines de visualización.

   1. Para **Engine (Motor)**, elija **sqlserver-se**.

   1. En **Major engine version (Versión principal dle motor)**, elija **14.00**.

1. Elija **Create** (Crear).

### CLI
<a name="SSAS.OptionGroup.CLI"></a>

En el siguiente ejemplo de CLI se crea un grupo de opciones para SQL Server Standard Edition 2017.

**Para crear el grupo de opciones**
+ Utilice uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o: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"
  ```

  En: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"
  ```

## Agregar la opción de SSAS al grupo de opciones
<a name="SSAS.Add"></a>

A continuación, utilice la Consola de administración de AWS o la AWS CLI para agregar la opción `SSAS` al grupo de opciones.

### Consola
<a name="SSAS.Add.Console"></a>

**Para agregar la opción de SSAS**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija el grupo de opciones que acaba de crear.

1. Seleccione **Add option (Añadir opción)**.

1. En **Option details** (Detalles de la opción), elija **SSAS** para **Option name** (Nombre de la opción).

1. En **Option settings** (Configuración de opciones), haga lo siguiente:

   1. Para **Max memory** (Memoria máxima), ingrese un valor en el rango 10-80.

      En **Max memory** (Memoria máxima) se especifica el umbral superior por encima del cual SSAS comienza a liberar memoria con mayor rapidez para dejar espacio a las solicitudes que se están ejecutando, así como a las nuevas solicitudes de alta prioridad. El número es un porcentaje de la memoria total de la instancia de base de datos. Se permiten los valores entre 10 y 80, y el valor predeterminado es 45.

   1. Para **Mode** (Modo), elija el modo de servidor SSAS, **Tabular** o **Multidimensional**.

      Si no ve la opción **Mode** (Modo), significa que el modo Multidimensional no es compatible con su región de AWS. Para obtener más información, consulte [Limitaciones](Appendix.SQLServer.Options.SSAS.md#SSAS.Limitations).

      **Tabular** es el modo predeterminado.

   1. En **Security groups** (Grupos de seguridad), elija el grupo de seguridad de VPC que desea asociar a la opción.
**nota**  
El puerto para obtener acceso a SSAS, 2383, se rellena previamente.

1. En **Scheduling** (Programación), elija si desea agregar la opción inmediatamente o en el siguiente período de mantenimiento.

1. Elija **Add option** (Agregar opción).

### CLI
<a name="SSAS.Add.CLI"></a>

**Para agregar la opción de SSAS**

1. Cree un archivo JSON, por ejemplo `ssas-option.json`, con los siguientes parámetros:
   + `OptionGroupName`: el nombre del grupo de opciones que ha creado o elegido anteriormente (`ssas-se-2017` en el ejemplo siguiente).
   + `Port`: el puerto que se utiliza para obtener acceso a SSAS. Solo se da soporte al puerto 2383.
   + `VpcSecurityGroupMemberships`: membresías para los grupos de seguridad de la VPC para la instancia de base de datos RDS.
   + `MAX_MEMORY`: el umbral superior por encima del cual SSAS debería comenzar a liberar más memoria para dejar espacio a las solicitudes que se estén ejecutando y para nuevas solicitudes de alta prioridad. El número es un porcentaje de la memoria total de la instancia de base de datos. Se permiten los valores entre 10 y 80, y el valor predeterminado es 45.
   + `MODE`: el modo de servidor de SSAS, ya sea `Tabular` o `Multidimensional`. `Tabular` es el predeterminado.

     Si recibe un error que indica que la configuración de la opción `MODE` no es válida, significa que el modo multidimensional no es compatible con su región AWS. Para obtener más información, consulte [Limitaciones](Appendix.SQLServer.Options.SSAS.md#SSAS.Limitations).

   El siguiente es un ejemplo de un archivo JSON con la configuración de las opciones de 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. Agregue la opción `SSAS` al grupo de opciones.  
**Example**  

   Para Linux, macOS o:Unix

   ```
   aws rds add-option-to-option-group \
       --cli-input-json file://ssas-option.json \
       --apply-immediately
   ```

   En:Windows

   ```
   aws rds add-option-to-option-group ^
       --cli-input-json file://ssas-option.json ^
       --apply-immediately
   ```

## Asociación del grupo de opciones a su instancia de base de datos
<a name="SSAS.Apply"></a>

Puede utilizar la consola o la CLI para asociar el grupo de opciones con la instancia de base de datos.

### Consola
<a name="SSAS.Apply.Console"></a>

Asocie su grupo de opciones a una instancia de base de datos nueva o ya existente:
+ Si se trata de una instancia de base de datos nueva, asocie el grupo de opciones a la instancia de base de datos al iniciar la instancia. Para obtener más información, consulte [Creación de una instancia de base de datos de Amazon RDS](USER_CreateDBInstance.md).
+ Si se trata de una instancia de base de datos ya existente, modifique la instancia y asóciele el nuevo grupo de opciones. Para obtener más información, consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md).
**nota**  
Si usa una instancia que ya existe, esta debe tener ya asociados un dominio de Active Directory y un rol de AWS Identity and Access Management (IAM). Si crea una instancia nueva, especifique un rol de IAM y un dominio de Active Directory ya existentes. Para obtener más información, consulte [Uso de Active Directory con RDS para SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).

### CLI
<a name="SSAS.Apply.CLI"></a>

Puede asociar su grupo de opciones a una instancia de base de datos nueva o ya existente.

**nota**  
Si usa una instancia que ya existe, esta debe tener ya asociados un dominio de Active Directory y un rol de IAM. Si crea una instancia nueva, especifique un rol de IAM y un dominio de Active Directory ya existentes. Para obtener más información, consulte [Uso de Active Directory con RDS para SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).

**Para crear una instancia de base de datos que utilice el grupo de opciones**
+ Especifique el mismo tipo de motor de base de datos y la misma versión principal que ha utilizado al crear el grupo de opciones.  
**Example**  

  Para Linux, macOS o: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
  ```

  En: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
  ```

**Para modificar una instancia de base de datos para asociar el grupo de opciones**
+ Utilice uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o:Unix

  ```
  aws rds modify-db-instance \
      --db-instance-identifier myssasinstance \
      --option-group-name ssas-se-2017 \
      --apply-immediately
  ```

  En:Windows

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier myssasinstance ^
      --option-group-name ssas-se-2017 ^
      --apply-immediately
  ```

## Permitir el acceso de entrada a su grupo de seguridad de VPC
<a name="SSAS.InboundRule"></a>

Cree una regla de entrada para el puerto del agente de escucha de SSAS especificado en el grupo de seguridad de VPC asociado a su instancia de base de datos. Para obtener más información acerca de la configuración de grupos de seguridad, consulte [Proporcionar acceso a la instancia de base de datos en la VPC mediante la creación de un grupo de seguridad](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup).

## Habilitación de la integración de Simple Storage Service (Amazon S3)
<a name="SSAS.EnableS3"></a>

Para descargar los archivos de configuración del modelo en su host para su implementación, utilice la integración de Simple Storage Service (Amazon S3). Para obtener más información, consulte [Integración de una instancia de base de datos de Amazon RDS for SQL Server con Amazon S3](User.SQLServer.Options.S3-integration.md). 

# Implementación de proyectos SSAS en Amazon RDS
<a name="SSAS.Deploy"></a>

En RDS, no puede implementar directamente proyectos SSAS mediante SQL Server Management Studio (SSMS). Para implementar proyectos, utilice un procedimiento almacenado de RDS.

**nota**  
No se da soporte al uso de archivos .xmla para la implementación.

Antes de implementar proyectos, asegúrese de lo siguiente:
+ La integración de Simple Storage Service (Amazon S3) está activada. Para obtener más información, consulte [Integración de una instancia de base de datos de Amazon RDS for SQL Server con Amazon S3](User.SQLServer.Options.S3-integration.md).
+ El valor de configuración de `Processing Option` tiene que estar establecido en `Do Not Process`. Esta configuración significa que no se ejecutará ningún procesamiento después de la implementación.
+ Tiene los archivos `myssasproject.asdatabase` y `myssasproject.deploymentoptions`. Se generan automáticamente cuando se crea el proyecto SSAS.

**Para implementar un proyecto SSAS en RDS**

1. Descargue el archivo `.asdatabase` (modelo SSAS) desde su bucket S3 a su instancia de base de datos, tal y como se muestra en el siguiente ejemplo. Para obtener más información sobre los parámetros de descarga, consulte [Descarga de archivos desde un bucket de Amazon S3 a una instancia de base de datos de 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. Descargue el archivo `.deploymentoptions` desde su bucket S3 hasta la instancia de base de datos.

   ```
   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. Implemente el proyecto.

   ```
   exec msdb.dbo.rds_msbi_task
   @task_type='SSAS_DEPLOY_PROJECT',
   @file_path='D:\S3\myssasproject.asdatabase';
   ```

# Monitoreo del estado de una tarea de implementación
<a name="SSAS.Monitor"></a>

Para realizar un seguimiento del estado de la tarea de implementación (o descarga), llame a la función `rds_fn_task_status`. Tiene dos parámetros. El primer parámetro tiene que ser siempre `NULL` porque no se aplica a SSAS. El segundo parámetro acepta un ID de tarea. 

Para obtener una lista de todas las tareas, establezca el primer parámetro en `NULL` y el segundo en `0`, como se muestra en el siguiente ejemplo.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,0);
```

Para obtener una tarea específica, establezca el primer parámetro en `NULL` y el segundo en el ID de la tarea, como se muestra en el siguiente ejemplo.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,42);
```

La función `rds_fn_task_status` devuelve la siguiente información.


| Parámetro de salida | Descripción | 
| --- | --- | 
| `task_id` | El ID de la tarea. | 
| `task_type` | Para SSAS, las tareas pueden tener los siguientes tipos de tareas: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/SSAS.Monitor.html)  | 
| `database_name` | No aplicable a tareas de SSAS. | 
| `% complete` | El porcentaje de progreso de la tarea. | 
| `duration (mins)` | El tiempo empleado en la tarea, en minutos. | 
| `lifecycle` |  El estado de la tarea. Los posibles estados son los siguientes: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/SSAS.Monitor.html)  | 
| `task_info` | Información adicional acerca de la tarea. Si se produce un error durante el procesamiento, esta columna contiene información acerca del error. Para obtener más información, consulte [Solución de problemas de SSAS](SSAS.Trouble.md). | 
| `last_updated` | La fecha y hora en que se actualizó por última vez el estado de la tarea. | 
| `created_at` | La fecha y hora en que se creó la tarea. | 
| `S3_object_arn` |  No aplicable a tareas de SSAS.  | 
| `overwrite_S3_backup_file` | No aplicable a tareas de SSAS. | 
| `KMS_master_key_arn` |  No aplicable a tareas de SSAS.  | 
| `filepath` |  No aplicable a tareas de SSAS.  | 
| `overwrite_file` |  No aplicable a tareas de SSAS.  | 
| `task_metadata` | Metadatos asociados a la tarea de SSAS. | 

# Uso de SSAS en Amazon RDS
<a name="SSAS.Use"></a>

Después de implementar el proyecto SSAS, puede procesar directamente la base de datos OLAP en SSMS.

**Para utilizar SSAS en RDS**

1. En SSMS, conéctese a SSAS mediante el nombre de usuario y la contraseña del dominio de Active Directory.

1. Expanda **Databases (Bases de datos)**. Aparece la base de datos SSAS recién implementada.

1. Localice la cadena de conexión y actualice el nombre de usuario y la contraseña para dar acceso a la base de datos SQL de origen. Esta operación es necesaria para procesar los objetos de SSAS.

   1. Para el modo tabular, haga lo siguiente:

      1. Despliegue la pestaña **Connections** (Conexiones).

      1. Abra el menú contextual (con el botón derecho del ratón) del objeto de conexión y elija **Properties** (Propiedades).

      1. Actualice el nombre de usuario y la contraseña en la cadena de conexión.

   1. Para el modo multidimensional, haga lo siguiente:

      1. Despliegue la pestaña **Data Sources** (Orígenes de datos).

      1. Abra el menú contextual (con el botón derecho del ratón) del objeto origen de datos y, a continuación, elija **Properties** (Propiedades).

      1. Actualice el nombre de usuario y la contraseña en la cadena de conexión.

1. Abra el menú contextual (haga clic con el botón derecho) de la base de datos SSAS que ha creado y elija **Process Database** (Procesar base de datos).

   Según el tamaño de los datos de entrada, la operación de procesamiento puede tardar varios minutos en completarse.

**Topics**
+ [Configuración de un usuario autenticado por Windows para SSAS](#SSAS.Use.Auth)
+ [Agregar un usuario de dominio como administrador de bases de datos](#SSAS.Admin)
+ [Creación de un proxy de SSAS](#SSAS.Use.Proxy)
+ [Programación del procesamiento de bases de datos SSAS mediante SQL Server Agent](#SSAS.Use.Schedule)
+ [Revocación de acceso de SSAS desde el proxy](#SSAS.Use.Revoke)

## Configuración de un usuario autenticado por Windows para SSAS
<a name="SSAS.Use.Auth"></a>

El usuario administrador principal (a veces llamado usuario maestro) puede utilizar el siguiente ejemplo de código para configurar un inicio de sesión autenticado por Windows y conceder los permisos de procedimiento necesarios. Al hacer esto se conceden permisos al usuario de dominio para ejecutar tareas de cliente de SSAS, utilizar procedimientos de transferencia de archivos S3, crear credenciales y trabajar con el proxy de SQL Server Agent. Para obtener más información, consulte [Credenciales (Motor de base de datos)](https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/credentials-database-engine?view=sql-server-ver15) y [Crear un proxy de SQL Server Agent](https://docs.microsoft.com/en-us/sql/ssms/agent/create-a-sql-server-agent-proxy?view=sql-server-ver15) en la documentación de Microsoft.

Puede conceder algunos o todos los permisos siguientes, según sea necesario, a los usuarios autenticados de 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
```

## Agregar un usuario de dominio como administrador de bases de datos
<a name="SSAS.Admin"></a>

Puede agregar un usuario de dominio como administrador de base de datos SSAS de las siguientes maneras:
+ Un administrador de base de datos puede usar SSMS para crear un rol con privilegios de `admin` y, a continuación, agregar usuarios a dicho rol.
+ Puede utilizar el siguiente procedimiento almacenado.

  ```
  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';
  ```

  Se requieren los siguientes parámetros:
  + `@task_type` – el tipo de la tarea MSBI; en este caso `SSAS_ADD_DB_ADMIN_MEMBER`.
  + `@database_name`: el nombre de la base de datos SSAS a la que concede privilegios de administrador.
  + `@ssas_role_name`: el nombre del rol de administrador de base de datos SSAS. Si el rol no existe, se crea.
  + `@ssas_role_member`: el usuario de la base de datos SSAS que va a agregar al rol de administrador.

## Creación de un proxy de SSAS
<a name="SSAS.Use.Proxy"></a>

Para poder programar el procesamiento de la base de datos de SSAS mediante SQL Server Agent, cree una credencial de SSAS y un proxy de SSAS. Ejecute estos procedimientos como usuario autenticado por Windows.

**Para crear la credencial de SSAS**
+ Cree la credencial para el proxy. Para ello, puede utilizar SSMS o la siguiente instrucción SQL.

  ```
  USE [master]
  GO
  CREATE CREDENTIAL [SSAS_Credential] WITH IDENTITY = N'mydomain\user_name', SECRET = N'mysecret'
  GO
  ```
**nota**  
`IDENTITY` debe ser un inicio de sesión autenticado por dominio. Reemplace `mysecret` por la contraseña para el inicio de sesión autenticado por el dominio.

**Para crear el proxy de SSAS**

1. Utilice la siguiente instrucción SQL para crear el proxy.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_add_proxy @proxy_name=N'SSAS_Proxy',@credential_name=N'SSAS_Credential',@description=N''
   GO
   ```

1. Utilice la siguiente instrucción SQL para conceder acceso al proxy a otros usuarios.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name=N'SSAS_Proxy',@login_name=N'mydomain\user_name'
   GO
   ```

1. Utilice la siguiente instrucción SQL para conceder acceso al subsistema de SSAS al proxy.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='GRANT_SUBSYSTEM_ACCESS',@proxy_name='SSAS_Proxy',@proxy_subsystem='SSAS'
   GO
   ```

**Para consultar el proxy y las concesiones en el proxy**

1. Utilice la siguiente instrucción SQL para consultar los beneficiarios del proxy.

   ```
   USE [msdb]
   GO
   EXEC sp_help_proxy
   GO
   ```

1. Utilice la siguiente instrucción SQL para consultar las concesiones del subsistema.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_enum_proxy_for_subsystem
   GO
   ```

## Programación del procesamiento de bases de datos SSAS mediante SQL Server Agent
<a name="SSAS.Use.Schedule"></a>

Después de crear la credencial y el proxy y conceder acceso a SSAS al proxy, puede crear un trabajo de SQL Server Agent para programar el procesamiento de la base de datos de SSAS.

**Para programar el procesamiento de base de datos de SSAS**
+ Use SSMS o T-SQL para crear el trabajo de SQL Server Agent. En el siguiente ejemplo se utiliza T-SQL. Además, puede configurar la programación de trabajo a través de SSMS o T-SQL.
  + El parámetro `@command` indica el comando XML for Analysis (XMLA) que debe ejecutar el trabajo de SQL Server Agent Este ejemplo configura el procesamiento de la base de datos multidimensional de SSAS.
  + El parámetro `@server` indica el nombre del servidor SSAS de destino del trabajo de SQL Server Agent.

    Para llamar al servicio de SSAS dentro de la misma instancia de base de datos RDS donde reside el trabajo de SQL Server Agent, utilice `localhost:2383`.

    Para llamar al servicio de SSAS desde fuera de la instancia de base de datos RDS, utilice el punto de conexión RDS. También puede utilizar el punto de conexión de Kerberos Active Directory (AD) (`your-DB-instance-name.your-AD-domain-name`) si las instancias de la base de datos RDS están unidas por el mismo dominio. En el caso de las instancias de base de datos externas, asegúrese de configurar correctamente el grupo de seguridad de la VPC asociado a la instancia de base de datos RDS para obtener una conexión segura.

  Puede editar aún más la consulta para admitir varias operaciones XMLA. Realice las ediciones modificando directamente la consulta T-SQL o mediante la UI de SSMS tras la creación del trabajo de 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
  ```

## Revocación de acceso de SSAS desde el proxy
<a name="SSAS.Use.Revoke"></a>

Puede revocar el acceso al subsistema de SSAS y eliminar el proxy de SSAS mediante los siguientes procedimientos almacenados.

**Para revocar el acceso y eliminar el proxy**

1. Revoque el acceso al subsistema.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='REVOKE_SUBSYSTEM_ACCESS',@proxy_name='SSAS_Proxy',@proxy_subsystem='SSAS'
   GO
   ```

1. Revoque las concesiones en el proxy.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_revoke_login_from_proxy @proxy_name=N'SSAS_Proxy',@name=N'mydomain\user_name'
   GO
   ```

1. Elimine el proxy.

   ```
   USE [msdb]
   GO
   EXEC dbo.sp_delete_proxy @proxy_name = N'SSAS_Proxy'
   GO
   ```

# Copia de seguridad de una base de datos SSAS
<a name="SSAS.Backup"></a>

Puede crear archivos de copia de seguridad de base de datos SSAS solo en la carpeta `D:\S3` de la instancia de base de datos. Para mover los archivos de copia de seguridad al bucket de S3, utilice Amazon S3.

Puede realizar una copia de seguridad de una base de datos SSAS de la siguiente manera:
+ Un usuario de dominio con el rol `admin` de una base de datos determinada puede utilizar SSMS para realizar una copia de seguridad de la base de datos en la carpeta `D:\S3`.

  Para obtener más información, consulte [Agregar un usuario de dominio como administrador de bases de datos](SSAS.Use.md#SSAS.Admin).
+ Puede utilizar el siguiente procedimiento almacenado. Este procedimiento almacenado no admite la codificación.

  ```
  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];
  ```

  Se requieren los siguientes parámetros:
  + `@task_type` – el tipo de la tarea MSBI; en este caso `SSAS_BACKUP_DB`.
  + `@database_name`: el nombre de la base de datos SSAS cuya copia de seguridad está realizando.
  + `@file_path`: la ruta de acceso del archivo de copia de seguridad de SSAS. La extensión `.abf` es necesaria.

  Los siguientes parámetros son opcionales:
  + `@ssas_apply_compression`: indica si se aplicará la compresión de copia de seguridad de SSAS. Los valores válidos son 1 (Sí) y 0 (No).
  + `@ssas_overwrite_file`: indica si se sobrescribe el archivo de copia de seguridad de SSAS. Los valores válidos son 1 (Sí) y 0 (No).

# Restauración de una base de datos SSAS
<a name="SSAS.Restore"></a>

Utilice el siguiente procedimiento almacenado para restaurar una base de datos SSAS a partir de una copia de seguridad. 

No puede restaurar una base de datos si ya existe una base de datos SSAS con el mismo nombre. El procedimiento almacenado para restaurar no da soporte a archivos de copia de seguridad cifrados.

```
exec msdb.dbo.rds_msbi_task
@task_type='SSAS_RESTORE_DB',
@database_name='mynewssasdb',
@file_path='D:\S3\ssas_db_backup.abf';
```

Se requieren los siguientes parámetros:
+ `@task_type` – el tipo de la tarea MSBI; en este caso `SSAS_RESTORE_DB`.
+ `@database_name`: el nombre de la nueva base de datos SSAS en la que está realizando la restauración.
+ `@file_path`: la ruta de acceso al archivo de copia de seguridad de SSAS.

## Restauración de una instancia de base de datos a un momento especificado
<a name="SSAS.PITR"></a>

La recuperación a un momento dado (PITR) no se aplica a las bases de datos SSAS. Si ejecuta una PITR, solo los datos SSAS de la última instantánea antes de la hora solicitada estarán disponibles en la instancia restaurada.

**Para tener bases de datos SSAS actualizadas en una instancia de base de datos restaurada**

1. Haga una copia de seguridad de las bases de datos SSAS en la carpeta `D:\S3` de la instancia de origen.

1. Transfiera los archivos de copia de seguridad al bucket S3.

1. Transfiera los archivos de copia de seguridad del bucket S3 a la carpeta `D:\S3` de la instancia restaurada.

1. Ejecute el procedimiento almacenado para restaurar las bases de datos SSAS en la instancia restaurada.

   También puede volver a procesar el proyecto SSAS para restaurar las bases de datos.

# Cambiar el modo de SSAS
<a name="SSAS.ChangeMode"></a>

Puede cambiar el modo en el que se ejecuta SSAS, ya sea Tabular o Multidimensional. Para cambiar el modo, utilice la Consola de administración de AWS o la AWS CLI para modificar la configuración de las opciones en la opción de SSAS.

**importante**  
Solo puede utilizar un modo de SSAS a la vez. Asegúrese de eliminar todas las bases de datos de SSAS antes de cambiar el modo o aparecerá un error.

## Consola
<a name="SSAS.ChangeMode.CON"></a>

El siguiente procedimiento de la consola de Amazon RDS cambia el modo de SSAS a Tabular y establece el parámetro `MAX_MEMORY` al 70 por ciento.

**Para modificar la opción de SSAS**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija el grupo de opciones con la opción `SSAS` que desea modificar (`ssas-se-2017` en los ejemplos anteriores).

1. Elija **Modify option** (Modificar opción).

1. Cambie la configuración de las opciones:

   1. Para **Max memory** (Memoria máxima), ingrese **70**.

   1. Para el **Mode** (Modo), elija **Tabular**

1. Elija **Modify option** (Modificar opción).

## AWS CLI
<a name="SSAS.ChangeMode.CLI"></a>

El siguiente ejemplo de la AWS CLI cambia el modo de SSAS a Tabular y establece el parámetro `MAX_MEMORY` al 70 por ciento.

Para que el comando de la CLI funcione, asegúrese de incluir todos los parámetros requeridos, incluso si no los está modificando.

**Para modificar la opción de SSAS**
+ Utilice uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o: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
  ```

  En: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
  ```

# Desactivación de SSAS
<a name="SSAS.Disable"></a>

Para descativar SSAS, quite la opción `SSAS` de su grupo de opciones.

**importante**  
Antes de quitar la opción `SSAS`, elimine las bases de datos SSAS.  
Es muy recomendable que realice una copia de seguridad de las bases de datos SSAS antes de eliminarlas y quitar la opción `SSAS`.

## Consola
<a name="SSAS.Disable.Console"></a>

**Para quitar la opción SSAS de su grupo de opciones**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija el grupo de opciones con la opción `SSAS` que desea quitar (`ssas-se-2017` en los ejemplos anteriores).

1. Elija **Delete option** (Eliminar opción).

1. En **Deletion options (Opciones de eliminación)**, elija **SSAS** para **Options to delete (Opciones para eliminar)**.

1. En **Apply immediately (Aplicar inmediatamente)**, seleccione **Yes (Sí)** para eliminar la opción inmediatamente o **No** para eliminarla en el siguiente período de mantenimiento.

1. Elija **Eliminar**.

## AWS CLI
<a name="SSAS.Disable.CLI"></a>

**Para quitar la opción de SSAS de su grupo de opciones**
+ Utilice uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o:Unix

  ```
  aws rds remove-option-from-option-group \
      --option-group-name ssas-se-2017 \
      --options SSAS \
      --apply-immediately
  ```

  En:Windows

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name ssas-se-2017 ^
      --options SSAS ^
      --apply-immediately
  ```

# Solución de problemas de SSAS
<a name="SSAS.Trouble"></a>

Es posible que se encuentre con los siguientes problemas al utilizar SSAS.


| Problema | Tipo | Sugerencias para la solución de problemas | 
| --- | --- | --- | 
| No se puede configurar la opción de SSAS. El modo de SSAS solicitado es new\$1mode, pero la instancia de base de datos actual tiene un número de bases de datos current\$1mode. Elimine las bases de datos existentes antes de cambiar al modo new\$1mode. Para recuperar el acceso al modo current\$1mode a fin de eliminar las bases de datos, actualice el grupo de opciones de la base de datos actual o adjunte un nuevo grupo de opciones con %s como valor de configuración de la opción MODE para la opción de SSAS. | Evento de RDS | No se puede cambiar el modo de SSAS si todavía tiene bases de datos de SSAS que utilizan el modo actual. Elimine las bases de datos de SSAS y vuelva a intentarlo. | 
| No se puede eliminar la opción de SSAS porque hay un número de bases de datos de modo existente. La opción de SSAS no se puede eliminar hasta que se eliminen todas las bases de datos de SSAS. Agregue la opción de SSAS de nuevo, elimine todas las bases de datos de SSAS e inténtelo de nuevo. | Evento de RDS | No se puede desactivar SSAS si todavía tiene bases de datos de SSAS. Elimine las bases de datos de SSAS y vuelva a intentarlo. | 
| La opción de SSAS no está habilitada o está en proceso de habilitarse. Inténtelo de nuevo más tarde. | Procedimiento almacenado de RDS | No se puede ejecutar procedimientos almacenados de SSAS cuando la opción está desactivada ni cuando se encuentra activada. | 
| La opción de SSAS está configurada incorrectamente Asegúrese de que el estado de pertenencia al grupo de opciones sea “in-sync” y revise los registros de eventos de RDS en busca de mensajes de error de configuración de SSAS relevantes Tras estas investigaciones, inténtelo de nuevo. Si los errores continúan, contacte con AWS Support. | Procedimiento almacenado de RDS |  No se puede ejecutar procedimientos almacenados de SSAS cuando la membresía de su grupo de opciones no tiene el estado `in-sync`. Esto pone a la opción de SSAS en un estado de configuración incorrecto. Si el estado de membresía de su grupo de opciones cambia a `failed` debido a la modificación de la opción de SSAS, hay dos posibles razones:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/SSAS.Trouble.html) Reconfigure la opción de SSAS, porque RDS solo permite un modo de SSAS a la vez y no admite la eliminación de la opción de SSAS con bases de datos de SSAS presentes. Compruebe los registros de eventos de RDS en busca de errores de configuración para la instancia de SSAS y resuelva los problemas en consecuencia.  | 
| Error de implementación El cambio solo puede implementarse en un servidor que se ejecute en el modo deployment\$1file\$1mode. El modo de servidor actual es current\$1mode. | Procedimiento almacenado de RDS |  No se puede implementar una base de datos tabular en un servidor multidimensional ni una base de datos multidimensional en un servidor tabular. Asegúrese de utilizar archivos con el modo correcto y verifique que la configuración de la opción `MODE` esté establecida en el valor apropiado.  | 
| Error en la restauración. El archivo de copia de seguridad solo se puede restaurar en un servidor que se ejecute en el modo restore\$1file\$1mode. El modo de servidor actual es current\$1mode. | Procedimiento almacenado de RDS |  No se puede restaurar una base de datos tabular a un servidor multidimensional ni una base de datos multidimensional a un servidor tabular. Asegúrese de utilizar archivos con el modo correcto y verifique que la configuración de la opción `MODE` esté establecida en el valor apropiado.  | 
| Error en la restauración. Las versiones del archivo de copia de seguridad y de instancia de la base de datos RDS son incompatibles. | Procedimiento almacenado de RDS |  No se puede restaurar una base de datos de SSAS con una versión incompatible con la versión de la instancia de SQL Server. Para obtener más información, consulte [Niveles de compatibilidad para modelos tabulares](https://docs.microsoft.com/en-us/analysis-services/tabular-models/compatibility-level-for-tabular-models-in-analysis-services) y [Nivel de compatibilidad de una base de datos multidimensional](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/compatibility-level-of-a-multidimensional-database-analysis-services) en la documentación de Microsoft.  | 
| Error en la restauración. El archivo de copia de seguridad especificado en la operación de restauración está dañado o no es un archivo de copia de seguridad de SSAS. Asegúrese de que @rds\$1file\$1path se encuentre correctamente formateado. | Procedimiento almacenado de RDS |  No se puede restaurar una base de datos de SSAS con un archivo dañado. Asegúrese de que el archivo no esté dañado o corrupto. Este error también puede aparecer cuando `@rds_file_path` no está correctamente formateado (por ejemplo, tiene doble barra invertida como en `D:\S3\\incorrect_format.abf`).  | 
| Error en la restauración. El nombre de la base de datos restaurada no puede contener palabras reservadas o caracteres no válidos: . , ; ' ` : / \$1 \$1 \$1 ? ¡\$1" & % \$1 \$1 \$1 = ( ) [ ] \$1 \$1 < >, o tener más de 100 caracteres. | Procedimiento almacenado de RDS |  El nombre de la base de datos restaurada no puede contener palabras reservadas o caracteres que no sean válidos ni tener más de 100 caracteres. Para conocer las convenciones de denominación de objetos de SSAS, consulte [Normas de nomenclatura de objetos](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/olap-physical/object-naming-rules-analysis-services) en la documentación de Microsoft.  | 
| Se proporcionó un nombre de rol no válido. El nombre del rol no puede contener ninguna cadena reservada. | Procedimiento almacenado de RDS |  El nombre del rol no puede contener ninguna cadena reservada. Para conocer las convenciones de denominación de objetos de SSAS, consulte [Normas de nomenclatura de objetos](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/olap-physical/object-naming-rules-analysis-services) en la documentación de Microsoft.  | 
| Se proporcionó un nombre de rol no válido. El nombre del rol no puede contener ninguno de los siguientes caracteres reservados: . , ; ' ` : / \$1\$1 \$1 \$1 ? ¡\$1" & % \$1 \$1 \$1 = ( ) [ ] \$1 \$1 < > | Procedimiento almacenado de RDS |  El nombre del rol no puede contener ningún carácter reservado. Para conocer las convenciones de denominación de objetos de SSAS, consulte [Normas de nomenclatura de objetos](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/olap-physical/object-naming-rules-analysis-services) en la documentación de Microsoft.  | 

# Compatibilidad de SQL Server Integration Services en Amazon RDS for SQL Server
<a name="Appendix.SQLServer.Options.SSIS"></a>

Microsoft SQL Server Integration Services (SSIS) es un componente que puede utilizar para realizar un intervalo amplio de tareas de migración de datos. SSIS es una plataforma para aplicaciones de integración de datos y flujo de trabajo. Cuenta con una herramienta de almacenamiento de datos utilizada para la extracción, transformación y carga de datos (ETL). También puede utilizar esta herramienta para automatizar el mantenimiento de bases de datos de SQL Server y las actualizaciones de datos de cubo multidimensionales.

Los proyectos SSIS se organizan en paquetes guardados como archivos .dtsx basados en XML. Los paquetes pueden contener flujos de control y flujos de datos. Los flujos de datos se utilizan para representar operaciones ETL. Después de la implementación, los paquetes se almacenan en SQL Server en la base de datos SSISDB. SSISDB es una base de datos de procesamiento de transacciones en línea (OLTP) en el modo de recuperación completa.

Amazon RDS for SQL Server admite la ejecución de SSIS directamente en una instancia de base de datos RDS. Puede habilitar SSIS en una instancia de base de datos existente o nueva. SSIS se instala en la misma instancia de base de datos que su motor de base de datos.

RDS admite SSIS para las ediciones Standard y Enterprise de SQL Server en las siguientes versiones:
+ SQL Server 2022, todas las versiones
+ SQL Server 2019, versión 15.00.4043.16.v1 y posteriores
+ SQL Server 2017, versión 14.00.3223.3.v1 y posteriores
+ SQL Server 2016, versión 13.00.5426.0.v1 y posteriores

**Contents**
+ [Limitaciones y recomendaciones](#SSIS.Limitations)
+ [Habilitación de SSIS](#SSIS.Enabling)
  + [Creación del grupo de opciones para SSIS](#SSIS.OptionGroup)
  + [Agregar la opción SSIS al grupo de opciones](#SSIS.Add)
  + [Creación del grupo de parámetros para SSIS](#SSIS.CreateParamGroup)
  + [Modificación del parámetro para SSIS](#SSIS.ModifyParam)
  + [Asociación del grupo de opciones y el grupo de parámetros con su instancia de base de datos](#SSIS.Apply)
  + [Habilitación de la integración de S3](#SSIS.EnableS3)
+ [Permisos administrativos en SSISDB](SSIS.Permissions.md)
  + [Configuración de un usuario autenticado por Windows para SSIS](SSIS.Permissions.md#SSIS.Use.Auth)
+ [Implementación de un proyecto SSIS](SSIS.Deploy.md)
+ [Monitoreo del estado de una tarea de implementación](SSIS.Monitor.md)
+ [Uso de SSIS](SSIS.Use.md)
  + [Configuración de administradores de conexión de base de datos para proyectos SSIS](SSIS.Use.md#SSIS.Use.ConnMgrs)
  + [Creación de un proxy de SSIS](SSIS.Use.md#SSIS.Use.Proxy)
  + [Programación de un paquete SSIS mediante SQL Server Agent](SSIS.Use.md#SSIS.Use.Schedule)
  + [Revocación de acceso SSIS desde el proxy](SSIS.Use.md#SSIS.Use.Revoke)
+ [Deshabilitación y eliminación de la base de datos de SSIS](SSIS.DisableDrop.md)
  + [Deshabilitación de SSIS](SSIS.DisableDrop.md#SSIS.Disable)
  + [Borrado de la base de datos SSISDB](SSIS.DisableDrop.md#SSIS.Drop)

## Limitaciones y recomendaciones
<a name="SSIS.Limitations"></a>

Las siguientes limitaciones y recomendaciones se aplican a la ejecución de SSIS en RDS para SQL Server:
+ La instancia de base de datos debe tener un grupo de parámetros asociado con el parámetro `clr enabled` establecido en 1. Para obtener más información, consulte [Modificación del parámetro para SSIS](#SSIS.ModifyParam).
**nota**  
Si habilita el parámetro `clr enabled` en SQL Server 2017 o 2019, no podrá utilizar el tiempo de ejecución del lenguaje común (CLR) en su instancia de base de datos. Para obtener más información, consulte [Características no compatibles y características con compatibilidad limitada](SQLServer.Concepts.General.FeatureNonSupport.md).
+ Se admiten las siguientes tareas de flujo de control:
  + Tarea DDL Execute de Analysis Services
  + Tarea de procesamiento de Analysis Services
  + Tarea de inserción masiva
  + Tarea comprobar integridad de la base de datos
  + Tarea de flujo de datos
  + Tarea de consulta de minería de datos
  + Tarea de creación de perfiles de datos
  + Tarea ejecutar paquete
  + Tarea ejecutar trabajo de SQL Server Agent
  + Tarea ejecutar SQL
  + Tarea ejecutar instrucción T-SQL
  + Tarea notificar operador
  + Tarea de reconstruir índice
  + Tarea de reorganizar índice
  + Tarea de reducir base de datos
  + Tarea de transferencia de base de datos
  + Tarea de transferencia de trabajos
  + Tarea de transferencia de inicios de sesión
  + Tarea de transferencia de objetos de SQL Server
  + Tarea de actualizar estadísticas
+ Solo se admite la implementación del proyecto.
+ Se admite la ejecución de paquetes SSIS mediante SQL Server Agent.
+ Los registros de SSIS solo se pueden insertar en bases de datos creadas por el usuario.
+ Utilice solo la carpeta `D:\S3` para trabajar con archivos. Los archivos colocados en cualquier otro directorio se eliminan. Tenga en cuenta algunos otros detalles de ubicación de archivos:
  + Coloque los archivos de entrada y salida del proyecto SSIS en la carpeta `D:\S3`.
  + Para la tarea de flujo de datos, cambie la ubicación de `BLOBTempStoragePath` y `BufferTempStoragePath` a un archivo dentro de la carpeta `D:\S3`. La ruta del archivo debe comenzar con `D:\S3\`.
  + Asegúrese de que todos los parámetros, variables y expresiones utilizados para las conexiones de archivos apuntan a la carpeta `D:\S3`.
  + En las instancias multi-AZ, los archivos creados por SSIS en la carpeta `D:\S3` se eliminan después de una conmutación por error. Para obtener más información, consulte [Limitaciones multi-AZ para la integración S3](User.SQLServer.Options.S3-integration.md#S3-MAZ).
  + Cargue los archivos creados por SSIS en la carpeta `D:\S3` en su bucket de Amazon S3 para que sean permanentes.
+ No se admiten las transformaciones "importar columna" y "exportar columna" ni el componente script de la tarea de flujo de datos.
+ No puede habilitar el volcado en paquetes SSIS en ejecución y no puede agregar pulsaciones de datos en paquetes SSIS.
+ No se admite la característica SSIS Scale Out.
+ No se pueden implementar proyectos directamente. Proporcionamos procedimientos almacenados de RDS para ello. Para obtener más información, consulte [Implementación de un proyecto SSIS](SSIS.Deploy.md).
+ Cree archivos de proyecto SSIS (.ispac) con el modo de protección `DoNotSavePasswords` para la implementación en RDS.
+ SSIS no se admite en instancias Always On con réplicas de lectura.
+ No puede realizar una copia de seguridad de la base de datos SSISDB asociada con la opción `SSIS`.
+ No se admite la importación y restauración de la base de datos SSISDB desde otras instancias SSIS.
+ Puede conectarse a otras instancias de base de datos de SQL Server o a un origen de datos de Oracle. La conexión a otros motores de bases de datos, como MySQL o PostgreSQL, no es compatible con SSIS en RDS para SQL Server. Para obtener más información acerca de la conexión a un origen de datos de Oracle, consulte [Servidores enlazados con Oracle OLEDB](Appendix.SQLServer.Options.LinkedServers_Oracle_OLEDB.md). 
+ SSIS no admite una instancia unida a un dominio con una confianza saliente a un dominio en las instalaciones. Cuando utilice una confianza saliente, ejecute el trabajo de SSIS desde una cuenta del dominio de AWS local.
+ No se admite la ejecución de paquetes basados en el sistema de archivos.

## Habilitación de SSIS
<a name="SSIS.Enabling"></a>

Para habilitar SSIS, agregue la opción SSIS a su instancia de base de datos. Utilice el siguiente proceso:

1. Cree un nuevo grupo de opciones o elija un grupo de opciones ya existente.

1. Añada la opción `SSIS` al grupo de opciones.

1. Cree un nuevo grupo de parámetros o elija un grupo de parámetros existente.

1. Modifique el grupo de parámetros para establecer el parámetro `clr enabled` en 1.

1. Asocie el grupo de opciones y el grupo de parámetros a la instancia de base de datos.

1. Habilite la integración de Amazon S3.

**nota**  
Si ya existe una base de datos con el nombre SSISDB o un inicio de sesión SSIS reservado en la instancia de base de datos, no puede habilitar SSIS en la instancia.

### Creación del grupo de opciones para SSIS
<a name="SSIS.OptionGroup"></a>

Para trabajar con SSIS, cree un grupo de opciones o modifique un grupo de opciones que corresponda a la edición y versión de SQL Server de la instancia de base de datos que planea utilizar. Para ello, utilice la opción Consola de administración de AWS o la AWS CLI.

#### Consola
<a name="SSIS.OptionGroup.Console"></a>

El siguiente procedimiento crea un grupo de opciones para SQL Server Standard Edition 2016.

**Para crear el grupo de opciones**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija **Create group**.

1. En la ventana **Create option group** (Crear grupo de opciones), haga lo siguiente:

   1. En **Nombre**, escriba un nombre para el grupo de opciones que sea exclusivo dentro de su cuenta de AWS, como **ssis-se-2016**. El nombre solo puede contener letras, dígitos y guiones.

   1. En **Descripción**, escriba una breve descripción del grupo de opciones, como **SSIS option group for SQL Server SE 2016**. La descripción se utiliza para fines de visualización. 

   1. Para **Engine (Motor)**, elija **sqlserver-se**.

   1. En **Versión principal del motor**, elija **13.00**.

1. Seleccione **Crear**.

#### CLI
<a name="SSIS.OptionGroup.CLI"></a>

El siguiente procedimiento crea un grupo de opciones para SQL Server Standard Edition 2016.

**Para crear el grupo de opciones**
+ Ejecute uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o 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"
  ```

### Agregar la opción SSIS al grupo de opciones
<a name="SSIS.Add"></a>

A continuación, utilice la Consola de administración de AWS o la AWS CLI para agregar la opción `SSIS` al grupo de opciones.

#### Consola
<a name="SSIS.Add.Console"></a>

**Para agregar la opción SSIS**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija el grupo de opciones que acaba de crear, **ssis-se-2016** en este ejemplo.

1. Seleccione **Add option (Añadir opción)**.

1. En **Detalles de la opción**, elija **SSIS** para **Nombre de la opción**.

1. En **Scheduling (Programación)**, elija si desea agregar la opción inmediatamente o en el siguiente período de mantenimiento.

1. Elija **Add option** (Agregar opción).

#### CLI
<a name="SSIS.Add.CLI"></a>

**Para agregar la opción SSIS**
+ Añada la opción `SSIS` al grupo de opciones.  
**Example**  

  Para Linux, macOS o 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
  ```

### Creación del grupo de parámetros para SSIS
<a name="SSIS.CreateParamGroup"></a>

Cree o modifique un grupo de parámetros para el parámetro `clr enabled` que corresponde a la edición y versión de SQL Server de la instancia de base de datos que piensa utilizar para SSIS.

#### Consola
<a name="SSIS.CreateParamGroup.Console"></a>

El procedimiento siguiente crea un grupo de parámetros para SQL Server Standard Edition 2016.

**Para crear el grupo de parámetros**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, seleccione **Parameter groups** (Grupos de parámetros).

1. Elija **Create parameter group**.

1. En el panel **Create parameter group (Crear grupo de parámetros)**, haga lo siguiente:

   1. En **Familia de grupos de parámetros**, elija **sqlserver-se-13.0**.

   1. En **Nombre de grupo**, escriba un identificador para el grupo de parámetros, como **ssis-sqlserver-se-13**.

   1. En **Descripción**, escriba **clr enabled parameter group**.

1. Seleccione **Create (Crear)**.

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

El procedimiento siguiente crea un grupo de parámetros para SQL Server Standard Edition 2016.

**Para crear el grupo de parámetros**
+ Ejecute uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o 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"
  ```

### Modificación del parámetro para SSIS
<a name="SSIS.ModifyParam"></a>

Modifique el parámetro `clr enabled` en el grupo de parámetros que corresponde a la edición y la versión de SQL Server de su instancia de base de datos. Para SSIS, establezca el parámetro `clr enabled` en 1.

#### Consola
<a name="SSIS.ModifyParam.Console"></a>

El procedimiento siguiente modifica el grupo de parámetros que ha creado para SQL Server Standard Edition 2016.

**Para modificar el grupo de parámetros**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, seleccione **Parameter groups** (Grupos de parámetros).

1. Elija el grupo de parámetros, como **ssis-sqlserver-se-13**.

1. En **Parámetros**, filtre la lista de parámetros para **clr**.

1. Elija **clr habilitado**.

1. Elija **Edit parameters (Editar parámetros)**.

1. En **Valores**, elija **1**.

1. Elija **Save changes**.

#### CLI
<a name="SSIS.ModifyParam.CLI"></a>

El procedimiento siguiente modifica el grupo de parámetros que ha creado para SQL Server Standard Edition 2016.

**Para modificar el grupo de parámetros**
+ Ejecute uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o 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"
  ```

### Asociación del grupo de opciones y el grupo de parámetros con su instancia de base de datos
<a name="SSIS.Apply"></a>

Para asociar el grupo de opciones de SSIS y el grupo de parámetros con su instancia de base de datos, utilice la Consola de administración de AWS o la AWS CLI 

**nota**  
Si usa una instancia que ya existe, esta debe tener ya asociados un dominio de Active Directory y un rol de AWS Identity and Access Management (IAM). Si crea una instancia nueva, especifique un rol de IAM y un dominio de Active Directory ya existentes. Para obtener más información, consulte [Uso de Active Directory con RDS para SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).

#### Consola
<a name="SSIS.Apply.Console"></a>

Para terminar de habilitar SSIS, asocie su grupo de opciones de SSIS y el grupo de parámetros con una instancia de base de datos nueva o existente:
+ Para una nueva instancia de base de datos, asóciela cuando inicie la instancia. Para obtener más información, consulte [Creación de una instancia de base de datos de Amazon RDS](USER_CreateDBInstance.md).
+ Para una instancia de base de datos existente, asóciela modificando la instancia. Para obtener más información, consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md).

#### CLI
<a name="SSIS.Apply.CLI"></a>

Puede asociar el grupo de opciones de SSIS y el grupo de parámetros con una instancia de base de datos nueva o existente.

**Para crear una instancia con el grupo de opciones de SSIS y el grupo de parámetros**
+ Especifique el mismo tipo de motor de base de datos y la misma versión principal que ha utilizado al crear el grupo de opciones.  
**Example**  

  Para Linux, macOS o 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
  ```

**Para modificar una instancia y asociar el grupo de opciones y el grupo de parámetros de SSIS**
+ Ejecute uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o 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
  ```

### Habilitación de la integración de S3
<a name="SSIS.EnableS3"></a>

Para descargar archivos de proyecto SSIS (.ispac) en su host para su implementación, utilice la integración de archivos S3. Para obtener más información, consulte [Integración de una instancia de base de datos de Amazon RDS for SQL Server con Amazon S3](User.SQLServer.Options.S3-integration.md).

# Permisos administrativos en SSISDB
<a name="SSIS.Permissions"></a>

Cuando la instancia se crea o modifica con la opción SSIS, el resultado es una base de datos SSISDB con los roles ssis\$1admin y ssis\$1logreader concedidos al usuario maestro. El usuario maestro tiene los siguientes privilegios en SSISDB:
+ alter on ssis\$1admin role
+ alter on ssis\$1logreader role
+ alter any user

Dado que el usuario maestro es un usuario autenticado por SQL, no se puede utilizar el usuario maestro para ejecutar paquetes SSIS. El usuario maestro puede utilizar estos privilegios para crear nuevos usuarios de SSISDB y agregarlos a los roles ssis\$1admin y ssis\$1logreader. Hacer esto es útil para conceder acceso a los usuarios de su dominio para usar SSIS.

## Configuración de un usuario autenticado por Windows para SSIS
<a name="SSIS.Use.Auth"></a>

El usuario maestro puede utilizar el ejemplo de código siguiente para configurar un inicio de sesión autenticado por Windows en SSISDB y conceder los permisos de procedimiento necesarios. Al hacerlo, se conceden permisos al usuario del dominio para implementar y ejecutar paquetes SSIS, utilizar procedimientos de transferencia de archivos S3, crear credenciales y trabajar con el proxy de SQL Server Agent. Para obtener más información, consulte [Credenciales (Motor de base de datos)](https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/credentials-database-engine?view=sql-server-ver15) y [Crear un proxy de SQL Server Agent](https://docs.microsoft.com/en-us/sql/ssms/agent/create-a-sql-server-agent-proxy?view=sql-server-ver15) en la documentación de Microsoft.

**nota**  
Puede conceder algunos o todos los permisos siguientes, según sea necesario, a los usuarios autenticados de 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
```

# Implementación de un proyecto SSIS
<a name="SSIS.Deploy"></a>

En RDS, no puede implementar directamente proyectos SSIS mediante procedimientos de SQL Server Management Studio (SSMS) o SSIS. Para descargar archivos de proyecto de Amazon S3 y, a continuación, implementarlos, utilice procedimientos almacenados de RDS.

Para ejecutar los procedimientos almacenados, inicie sesión como cualquier usuario al que haya concedido permisos para ejecutar los procedimientos almacenados. Para obtener más información, consulte [Configuración de un usuario autenticado por Windows para SSIS](SSIS.Permissions.md#SSIS.Use.Auth).

**Para implementar el proyecto SSIS**

1. Descargue el archivo del proyecto (.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. Envíe la tarea de implementación, asegurándose de lo siguiente:
   + La carpeta está presente en el catálogo de SSIS.
   + El nombre del proyecto coincide con el nombre del proyecto que utilizó al desarrollar el proyecto SSIS.

   ```
   exec msdb.dbo.rds_msbi_task
   @task_type='SSIS_DEPLOY_PROJECT',
   @folder_name='DEMO',
   @project_name='ssisproject',
   @file_path='D:\S3\ssisproject.ispac';
   ```

# Monitoreo del estado de una tarea de implementación
<a name="SSIS.Monitor"></a>

Para realizar un seguimiento del estado de la tarea de implementación, llame a la función `rds_fn_task_status`. Tiene dos parámetros. El primer parámetro tiene que ser siempre `NULL` porque no se aplica a SSIS. El segundo parámetro acepta un ID de tarea. 

Para obtener una lista de todas las tareas, establezca el primer parámetro en `NULL` y el segundo en `0`, como se muestra en el siguiente ejemplo.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,0);
```

Para obtener una tarea específica, establezca el primer parámetro en `NULL` y el segundo en el ID de la tarea, como se muestra en el siguiente ejemplo.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,42);
```

La función `rds_fn_task_status` devuelve la siguiente información.


| Parámetro de salida | Descripción | 
| --- | --- | 
| `task_id` | El ID de la tarea. | 
| `task_type` | `SSIS_DEPLOY_PROJECT` | 
| `database_name` | No aplicable a tareas SSIS. | 
| `% complete` | El porcentaje de progreso de la tarea. | 
| `duration (mins)` | El tiempo empleado en la tarea, en minutos. | 
| `lifecycle` |  El estado de la tarea. Los posibles estados son los siguientes: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/SSIS.Monitor.html)  | 
| `task_info` | Información adicional acerca de la tarea. Si se produce un error durante el procesamiento, esta columna contiene información acerca del error. | 
| `last_updated` | La fecha y hora en que se actualizó por última vez el estado de la tarea. | 
| `created_at` | La fecha y hora en que se creó la tarea. | 
| `S3_object_arn` |  No aplicable a tareas SSIS.  | 
| `overwrite_S3_backup_file` | No aplicable a tareas SSIS. | 
| `KMS_master_key_arn` |  No aplicable a tareas SSIS.  | 
| `filepath` |  No aplicable a tareas SSIS.  | 
| `overwrite_file` |  No aplicable a tareas SSIS.  | 
| `task_metadata` | Metadatos asociados con la tarea SSIS. | 

# Uso de SSIS
<a name="SSIS.Use"></a>

Después de implementar el proyecto SSIS en el catálogo de SSIS, puede ejecutar paquetes directamente desde SSMS o programarlos mediante SQL Server Agent. Debe usar un inicio de sesión autenticado por Windows para ejecutar paquetes SSIS. Para obtener más información, consulte [Configuración de un usuario autenticado por Windows para SSIS](SSIS.Permissions.md#SSIS.Use.Auth).

**Topics**
+ [Configuración de administradores de conexión de base de datos para proyectos SSIS](#SSIS.Use.ConnMgrs)
+ [Creación de un proxy de SSIS](#SSIS.Use.Proxy)
+ [Programación de un paquete SSIS mediante SQL Server Agent](#SSIS.Use.Schedule)
+ [Revocación de acceso SSIS desde el proxy](#SSIS.Use.Revoke)

## Configuración de administradores de conexión de base de datos para proyectos SSIS
<a name="SSIS.Use.ConnMgrs"></a>

Cuando utiliza un administrador de conexiones, puede utilizar estos tipos de autenticación:
+ Para conexiones de base de datos locales con AWS Managed Active Directory, puede utilizar la autenticación de SQL o la autenticación de Windows. Para la autenticación de Windows, utilice `DB_instance_name.fully_qualified_domain_name` como nombre de servidor de la cadena de conexión.

  Un ejemplo es `myssisinstance.corp-ad.example.com`, donde `myssisinstance` es el nombre de instancia de base de datos y `corp-ad.example.com` es el nombre de dominio completo.
+ Para conexiones remotas, utilice siempre la autenticación de SQL.
+ Para conexiones de base de datos locales con Active Directory autoadministrado, puede utilizar la autenticación de SQL o la autenticación de Windows. Para la autenticación de Windows, utilice `.` o `LocalHost` como nombre de servidor de la cadena de conexión.

## Creación de un proxy de SSIS
<a name="SSIS.Use.Proxy"></a>

Para poder programar paquetes SSIS utilizando SQL Server Agent, cree credenciales de SSIS y un proxy de SSIS. Ejecute estos procedimientos como usuario autenticado por Windows.

**Para crear la credencial de SSIS**
+ Cree la credencial para el proxy. Para ello, puede utilizar SSMS o la siguiente instrucción SQL.

  ```
  USE [master]
  GO
  CREATE CREDENTIAL [SSIS_Credential] WITH IDENTITY = N'mydomain\user_name', SECRET = N'mysecret'
  GO
  ```
**nota**  
`IDENTITY` debe ser un inicio de sesión autenticado por dominio. Reemplace `mysecret` por la contraseña para el inicio de sesión autenticado por el dominio.  
Siempre que se cambie el host principal de SSISDB, modifique las credenciales del proxy de SSIS para permitir que el nuevo host tenga acceso a ellas.

**Para crear el proxy de SSIS**

1. Utilice la siguiente instrucción SQL para crear el proxy.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_add_proxy @proxy_name=N'SSIS_Proxy',@credential_name=N'SSIS_Credential',@description=N''
   GO
   ```

1. Utilice la siguiente instrucción SQL para conceder acceso al proxy a otros usuarios.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name=N'SSIS_Proxy',@login_name=N'mydomain\user_name'
   GO
   ```

1. Utilice la siguiente instrucción SQL para conceder acceso al subsistema de SSIS al proxy.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='GRANT_SUBSYSTEM_ACCESS',@proxy_name='SSIS_Proxy',@proxy_subsystem='SSIS'
   GO
   ```

**Para consultar el proxy y las concesiones en el proxy**

1. Utilice la siguiente instrucción SQL para consultar los beneficiarios del proxy.

   ```
   USE [msdb]
   GO
   EXEC sp_help_proxy
   GO
   ```

1. Utilice la siguiente instrucción SQL para consultar las concesiones del subsistema.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_enum_proxy_for_subsystem
   GO
   ```

## Programación de un paquete SSIS mediante SQL Server Agent
<a name="SSIS.Use.Schedule"></a>

Después de crear la credencial y el proxy y conceder acceso SSIS al proxy, puede crear un trabajo de SQL Server Agent para programar el paquete SSIS.

**Para programar el paquete SSIS**
+ Puede utilizar SSMS o T-SQL para crear el trabajo de SQL Server Agent. En el siguiente ejemplo se utiliza 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
  ```

## Revocación de acceso SSIS desde el proxy
<a name="SSIS.Use.Revoke"></a>

Puede revocar el acceso al subsistema de SSIS y eliminar el proxy de SSIS mediante los siguientes procedimientos almacenados.

**Para revocar el acceso y eliminar el proxy**

1. Revoque el acceso al subsistema.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='REVOKE_SUBSYSTEM_ACCESS',@proxy_name='SSIS_Proxy',@proxy_subsystem='SSIS'
   GO
   ```

1. Revoque las concesiones en el proxy.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_revoke_login_from_proxy @proxy_name=N'SSIS_Proxy',@name=N'mydomain\user_name'
   GO
   ```

1. Elimine el proxy.

   ```
   USE [msdb]
   GO
   EXEC dbo.sp_delete_proxy @proxy_name = N'SSIS_Proxy'
   GO
   ```

# Deshabilitación y eliminación de la base de datos de SSIS
<a name="SSIS.DisableDrop"></a>

Siga los pasos que se indican a continuación para deshabilitar o eliminar las bases de datos de SSIS:

**Topics**
+ [Deshabilitación de SSIS](#SSIS.Disable)
+ [Borrado de la base de datos SSISDB](#SSIS.Drop)

## Deshabilitación de SSIS
<a name="SSIS.Disable"></a>

Para deshabilitar SSIS, quite la opción `SSIS` del grupo de opciones.

**importante**  
Quitar la opción no elimina la base de datos SSISDB, por lo que puede eliminar la opción de forma segura sin perder los proyectos SSIS.  
Puede volver a habilitar la opción `SSIS` después de la eliminación para volver a utilizar los proyectos SSIS que se implementaron anteriormente en el catálogo de SSIS.

### Consola
<a name="SSIS.Disable.Console"></a>

El procedimiento siguiente quita la opción `SSIS`.

**Para quitar la opción SSIS de su grupo de opciones**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija el grupo de opciones con la opción `SSIS` (`ssis-se-2016` en los ejemplos anteriores).

1. Elija **Delete option (Eliminar opción)**.

1. En **Opciones de eliminación**, elija **SSIS** para **Opciones que se van a eliminar**.

1. En **Apply immediately (Aplicar inmediatamente)**, seleccione **Yes (Sí)** para eliminar la opción inmediatamente o **No** para eliminarla en el siguiente período de mantenimiento.

1. Elija **Eliminar**.

### CLI
<a name="SSIS.Disable.CLI"></a>

El procedimiento siguiente quita la opción `SSIS`.

**Para quitar la opción SSIS de su grupo de opciones**
+ Ejecute uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o:Unix

  ```
  aws rds remove-option-from-option-group \
      --option-group-name ssis-se-2016 \
      --options SSIS \
      --apply-immediately
  ```

  En:Windows

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name ssis-se-2016 ^
      --options SSIS ^
      --apply-immediately
  ```

## Borrado de la base de datos SSISDB
<a name="SSIS.Drop"></a>

Después de quitar la opción SSIS, la base de datos SSISDB no se elimina. Para eliminar la base de datos SSISDB, utilice el procedimiento almacenado `rds_drop_ssis_database` después de quitar la opción SSIS.

**Para eliminar la base de datos SSIS**
+ Utilice el siguiente procedimiento almacenado.

  ```
  USE [msdb]
  GO
  EXEC dbo.rds_drop_ssis_database
  GO
  ```

Después de eliminar la base de datos SSISDB, si vuelve a habilitar la opción SSIS obtendrá un nuevo catálogo de SSISDB.

# Compatibilidad con SQL Server Reporting Services en Amazon RDS for SQL Server
<a name="Appendix.SQLServer.Options.SSRS"></a>

Microsoft SQL Server Reporting Services (SSRS) es una aplicación basada en servidor que se utiliza para la generación y la distribución de informes. Forma parte de un conjunto de servicios de SQL Server que también incluye SQL Server Analysis Services (SSAS) y SQL Server Integration Services (SSIS). SSRS es un servicio construido sobre SQL Server. Puede usarlo para recopilar datos de diversos orígenes de datos y presentarlos de una manera que sea fácilmente comprensible y lista para el análisis.

Amazon RDS for SQL Server admite la ejecución de SSRS directamente en instancias de base de datos RDS. Puede usar SSRS con instancias de base de datos ya existentes o nuevas.

RDS admite SSRS para las ediciones Standard y Enterprise de SQL Server en las siguientes versiones:
+ SQL Server 2022, todas las versiones
+ SQL Server 2019, versión 15.00.4043.16.v1 y posteriores
+ SQL Server 2017, versión 14.00.3223.3.v1 y posteriores
+ SQL Server 2016, versión 13.00.5820.21.v1 y posteriores

**Contents**
+ [Limitaciones y recomendaciones](#SSRS.Limitations)
+ [Activación de SSRS](SSRS.Enabling.md)
  + [Creación de un grupo de opciones para SSRS](SSRS.Enabling.md#SSRS.OptionGroup)
  + [Agregar la opción SSRS a su grupo de opciones](SSRS.Enabling.md#SSRS.Add)
  + [Asociación de un grupo de opciones a su instancia de base de datos](SSRS.Enabling.md#SSRS.Apply)
  + [Permitir el acceso de entrada a su grupo de seguridad de VPC](SSRS.Enabling.md#SSRS.Inbound)
+ [Bases de datos del servidor de informes](#SSRS.DBs)
+ [Archivos de registro de SSRS](#SSRS.Logs)
+ [Acceso al portal web de SSRS](SSRS.Access.md)
  + [Uso de SSL en RDS](SSRS.Access.md#SSRS.Access.SSL)
  + [Concesión de acceso a usuarios de dominio](SSRS.Access.md#SSRS.Access.Grant)
  + [Acceso al portal web](SSRS.Access.md#SSRS.Access)
+ [Implementación de informes y configuración de orígenes de datos de informes](SSRS.DeployConfig.md)
  + [Implementación de informes en SSRS](SSRS.DeployConfig.md#SSRS.Deploy)
  + [Configuración del origen de datos del informe](SSRS.DeployConfig.md#SSRS.ConfigureDataSource)
+ [Uso del correo electrónico de SSRS para enviar informes](SSRS.Email.md)
+ [Revocación de permisos de nivel de sistema](SSRS.Access.Revoke.md)
+ [Monitoreo del estado de una tarea](SSRS.Monitor.md)
+ [Deshabilitación y eliminación de bases de datos de SSRS](SSRS.DisableDelete.md)
  + [Desactivación de SSRS](SSRS.DisableDelete.md#SSRS.Disable)
  + [Eliminación de las bases de datos SSRS](SSRS.DisableDelete.md#SSRS.Drop)

## Limitaciones y recomendaciones
<a name="SSRS.Limitations"></a>

Las siguientes limitaciones y recomendaciones se aplican a la ejecución de SSRS en RDS para SQL Server:
+ No puede usar SSRS en instancias de base de datos que tienen réplicas de lectura.
+ Las instancias deben utilizar Active Directory autoadministrado o AWS Directory Service for Microsoft Active Directory para la autenticación del portal web y del servidor web SSRS. Para obtener más información, consulte [Uso de Active Directory con RDS para SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md). 
+ No puede realizar una copia de seguridad de las bases de datos del servidor de informes creadas con la opción SSRS.
+ No se admite la importación y restauración de bases de datos del servidor de informes desde otras instancias de SSRS. Para obtener más información, consulte [Bases de datos del servidor de informes](#SSRS.DBs).
+ No puede configurar SSRS para que escuche en el puerto SSL predeterminado (443). Los valores permitidos son 1150–49.511, excepto 1234, 1434, 3260, 3343, 3389 y 47.001.
+ Las suscripciones a través de un recurso compartido de archivos de Microsoft Windows no son compatibles.
+ No se admite el uso de Reporting Services Configuration Manager.
+ No se admite la creación y modificación de roles.
+ No se admite la modificación de propiedades del servidor de informes.
+ No se conceden los roles administrador del sistema y usuario del sistema.
+ No puede editar asignaciones de roles a nivel de sistema a través del portal web.

# Activación de SSRS
<a name="SSRS.Enabling"></a>

Utilice el siguiente proceso para activar SSRS para su instancia de base de datos:

1. Cree un nuevo grupo de opciones o elija un grupo de opciones ya existente.

1. Añada la opción `SSRS` al grupo de opciones.

1. Asocie el grupo de opciones a la instancia de base de datos.

1. Permitir el acceso entrante al grupo de seguridad de la nube virtual privada (VPC) para el puerto de agente de escucha de SSRS.

## Creación de un grupo de opciones para SSRS
<a name="SSRS.OptionGroup"></a>

Para trabajar con SSRS, cree un grupo de opciones que corresponda al motor de SQL Server y la versión de la instancia de base de datos que planee utilizar. Para ello, utilice la opción Consola de administración de AWS o la AWS CLI. 

**nota**  
También puede utilizar un grupo de opciones ya existente si es para el motor y la versión correctos de SQL Server.

### Consola
<a name="SSRS.OptionGroup.Console"></a>

El siguiente procedimiento crea un grupo de opciones para SQL Server Standard Edition 2017.

**Para crear el grupo de opciones**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija **Create group**.

1. En el panel **Create option group (Crear grupo de opciones)**, haga lo siguiente:

   1. En **Name** (Nombre), escriba un nombre para el grupo de opciones que sea exclusivo dentro de su Cuenta de AWS, como **ssrs-se-2017**. El nombre solo puede contener letras, dígitos y guiones.

   1. En **Descripción**, escriba una breve descripción del grupo de opciones, como **SSRS option group for SQL Server SE 2017**. La descripción se utiliza para fines de visualización.

   1. Para **Engine (Motor)**, elija **sqlserver-se**.

   1. En **Major engine version (Versión principal dle motor)**, elija **14.00**.

1. Elija **Create** (Crear).

### CLI
<a name="SSRS.OptionGroup.CLI"></a>

El siguiente procedimiento crea un grupo de opciones para SQL Server Standard Edition 2017.

**Para crear el grupo de opciones**
+ Ejecute uno de los siguientes comandos.

**Example**  
Para Linux, macOS o 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"
```

## Agregar la opción SSRS a su grupo de opciones
<a name="SSRS.Add"></a>

A continuación, utilice la Consola de administración de AWS o la AWS CLI para agregar la opción `SSRS` al grupo de opciones.

### Consola
<a name="SSRS.Add.CON"></a>

**Para agregar la opción SSRS**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija el grupo de opciones que acaba de crear y, a continuación, elija **Add option** (Añadir opción).

1. En **Detalles de la opción**, elija **SSRS** para **Nombre de la opción**.

1. En **Configuración de opciones**, haga lo siguiente:

   1. Introduzca el puerto que debe escuchar el servicio SSRS. El valor predeterminado es 8443. Para obtener una lista de valores permitidos, consulte [Limitaciones y recomendaciones](Appendix.SQLServer.Options.SSRS.md#SSRS.Limitations).

   1. Escriba un valor en **Memoria máxima**.

      **Memoria máxima** especifica el umbral superior por encima del cual no se conceden nuevas solicitudes de asignación de memoria para las aplicaciones de servidor de informes. El número es un porcentaje de la memoria total de la instancia de base de datos. Los valores permitidos son 10–80.

   1. En **Security groups (Grupos de seguridad)**, elija el grupo de seguridad de VPC que desea asociar a la opción. Utilice el mismo grupo de seguridad asociado a su instancia de base de datos.

1. Para usar el correo electrónico de SSRS para enviar informes, seleccione la casilla de verificación **Configure email delivery options** (Configurar las opciones de entrega de correo electrónico) en**Email delivery in reporting services** (Entrega de correo electrónico en servicios de informes) y, a continuación, haga lo siguiente:

   1. En **Email address** (Dirección de correo electrónico), escriba la dirección de correo electrónico que desea usar en el campo **From** (De) de los mensajes enviados por correo electrónico de SSRS.

      Especifique una cuenta de usuario que tenga permiso para enviar correo desde el servidor SMTP.

   1. En **SMTP server** (Servidor SMTP), especifique el servidor SMTP o la puerta de enlace que se va a utilizar.

      Puede ser una dirección IP, el nombre NetBIOS de un equipo de la intranet corporativa o un nombre de dominio completo.

   1. En **SMTP port** (Puerto SMTP), introduzca el puerto que se utilizará para conectarse al servidor de correo. El valor predeterminado es 25.

   1. Para usar la autenticación:

      1. Seleccione la casilla de verificación **Use authentication** (Usar autenticación).

      1. En **Secret Amazon Resource Name (ARN)** (Nombre de recurso de Amazon [ARN]), escriba el ARN de AWS Secrets Manager para las credenciales de usuario.

         Use el siguiente formato:

         **arn:aws:secretsmanager:*Region*:*AccountId*:secret:*SecretName*-*6RandomCharacters***

         Por ejemplo:

         **arn:aws:secretsmanager:*us-west-2*:*123456789012*:secret:*MySecret-a1b2c3***

         Para obtener más información sobre la creación del secreto, consulte [Uso del correo electrónico de SSRS para enviar informes](SSRS.Email.md).

   1. Seleccione la casilla de verificación **Use Secure Sockets Layer (SSL)** (Utilizar capa de sockets seguros) para cifrar los mensajes de correo electrónico mediante SSL.

1. En **Scheduling** (Programación), elija si desea agregar la opción inmediatamente o en el siguiente período de mantenimiento.

1. Elija **Add option** (Agregar opción).

### CLI
<a name="SSRS.Add.CLI"></a>

**Para agregar la opción SSRS**

1. Cree un archivo JSON, por ejemplo `ssrs-option.json`.

   1. Defina los siguientes parámetros obligatorios:
      + `OptionGroupName`: el nombre del grupo de opciones que ha creado o elegido anteriormente (`ssrs-se-2017` en el ejemplo siguiente).
      + `Port`: el puerto donde debe escuchar el servicio SSRS. El valor predeterminado es 8443. Para obtener una lista de valores permitidos, consulte [Limitaciones y recomendaciones](Appendix.SQLServer.Options.SSRS.md#SSRS.Limitations).
      + `VpcSecurityGroupMemberships`: las suscripciones del grupo de seguridad de VPC para su instancia de base de datos de RDS.
      + `MAX_MEMORY` : el umbral superior por encima del cual no se conceden nuevas solicitudes de asignación de memoria para las aplicaciones de servidor de informes. El número es un porcentaje de la memoria total de la instancia de base de datos. Los valores permitidos son 10–80.

   1. (Opcional) Defina los siguientes parámetros para usar el correo electrónico de SSRS:
      + `SMTP_ENABLE_EMAIL`: defínalo en `true` para usar el correo electrónico de SSRS. El valor predeterminado es `false`.
      + `SMTP_SENDER_EMAIL_ADDRESS`: la dirección de correo electrónico que se va a utilizar en el campo **From** (De) de los mensajes enviados por correo electrónico de SSRS. Especifique una cuenta de usuario que tenga permiso para enviar correo desde el servidor SMTP.
      + `SMTP_SERVER`: el servidor SMTP o la puerta de enlace que se va a utilizar. Puede ser una dirección IP, el nombre NetBIOS de un equipo de la intranet corporativa o un nombre de dominio completo.
      + `SMTP_PORT`: el puerto que se va a usar para conectarse al servidor de correo. El valor predeterminado es 25.
      + `SMTP_USE_SSL`: defínalo en`true` para cifrar los mensajes de correo electrónico mediante SSL. El valor predeterminado es `true`.
      + `SMTP_EMAIL_CREDENTIALS_SECRET_ARN`: el ARN de Secrets Manager que contiene las credenciales de usuario. Use el siguiente formato:

        **arn:aws:secretsmanager:*Region*:*AccountId*:secret:*SecretName*-*6RandomCharacters***

        Para obtener más información sobre la creación del secreto, consulte [Uso del correo electrónico de SSRS para enviar informes](SSRS.Email.md).
      + `SMTP_USE_ANONYMOUS_AUTHENTICATION`: defínalo en `true` y no incluya `SMTP_EMAIL_CREDENTIALS_SECRET_ARN` si no quiere usar la autenticación.

        El valor predeterminado es `false` cuando `SMTP_ENABLE_EMAIL` es `true`.

   El siguiente ejemplo incluye los parámetros de correo electrónico de SSRS, que utilizan el ARN secreto.

   ```
   {
   "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. Agregue la opción `SSRS` al grupo de opciones.  
**Example**  

   Para Linux, macOS o 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
   ```

## Asociación de un grupo de opciones a su instancia de base de datos
<a name="SSRS.Apply"></a>

Puede utilizar la Consola de administración de AWS o la AWS CLI para asociar el grupo de opciones a la instancia de base de datos.

Si usa una instancia de base de datos existente, debe tener ya asociados un dominio de Active Directory y un rol de AWS Identity and Access Management (IAM). Si crea una instancia nueva, especifique un rol de IAM y un dominio de Active Directory ya existentes. Para obtener más información, consulte [Uso de Active Directory con RDS para SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).

### Consola
<a name="SSRS.Apply.Console"></a>

Puede asociar su grupo de opciones a una instancia de base de datos nueva o ya existente:
+ Para una nueva instancia de base de datos, asocie el grupo de opciones al lanzar la instancia. Para obtener más información, consulte [Creación de una instancia de base de datos de Amazon RDS](USER_CreateDBInstance.md).
+ Para una instancia de base de datos existente, modifique la instancia y asóciele el nuevo grupo de opciones. Para obtener más información, consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md).

### CLI
<a name="SSRS.Apply.CLI"></a>

Puede asociar su grupo de opciones a una instancia de base de datos nueva o ya existente.

**Para crear una instancia de base de datos que utilice el grupo de opciones**
+ Especifique el mismo tipo de motor de base de datos y la misma versión principal que ha utilizado al crear el grupo de opciones.  
**Example**  

  Para Linux, macOS o 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
  ```

**Para modificar una instancia de base de datos para utilizar su grupo de opciones**
+ Ejecute uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o 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
  ```

## Permitir el acceso de entrada a su grupo de seguridad de VPC
<a name="SSRS.Inbound"></a>

Para permitir el acceso entrante al grupo de seguridad de la VPC asociado a su instancia de base de datos, cree una regla de entrada para el puerto de agente de escucha de SSRS especificado. Para obtener más información acerca de la configuración de grupos de seguridad, consulte [Proporcionar acceso a la instancia de base de datos en la VPC mediante la creación de un grupo de seguridad](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup).

## Bases de datos del servidor de informes
<a name="SSRS.DBs"></a>

Cuando la instancia de base de datos está asociada a la opción SSRS, se crean dos nuevas bases de datos en la instancia de base de datos:
+ `rdsadmin_ReportServer`
+ `rdsadmin_ReportServerTempDB`

Estas bases de datos actúan como bases de datos ReportServer y ReportServerTempDB. SSRS almacena sus datos en la base de datos ReportServer y almacena en caché sus datos en la base de datos ReportServerTempDB. Para obtener más información, consulte [Report Server Database](https://learn.microsoft.com/en-us/sql/reporting-services/report-server/report-server-database-ssrs-native-mode?view=sql-server-ver15) (Base de datos de servidores de inforems) en la documentación de Microsoft.

RDS posee y administra estas bases de datos, por lo que no se permiten operaciones de base de datos en ellas, como ALTER y DROP. No se permite el acceso a la base de datos `rdsadmin_ReportServerTempDB`. Sin embargo, puede realizar operaciones de lectura en la base de datos `rdsadmin_ReportServer`.

## Archivos de registro de SSRS
<a name="SSRS.Logs"></a>

Puede enumerar, ver y descargar archivos de registro de SSRS. Los archivos de registro de SSRS siguen la convención de nomenclatura ReportServerService\$1*marca de tiempo*.log. Estos registros del servidor de informes se encuentran en el directorio `D:\rdsdbdata\Log\SSRS`. (El directorio `D:\rdsdbdata\Log` es también el directorio principal de los registros de errores y los registros del agente de SQL Server). Para obtener más información, consulte [Visualización y descripción de archivos de registro de base de datos](USER_LogAccess.Procedural.Viewing.md).

Para las instancias SSRS existentes, es posible que sea necesario reiniciar el servicio SSRS para acceder a los registros del servidor de informes. Puede reiniciar el servicio actualizando la opción `SSRS`.

Para obtener más información, consulte [Uso de registros de Amazon RDS para Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.Logs.md).

# Acceso al portal web de SSRS
<a name="SSRS.Access"></a>

Utilice el siguiente proceso para acceder al portal web de SSRS:

1. Active la capa de conexión segura (SSL)

1. Conceder acceso a los usuarios del dominio.

1. Acceda al portal web mediante un explorador y las credenciales de usuario del dominio.

## Uso de SSL en RDS
<a name="SSRS.Access.SSL"></a>

SSRS utiliza el protocolo SSL de HTTPS para sus conexiones. Para trabajar con este protocolo, importe un certificado SSL en el sistema operativo Microsoft Windows del equipo cliente.

Para obtener más información sobre los certificados SSL, consulte [Uso de SSL/TLS para cifrar una conexión a una instancia o un clúster de base de datos](UsingWithRDS.SSL.md). Para obtener más información acerca de cómo usar SSL con SQL Server, consulte [Uso de SSL con una instancia de base de datos de Microsoft SQL Server](SQLServer.Concepts.General.SSL.Using.md).

## Concesión de acceso a usuarios de dominio
<a name="SSRS.Access.Grant"></a>

En una nueva activación de SSRS, no hay asignaciones de roles en SSRS. Para dar acceso al portal web a un usuario de dominio o grupo de usuarios, RDS proporciona un procedimiento almacenado.

**Para conceder acceso a un usuario de dominio en el portal web**
+ Utilice el siguiente procedimiento almacenado.

  ```
  exec msdb.dbo.rds_msbi_task
  @task_type='SSRS_GRANT_PORTAL_PERMISSION',
  @ssrs_group_or_username=N'AD_domain\user';
  ```

Al usuario o grupo de usuarios del dominio se le concede el rol del sistema `RDS_SSRS_ROLE`. Este rol tiene asignadas las siguientes tareas en el nivel de sistema:
+ Ejecutar informes
+ Administrar trabajos
+ Administrar programaciones compartidas
+ Ver programaciones compartidas

También se concede el rol de nivel de elemento de `Content Manager` en la carpeta raíz.

## Acceso al portal web
<a name="SSRS.Access"></a>

Una vez finalizada la tarea `SSRS_GRANT_PORTAL_PERMISSION` correctamente, tendrá acceso al portal mediante un explorador web. La URL del portal web tiene el siguiente formato.

```
https://rds_endpoint:port/Reports
```

En este formato, se aplica lo siguiente:
+ *`rds_endpoint`* – el punto de enlace de la instancia de base de datos de RDS que está utilizando con SSRS.

  Puede encontrar el punto de enlace en la pestaña **Conectividad y seguridad** de su instancia de base de datos. Para obtener más información, consulte [Conexión a la instancia de base de datos de Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md).
+ `port`: el puerto del agente de escucha para SSRS que se establece en la opción `SSRS`.

**Para acceder al portal web**

1. Introduzca la URL del portal web en su navegador.

   ```
   https://myssrsinstance.cg034itsfake.us-east-1.rds.amazonaws.com:8443/Reports
   ```

1. Inicie sesión con las credenciales de un usuario de dominio al que haya otorgado acceso con la tarea `SSRS_GRANT_PORTAL_PERMISSION`.

# Implementación de informes y configuración de orígenes de datos de informes
<a name="SSRS.DeployConfig"></a>

Utilice los siguientes procedimientos para implementar los informes en SSRS y configurar los orígenes de datos de los informes:

**Topics**
+ [Implementación de informes en SSRS](#SSRS.Deploy)
+ [Configuración del origen de datos del informe](#SSRS.ConfigureDataSource)

## Implementación de informes en SSRS
<a name="SSRS.Deploy"></a>

Después de tener acceso al portal web, puede implementar informes en él. Puede utilizar la herramienta Cargar en el portal web para cargar informes o implementarlos directamente desde [SQL Server Data Tools (SSDT)](https://docs.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt). Al implementarlos desde SSDT, asegúrese de lo siguiente:
+ El usuario que inició SSDT tiene acceso al portal web de SSRS.
+ El valor `TargetServerURL` de las propiedades del proyecto de SSRS se establece en el punto de enlace de HTTPS de la instancia de base de datos de RDS con el sufijo `ReportServer`, por ejemplo:

  ```
  https://myssrsinstance.cg034itsfake.us-east-1.rds.amazonaws.com:8443/ReportServer
  ```

## Configuración del origen de datos del informe
<a name="SSRS.ConfigureDataSource"></a>

Después de implementar un informe en SSRS, debe configurar el origen de datos del informe. Al configurar el origen de datos del informe, asegúrese de lo siguiente:
+ Para instancias de base de datos de RDS para SQL Server unidas a AWS Directory Service for Microsoft Active Directory, utilice el nombre de dominio completo (FQDN) como nombre del origen de datos de la cadena de conexión. Un ejemplo es `myssrsinstance.corp-ad.example.com`, donde `myssrsinstance` es el nombre de instancia de base de datos y `corp-ad.example.com` es el nombre de dominio completo. 
+ Para las instancias de base de datos de RDS para SQL Server unidas a Active Directory autogestionado, utilice `.` o `LocalHost` como nombre del origen de datos de la cadena de conexión.

# Uso del correo electrónico de SSRS para enviar informes
<a name="SSRS.Email"></a>

SSRS incluye la extensión de correo electrónico de SSRS, que puede usar para enviar informes a los usuarios.

Para configurar el correo electrónico de SSRS, utilice la opción de configuración `SSRS`. Para obtener más información, consulte [Agregar la opción SSRS a su grupo de opciones](SSRS.Enabling.md#SSRS.Add).

Después de configurar el correo electrónico de SSRS, puede suscribirse a los informes en el servidor de informes. Para obtener más información, consulte [Email delivery in Reporting Services](https://docs.microsoft.com/en-us/sql/reporting-services/subscriptions/e-mail-delivery-in-reporting-services) (Entrega de correo electrónico en servicios de informes) en la documentación de Microsoft.

La integración con AWS Secrets Manager es necesaria para que el correo electrónico de SSRS funcione en RDS. Para integrarse con Secrets Manager, debe crear un secreto.

**nota**  
Si cambia el secreto más adelante, también tendrá que actualizar la opción `SSRS` del grupo de opciones.

**Para crear un secreto para el correo electrónico de SSRS**

1. Siga los pasos de [Creación de un secreto](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) en la *Guía del usuario de AWS Secrets Manager*.

   1. En **Select secret type (Seleccionar tipo de secreto)**, elija **Other type of secrets (Otro tipo de secretos)**.

   1. En **Key/value pairs** (Pares clave/valor), escriba lo siguiente:
      + **SMTP\$1USERNAME**: introduzca un usuario con permiso para enviar correo desde el servidor SMTP.
      + **SMTP\$1PASSWORD**: introduzca una contraseña para el usuario SMTP.

   1. En **Encryption key** (Clave de cifrado), no utilice el valor predeterminado AWS KMS key. Utilice su propia clave existente o cree una nueva.

      La política de claves de KMS debe permitir la acción `kms:Decrypt`, por ejemplo:

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

1. Siga los pasos de [Adjuntar una política de permisos a un secreto](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_resource-policies.html)en la *Guía del usuario de AWS Secrets Manager*. La política de permisos otorga la acción `secretsmanager:GetSecretValue` principal del servicio `rds.amazonaws.com`.

   Le recomendamos que utilice la `aws:sourceAccount` y las condiciones `aws:sourceArn` de la política para evitar el problema del *suplente confuso*. Utilice su Cuenta de AWS para `aws:sourceAccount` y el ARN del grupo de opciones para `aws:sourceArn`. Para obtener más información, consulte [Prevención de los problemas del suplente confuso entre servicios](cross-service-confused-deputy-prevention.md).

   El ejemplo siguiente muestra una política de permisos.

------
#### [ 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 ver más ejemplos, consulte [Ejemplos de políticas de permisos para AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html) en la *Guía del usuario de AWS Secrets Manager*.

# Revocación de permisos de nivel de sistema
<a name="SSRS.Access.Revoke"></a>

El rol del sistema `RDS_SSRS_ROLE` no tiene permisos suficientes para eliminar asignaciones de roles de nivel del sistema. Para quitar un usuario o un grupo de usuarios de `RDS_SSRS_ROLE`, utilice el mismo procedimiento almacenado que utilizó para otorgar el rol pero utilice el tipo de tarea `SSRS_REVOKE_PORTAL_PERMISSION`.

**Para revocar el acceso de un usuario de dominio para el portal web**
+ Utilice el siguiente procedimiento almacenado.

  ```
  exec msdb.dbo.rds_msbi_task
  @task_type='SSRS_REVOKE_PORTAL_PERMISSION',
  @ssrs_group_or_username=N'AD_domain\user';
  ```

Al hacerlo, se elimina al usuario del rol del sistema `RDS_SSRS_ROLE`. También elimina al usuario del rol de nivel de elemento `Content Manager` si el usuario lo tiene.

# Monitoreo del estado de una tarea
<a name="SSRS.Monitor"></a>

Para realizar un seguimiento del estado de la tarea de concesión o revocación, llame a la función `rds_fn_task_status`. Tiene dos parámetros. El primer parámetro tiene que ser siempre `NULL` porque no se aplica a SSRS. El segundo parámetro acepta un ID de tarea. 

Para obtener una lista de todas las tareas, establezca el primer parámetro en `NULL` y el segundo en `0`, como se muestra en el siguiente ejemplo.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,0);
```

Para obtener una tarea específica, establezca el primer parámetro en `NULL` y el segundo en el ID de la tarea, como se muestra en el siguiente ejemplo.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,42);
```

La función `rds_fn_task_status` devuelve la siguiente información.


| Parámetro de salida | Descripción | 
| --- | --- | 
| `task_id` | El ID de la tarea. | 
| `task_type` | Para SSRS, las tareas pueden tener los siguientes tipos de tareas: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/SSRS.Monitor.html)  | 
| `database_name` | No aplicable a tareas de SSRS. | 
| `% complete` | El porcentaje de progreso de la tarea. | 
| `duration (mins)` | El tiempo empleado en la tarea, en minutos. | 
| `lifecycle` |  El estado de la tarea. Los posibles estados son los siguientes: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/SSRS.Monitor.html)  | 
| `task_info` | Información adicional acerca de la tarea. Si se produce un error durante el procesamiento, esta columna contiene información acerca del error.  | 
| `last_updated` | La fecha y hora en que se actualizó por última vez el estado de la tarea.  | 
| `created_at` | La fecha y hora en que se creó la tarea. | 
| `S3_object_arn` |  No aplicable a tareas de SSRS.  | 
| `overwrite_S3_backup_file` | No aplicable a tareas de SSRS. | 
| `KMS_master_key_arn` |  No aplicable a tareas de SSRS.  | 
| `filepath` |  No aplicable a tareas de SSRS.  | 
| `overwrite_file` |  No aplicable a tareas de SSRS.  | 
| `task_metadata` | Metadatos asociados a la tarea de SSRS. | 

# Deshabilitación y eliminación de bases de datos de SSRS
<a name="SSRS.DisableDelete"></a>

Utilice los siguientes procedimientos para deshabilitar SSRS y eliminar las bases de datos de SSRS:

**Topics**
+ [Desactivación de SSRS](#SSRS.Disable)
+ [Eliminación de las bases de datos SSRS](#SSRS.Drop)

## Desactivación de SSRS
<a name="SSRS.Disable"></a>

Para desactivar SSRS, quite la opción `SSRS` de su grupo de opciones. La eliminación de la opción no elimina las bases de datos SSRS. Para obtener más información, consulte [Eliminación de las bases de datos SSRS](#SSRS.Drop).

Puede volver a activar SSRS si vuelve a añadir la opción `SSRS`. Si también ha eliminado las bases de datos de SSRS, al volver a añadir la opción en la misma instancia de base de datos, se crean nuevas bases de datos del servidor de informes.

### Consola
<a name="SSRS.Disable.Console"></a>

**Para quitar la opción SSRS de su grupo de opciones**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija el grupo de opciones con la opción `SSRS` (`ssrs-se-2017` en los ejemplos anteriores).

1. Elija **Delete option (Eliminar opción)**.

1. En **Opciones de eliminación**, elija **SSRS** para **Opciones para eliminar**.

1. En **Apply immediately (Aplicar inmediatamente)**, seleccione **Yes (Sí)** para eliminar la opción inmediatamente o **No** para eliminarla en el siguiente período de mantenimiento.

1. Elija **Eliminar**.

### CLI
<a name="SSRS.Disable.CLI"></a>

**Para quitar la opción SSRS de su grupo de opciones**
+ Ejecute uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o:Unix

  ```
  aws rds remove-option-from-option-group \
      --option-group-name ssrs-se-2017 \
      --options SSRS \
      --apply-immediately
  ```

  En:Windows

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name ssrs-se-2017 ^
      --options SSRS ^
      --apply-immediately
  ```

## Eliminación de las bases de datos SSRS
<a name="SSRS.Drop"></a>

Al quitar la opción `SSRS`, no se eliminan las bases de datos del servidor de informes. Para eliminarlas, utilice el siguiente procedimiento almacenado. 

Para eliminar las bases de datos del servidor de informes, asegúrese de quitar primero la opción `SSRS`.

**Para eliminar las bases de datos SSRS**
+ Utilice el siguiente procedimiento almacenado.

  ```
  exec msdb.dbo.rds_drop_ssrs_databases
  ```

# Compatibilidad con el Coordinador de transacciones distribuidas de Microsoft en RDS for SQL Server
<a name="Appendix.SQLServer.Options.MSDTC"></a>

Una *transacción distribuida* es una transacción de base de datos en la que participan dos o más anfitriones de red. RDS for SQL Server admite transacciones distribuidas entre anfitriones, donde un solo anfitrión puede ser uno de los siguientes:
+ Instancia de base de datos de RDS para SQL Server
+ Host local de SQL Server
+ Host de Amazon EC2 con SQL Server instalado
+ Cualquier otro host de EC2 o instancia de base de datos de RDS con un motor de base de datos que admita transacciones distribuidas

En RDS, a partir de SQL Server 2012 (versión 11.00.5058.0.v1 y posterior), todas las ediciones de RDS for SQL Server admiten transacciones distribuidas. La compatibilidad se proporciona con el Coordinador de transacciones distribuidas de Microsoft (MSDTC). Para obtener información detallada acerca de MSDTC, consulte [Distributed Transaction Coordinator](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms684146(v=vs.85)) en la documentación de Microsoft.

**Contents**
+ [Limitaciones](#Appendix.SQLServer.Options.MSDTC.Limitations)
+ [Habilitación de MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md)
  + [Creación del grupo de opciones para MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.OptionGroup)
  + [Agregar la opción de MSDTC al grupo de opciones](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Add)
  + [Creación del grupo de parámetros para MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.CreateParamGroup)
  + [Modificación del parámetro para MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC)
  + [Asociación del grupo de opciones y el grupo de parámetros con la instancia de base de datos](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.Apply)
  + [Modificación de la opción MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Modify)
+ [Utilización de transacciones](#Appendix.SQLServer.Options.MSDTC.Using)
  + [Uso de transacciones distribuidas](#Appendix.SQLServer.Options.MSDTC.UsingXA)
  + [Utilización de transacciones XA](#MSDTC.XA)
  + [Uso del seguimiento de transacciones](#MSDTC.Tracing)
+ [Deshabilitación de MSDTC](Appendix.SQLServer.Options.MSDTC.Disable.md)
+ [Solución de problemas de MSDTC para SQL Server de RDS](Appendix.SQLServer.Options.MSDTC.Troubleshooting.md)

## Limitaciones
<a name="Appendix.SQLServer.Options.MSDTC.Limitations"></a>

Las siguientes limitaciones se aplican al uso de MSDTC en RDS para SQL Server:
+ MSDTC no se admite en instancias que utilizan la creación de reflejo de base de datos de SQL Server. Para obtener más información, consulte [Transacciones - Grupos de disponibilidad y creación de reflejo de la base de datos](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).
+ El parámetro `in-doubt xact resolution` debe estar establecido en 1 o 2. Para obtener más información, consulte [Modificación del parámetro para MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC).
+ MSDTC requiere que todos los nombres de host que participan en transacciones distribuidas se puedan resolver mediante sus nombres de host. RDS mantiene automáticamente esta funcionalidad para instancias unidas a dominios. Sin embargo, para instancias independientes, asegúrese de configurar manualmente el servidor DNS.
+ Las transacciones XA de Java Database Connectivity (JDBC) son compatibles con SQL Server 2017 versión 14.00.3223.3 y posteriores, así como con SQL Server 2019.
+ No se admiten transacciones distribuidas que dependan de bibliotecas de vínculos dinámicos (DLL) del cliente en instancias de RDS.
+ No se admite el uso de bibliotecas de vínculos dinámicos XA personalizadas.

# Habilitación de MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Enabling"></a>

Ejecute el siguiente proceso para habilitar MSDTC para su instancia de base de datos:

1. Cree un nuevo grupo de opciones o elija un grupo de opciones ya existente.

1. Añada la opción `MSDTC` al grupo de opciones.

1. Cree un nuevo grupo de parámetros o elija un grupo de parámetros existente.

1. Modifique el grupo de parámetros para establecer el parámetro `in-doubt xact resolution` en 1 o 2.

1. Asocie el grupo de opciones y el grupo de parámetros a la instancia de base de datos.

## Creación del grupo de opciones para MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.OptionGroup"></a>

Utilice la Consola de administración de AWS o la AWS CLI para crear un grupo de opciones que corresponda al motor de SQL Server y la versión de su instancia de base de datos.

**nota**  
También puede utilizar un grupo de opciones ya existente si es para el motor y la versión correctos de SQL Server.

### Consola
<a name="OptionGroup.MSDTC.Console"></a>

El siguiente procedimiento crea un grupo de opciones para SQL Server Standard Edition 2016.

**Para crear el grupo de opciones**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija **Create group**.

1. En el panel **Create option group (Crear grupo de opciones)**, haga lo siguiente:

   1. En **Nombre**, escriba un nombre para el grupo de opciones que sea exclusivo dentro de su cuenta de AWS, como **msdtc-se-2016**. El nombre solo puede contener letras, dígitos y guiones.

   1. En **Descripción**, escriba una breve descripción del grupo de opciones, como **MSDTC option group for SQL Server SE 2016**. La descripción se utiliza para fines de visualización. 

   1. Para **Engine (Motor)**, elija **sqlserver-se**.

   1. En **Versión principal del motor**, elija **13.00**.

1. Elija **Create** (Crear).

### CLI
<a name="OptionGroup.MSDTC.CLI"></a>

En el siguiente ejemplo se crea un grupo de opciones para SQL Server Standard Edition 2016.

**Para crear el grupo de opciones**
+ Utilice uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o: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"
  ```

  En: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"
  ```

## Agregar la opción de MSDTC al grupo de opciones
<a name="Appendix.SQLServer.Options.MSDTC.Add"></a>

A continuación, utilice la Consola de administración de AWS o la AWS CLI para agregar la opción `MSDTC` al grupo de opciones.

Se requieren los siguientes ajustes de opciones:
+ **Puerto**: el puerto que utilice para acceder a MSDTC. Los valores permitidos son 1150–49.151 excepto 1234, 1434, 3260, 3343, 3389 y 47.001. El valor predeterminado es 5000.

  Asegúrese de que el puerto que desea utilizar está habilitado en las reglas de firewall. Además, asegúrese de que este puerto esté habilitado, según sea necesario, en las reglas de entrada y salida del grupo de seguridad asociado a su instancia de base de datos. Para obtener más información, consulte [No puede conectarse a la instancia de base de datos de Amazon RDS](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting). 
+ **Grupos de seguridad**: la pertenencia a grupos de seguridad de VPC para la instancia de base de datos de RDS.
+ **Tipo de autenticación**: el modo de autenticación entre alojamientos. Se admiten los siguientes tipos de autenticación:
  + Mutua: las instancias RDS se autentican mutuamente mediante la autenticación integrada. Si se selecciona esta opción, todas las instancias asociadas a este grupo de opciones deben estar unidas al dominio.
  + Ninguna: no se realiza ninguna autenticación entre alojamientos. No recomendamos utilizar este modo en entornos de producción.
+ **Tamaño del registro de transacciones**: el tamaño del registro de transacciones de MSDTC. Los valores permitidos son 4–1024. El tamaño predeterminado es 4 MB.

Los siguientes ajustes de opciones son opcionales:
+ **Habilitar conexiones entrantes**: indica si se permiten conexiones MSDTC entrantes a instancias asociadas a este grupo de opciones.
+ **Habilitar conexiones salientes**: indica si desea permitir conexiones MSDTC salientes desde instancias asociadas a este grupo de opciones.
+ **Habilitar XA**: si desea permitir transacciones XA. Para obtener más información sobre el protocolo XA, consulte [Especificación XA](https://publications.opengroup.org/c193).
+ **Habilitar LU de SNA**: indica si se va a permitir que el protocolo LU de SNA se utilice para transacciones distribuidas. Para obtener más información sobre la compatibilidad con el protocolo LU de SNA, consulte [Managing IBM CICS LU 6.2 Transactions](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms685136(v=vs.85)) en la documentación de Microsoft.

### Consola
<a name="Options.MSDTC.Add.Console"></a>

**Para agregar la opción MSDTC**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija el grupo de opciones que acaba de crear.

1. Seleccione **Add option (Añadir opción)**.

1. En **Detalles de la opción**, elija **MSDTC** en **Nombre de la opción**.

1. En **Configuración de opciones**:

   1. En **Puerto**, escriba el número de puerto para acceder a MSDTC. El valor predeterminado es **5000**.

   1. En **Security groups** (Grupos de seguridad), elija el grupo de seguridad de VPC que desea asociar a la opción.

   1. En **Tipo de autenticación**, elija **Mutua** o **Ninguna**.

   1. En **Tamaño del registro de transacciones**, escriba un valor entre 4 y 1024. El valor predeterminado es **4**.

1. En **Configuración adicional**, haga lo siguiente:

   1. En **Conexiones**, elija **Habilitar conexiones entrantes** y **Habilitar conexiones salientes** según sea necesario.

   1. En **Protocolos permitidos**, elija **Habilitar XA** y **Habilitar LU de SNA**.

1. En **Scheduling (Programación)**, elija si desea agregar la opción inmediatamente o en el siguiente período de mantenimiento.

1. Seleccione **Add option (Añadir opción)**.

   Para agregar esta opción, no es necesario reiniciar.

### CLI
<a name="Options.MSDTC.Add.CLI"></a>

**Para agregar la opción MSDTC**

1. Cree un archivo JSON, por ejemplo `msdtc-option.json`, con los siguientes parámetros obligatorios:

   ```
   {
   "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. Añada la opción `MSDTC` al grupo de opciones.  
**Example**  

   Para Linux, macOS o:Unix

   ```
   aws rds add-option-to-option-group \
       --cli-input-json file://msdtc-option.json \
       --apply-immediately
   ```

   En:Windows

   ```
   aws rds add-option-to-option-group ^
       --cli-input-json file://msdtc-option.json ^
       --apply-immediately
   ```

   No es necesario reiniciar el equipo.

## Creación del grupo de parámetros para MSDTC
<a name="MSDTC.CreateParamGroup"></a>

Cree o modifique un grupo de parámetros para el parámetro `in-doubt xact resolution` que corresponde a la edición y versión de SQL Server de la instancia de base de datos.

### Consola
<a name="CreateParamGroup.MSDTC.Console"></a>

En el ejemplo siguiente se crea un grupo de parámetros para SQL Server Standard Edition 2016.

**Para crear el grupo de parámetros**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, seleccione **Parameter groups** (Grupos de parámetros).

1. Elija **Create parameter group**.

1. En el panel **Create parameter group (Crear grupo de parámetros)**, haga lo siguiente:

   1. En **Familia de grupos de parámetros**, elija **sqlserver-se-13.0**.

   1. En **Nombre de grupo**, escriba un identificador para el grupo de parámetros, como **msdtc-sqlserver-se-13**.

   1. En **Descripción**, escriba **in-doubt xact resolution**.

1. Elija **Create** (Crear).

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

En el ejemplo siguiente se crea un grupo de parámetros para SQL Server Standard Edition 2016.

**Para crear el grupo de parámetros**
+ Utilice uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o: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"
  ```

  En: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"
  ```

## Modificación del parámetro para MSDTC
<a name="ModifyParam.MSDTC"></a>

Modifique el parámetro `in-doubt xact resolution` en el grupo de parámetros que corresponde a la edición y la versión de SQL Server de su instancia de base de datos.

Para MSDTC, establezca el parámetro `in-doubt xact resolution` en uno de los siguientes:
+ `1` – `Presume commit`: se supone que todas las transacciones de MSDTC en duda se han confirmado.
+ `2` – `Presume abort`: se supone que todas las transacciones de MSDTC en duda se han detenido.

Para obtener más información, consulte [in-doubt xact resolution (opción de configuración del servidor)](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/in-doubt-xact-resolution-server-configuration-option) en la documentación de Microsoft.

### Consola
<a name="ModifyParam.MSDTC.Console"></a>

En el ejemplo siguiente se modifica el grupo de parámetros que ha creado para SQL Server Standard Edition 2016.

**Para modificar el grupo de parámetros**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, seleccione **Parameter groups** (Grupos de parámetros).

1. Elija el grupo de parámetros, como **msdtc-sqlserver-se-13**.

1. En **Parámetros**, filtre la lista de parámetros para **xact**.

1. Elija **in-doubt xact resolution**.

1. Elija **Edit parameters (Editar parámetros)**.

1. Escriba **1** o **2**.

1. Elija **Guardar cambios**.

### CLI
<a name="ModifyParam.MSDTC.CLI"></a>

En el ejemplo siguiente se modifica el grupo de parámetros que ha creado para SQL Server Standard Edition 2016.

**Para modificar el grupo de parámetros**
+ Utilice uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o: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"
  ```

  En: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"
  ```

## Asociación del grupo de opciones y el grupo de parámetros con la instancia de base de datos
<a name="MSDTC.Apply"></a>

Puede utilizar la Consola de administración de AWS o la AWS CLI para asociar el grupo de opciones MSDTC y el grupo de parámetros con la instancia de base de datos.

### Consola
<a name="MSDTC.Apply.Console"></a>

Puede asociar el grupo de opciones de MSDTC y el grupo de parámetros con una instancia de base de datos nueva o existente.
+ Para una nueva instancia de base de datos, asóciela cuando inicie la instancia. Para obtener más información, consulte [Creación de una instancia de base de datos de Amazon RDS](USER_CreateDBInstance.md).
+ Para una instancia de base de datos existente, asóciela modificando la instancia. Para obtener más información, consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md).
**nota**  
Si utiliza una instancia de base de datos que existe, esta ya debe tener asociado un dominio de Active Directory y un rol de AWS Identity and Access Management (IAM). Si crea una instancia unida a dominio nueva, especifique un rol de IAM y un dominio de Active Directory ya existentes. Para obtener más información, consulte [Uso de AWS Managed Active Directory con RDS para SQL Server](USER_SQLServerWinAuth.md).

### CLI
<a name="MSDTC.Apply.CLI"></a>

Puede asociar el grupo de opciones de MSDTC y el grupo de parámetros con una instancia de base de datos nueva o existente.

**nota**  
Si usa una instancia de base de datos unidad a dominio que ya existe, esta debe tener ya asociada un dominio de Active Directory y un rol de IAM. Si crea una instancia unida a dominio nueva, especifique un rol de IAM y un dominio de Active Directory ya existentes. Para obtener más información, consulte [Uso de AWS Managed Active Directory con RDS para SQL Server](USER_SQLServerWinAuth.md).

**Para crear una instancia de base de datos con el grupo de opciones y el grupo de parámetros de MSDTC**
+ Especifique el mismo tipo de motor de base de datos y la misma versión principal que ha utilizado al crear el grupo de opciones.  
**Example**  

  Para Linux, macOS o: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
  ```

  En: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
  ```

**Para modificar una instancia de base de datos y asociar el grupo de opciones y el grupo de parámetros de MSDTC**
+ Utilice uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o: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
  ```

  En: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
  ```

## Modificación de la opción MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Modify"></a>

Después de habilitar la opción `MSDTC`, puede modificar su configuración. Para obtener más información acerca de cómo modificar la configuración de opciones, consulte [Modificación de una configuración de opciones](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption).

**nota**  
Algunos cambios en la configuración de la opción MSDTC requieren que se reinicie el servicio MSDTC. Este requisito puede afectar a las transacciones distribuidas en ejecución.

## Utilización de transacciones
<a name="Appendix.SQLServer.Options.MSDTC.Using"></a>

### Uso de transacciones distribuidas
<a name="Appendix.SQLServer.Options.MSDTC.UsingXA"></a>

En Amazon RDS for SQL Server, ejecute transacciones distribuidas de la misma manera que las transacciones distribuidas que se ejecutan en las instalaciones:
+ Usando transacciones promocionables `System.Transactions` de .NET Framework , que optimizan las transacciones distribuidas aplazando su creación hasta que sean necesarias.

  En este caso, la promoción es automática y no requiere ninguna intervención. Si solo hay un administrador de recursos dentro de la transacción, no se realiza ninguna promoción. Para obtener más información acerca de los ámbitos de transacción implícitos, consulte [Implementación de una transacción implícita usando el ámbito de transacción](https://docs.microsoft.com/en-us/dotnet/framework/data/transactions/implementing-an-implicit-transaction-using-transaction-scope) en la documentación de Microsoft.

  Las transacciones promocionables son compatibles con estas implementaciones .NET:
  + A partir de ADO.NET 2.0, `System.Data.SqlClient` admite transacciones promocionables con SQL Server. Para obtener más información, consulte [Integración de System.Transactions con SQL Server](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/system-transactions-integration-with-sql-server) en la documentación de Microsoft.
  + ODP.NET admite `System.Transactions`. Se crea una transacción local para la primera conexión abierta en el ámbito `TransactionsScope` a Oracle Database 11g versión 1 (versión 11.1) y posteriores. Cuando se abre una segunda conexión, esta transacción se promueve automáticamente a una transacción distribuida. Para obtener más información acerca de la compatibilidad con transacciones distribuidas en ODP.NET, consulte [Integración con Coordinador de transacciones distribuidas de Microsoft](https://docs.oracle.com/en/database/oracle/oracle-data-access-components/18.3/ntmts/using-mts-with-oracledb.html) en la documentación de Microsoft.
+ Uso de la instrucción `BEGIN DISTRIBUTED TRANSACTION`. Para obtener más información, consulte [BEGIN DISTRIBUTION TRANSACT-SQL (Transact-SQL)](https://docs.microsoft.com/en-us/sql/t-sql/language-elements/begin-distributed-transaction-transact-sql) en la documentación de Microsoft.

### Utilización de transacciones XA
<a name="MSDTC.XA"></a>

A partir de RDS for SQL Server 2017 versión 14.00.3223.3, puede controlar las transacciones distribuidas mediante JDBC. Cuando establece la opción `Enable XA` en `true` en la opción `MSDTC`, RDS habilita automáticamente las transacciones de JDBC y otorga el rol `SqlJDBCXAUser` al usuario `guest`. Esto permite ejecutar transacciones distribuidas mediante JDBC. Para obtener más información, incluido un ejemplo de código, consulte [Descripción de las transacciones XA](https://docs.microsoft.com/en-us/sql/connect/jdbc/understanding-xa-transactions) en la documentación de Microsoft.

### Uso del seguimiento de transacciones
<a name="MSDTC.Tracing"></a>

RDS admite controlar los seguimientos de transacciones de MSDTC y descargarlos desde la instancia de base de datos de RDS para solucionar problemas. Puede controlar las sesiones de seguimiento de transacciones ejecutando el siguiente procedimiento almacenado de RDS.

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'trace_action',
[@traceall='0|1'],
[@traceaborted='0|1'],
[@tracelong='0|1'];
```

El siguiente parámetro es obligatorio:
+ `trace_action`: la acción de rastreo. Puede ser `START`, `STOP`, o `STATUS`.

Los siguientes parámetros son opcionales:
+ `@traceall`: establezca en 1 para realizar un seguimiento de todas las transacciones distribuidas. El valor predeterminado es 0.
+ `@traceaborted`: establezca en 1 para realizar un seguimiento de las transacciones distribuidas canceladas. El valor predeterminado es 0.
+ `@tracelong`: establezca en 1 para realizar un seguimiento de transacciones distribuidas de larga duración. El valor predeterminado es 0.

**Example de acción de seguimiento START**  
Para iniciar una nueva sesión de seguimiento de transacciones, ejecute la instrucción de ejemplo siguiente.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'START',
@traceall='0',
@traceaborted='1',
@tracelong='1';
```
Solo puede estar activa una sesión de seguimiento de transacciones a la vez. Si se emite un nuevo comando `START` de sesión de seguimiento mientras una sesión de seguimiento está activa, se devuelve un error y la sesión de seguimiento activa se mantiene sin cambios.

**Example de acción de seguimiento STOP**  
Para detener una sesión de seguimiento de transacciones, ejecute la siguiente instrucción.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STOP'
```
Esta instrucción detiene la sesión de seguimiento de transacciones activa y guarda los datos de seguimiento de la transacción en el directorio de registro de la instancia de base de datos de RDS. La primera fila de la salida contiene el resultado general y las siguientes líneas indican los detalles de la operación.  
A continuación se muestra un ejemplo de una detención satisfactoria de sesión de seguimiento.  

```
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
```
Puede utilizar la información detallada para consultar el nombre del archivo de registro generado. Para obtener más información acerca de la descarga de archivos de registro de la instancia de base de datos de RDS, consulte [Supervisión de archivos de registro de Amazon RDS](USER_LogAccess.md).  
Los registros de sesión de seguimiento permanecen en la instancia durante 35 días. Los registros de sesión de seguimiento anteriores se eliminan automáticamente.

**Example de acción de seguimiento de STATUS**  
Para rastrear el estado de una sesión de seguimiento de transacciones, ejecute la siguiente instrucción.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STATUS'
```
Esta instrucción genera lo siguiente como filas separadas del conjunto de resultados.  

```
OK
SessionStatus: <Started|Stopped>
TraceAll: <True|False>
TraceAborted: <True|False>
TraceLongLived: <True|False>
```
La primera línea indica el resultado general de la operación: `OK` o `ERROR` con detalles, si procede. Las líneas siguientes indican detalles sobre el estado de la sesión de seguimiento:   
+ `SessionStatus` puede ser uno de los siguientes:
  + `Started` si se está ejecutando una sesión de seguimiento.
  + `Stopped` si no se está ejecutando ninguna sesión de seguimiento.
+ Los indicadores de sesión de seguimiento pueden ser `True` o `False` en función de cómo se establecieron en el `START` comando.

# Deshabilitación de MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Disable"></a>

Para deshabilitar MSDTC, quite la opción `MSDTC` de su grupo de opciones.

## Consola
<a name="Options.MSDTC.Disable.Console"></a>

**Para quitar la opción MSDTC de su grupo de opciones**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija el grupo de opciones con la opción `MSDTC` (`msdtc-se-2016` en los ejemplos anteriores).

1. Elija **Delete option (Eliminar opción)**.

1. En **Opciones de eliminación**, elija **MSDTC** para **Opciones para eliminar**.

1. En **Apply immediately (Aplicar inmediatamente)**, seleccione **Yes (Sí)** para eliminar la opción inmediatamente o **No** para eliminarla en el siguiente período de mantenimiento.

1. Elija **Eliminar**.

## CLI
<a name="Options.MSDTC.Disable.CLI"></a>

**Para quitar la opción MSDTC de su grupo de opciones**
+ Utilice uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o:Unix

  ```
  aws rds remove-option-from-option-group \
      --option-group-name msdtc-se-2016 \
      --options MSDTC \
      --apply-immediately
  ```

  En:Windows

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name msdtc-se-2016 ^
      --options MSDTC ^
      --apply-immediately
  ```

# Solución de problemas de MSDTC para SQL Server de RDS
<a name="Appendix.SQLServer.Options.MSDTC.Troubleshooting"></a>

En algunos casos, puede tener problemas para establecer una conexión entre MSDTC que se ejecuta en un equipo cliente y el servicio de MSDTC que se ejecuta en una instancia de base de datos de SQL Server de RDS. Si es así, asegúrese de lo siguiente:
+ Las reglas de entrada para el grupo de seguridad asociado a la instancia de base de datos están configuradas correctamente. Para obtener más información, consulte [No puede conectarse a la instancia de base de datos de Amazon RDS](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting).
+ El equipo cliente está configurado correctamente.
+ Las reglas de firewall de MSDTC en el equipo del cliente están habilitadas.

**Para configurar el equipo cliente**

1. Abra **Servicios de componentes**.

   O bien, en **Administrador del servidor**, elija **Herramientas**, y, a continuación, elija **Servicios de componentes**.

1. Expanda **Servicios de componentes**, expanda **Equipos**, expanda **Mi PC**, y, a continuación, expanda **Coordinador de transacciones distribuidas**.

1. Abra el menú contextual (clic derecho) de **DTC local** y elija **Propiedades**.

1. Elija la pestaña **Seguridad**.

1. Elija todas las opciones siguientes:
   + **Acceso DTC de red**
   + **Permitir entrada**
   + **Permitir salida**

1. Asegúrese de que se haya elegido el modo de autenticación correcto:
   + **Autenticación mutua requerida**: el equipo cliente se une al mismo dominio que otros nodos que participan en transacciones distribuidas o existe una relación de confianza configurada entre dominios.
   + **No se requiere autenticación**: todos los demás casos.

1. Elija **Aceptar** para guardar los cambios.

1. Si se le pide que reinicie el servicio, elija **Sí**.

**Para habilitar las reglas de firewall de MSDTC**

1. Abra el Firewall de Windows y, a continuación, elija **Configuración avanzada**.

   O, en **Administrador del servidor**, elija **Herramientas** y, a continuación, elija **Firewall de Windows con seguridad avanzada**.
**nota**  
En función del sistema operativo,el Firewall de Windows puede llamarse Firewall de Windows Defender.

1. Elija **Reglas de entrada** en el panel izquierdo.

1. Habilite las siguientes reglas de firewall, si aún no están habilitadas:
   + **Coordinador de transacciones distribuidas (RPC)**
   + **Coordinador de transacciones distribuidas (RPC) -EPMAP**
   + **Coordinador de Transacciones Distribuidas (TCP-In)**

1. Cierre el firewall de Windows.

# Organizador de recursos de Microsoft SQL Server con RDS para SQL Server
<a name="Appendix.SQLServer.Options.ResourceGovernor"></a>

El regulador de recursos es una característica de SQL Server Enterprise Edition que le proporciona un control preciso sobre los recursos de la instancia. Le permite establecer límites específicos sobre la forma en que las cargas de trabajo utilizan los recursos de CPU, memoria y E/S físicas. Con el gobernador de recursos, puede:
+ Evite la monopolización de los recursos en entornos de varios inquilinos mediante la administración de la forma en que las diferentes cargas de trabajo comparten los recursos de las instancias
+ Ofrezca un rendimiento predecible al establecer límites y prioridades de recursos específicos para diferentes usuarios y aplicaciones

Tiene la opción de habilitar el gobernador de recursos en una instancia de base de datos de RDS para SQL Server existente o nueva.

El gobernador de recursos utiliza tres conceptos fundamentales:
+ **Fondo de recursos**: un contenedor que administra los recursos físicos de la instancia (CPU, memoria y E/S). Dispone de dos grupos integrados (internos y predeterminados) y puede crear grupos personalizados adicionales.
+ **Grupo de carga de trabajo**: un contenedor para sesiones de bases de datos con características similares. Cada grupo de carga de trabajo pertenece a un fondo de recursos. Dispone de dos grupos integrados de carga de trabajo (interno y predeterminado) y puede crear grupos de carga de trabajo personalizados adicionales.
+ **Clasificación**: el proceso que determina qué grupo de carga de trabajo gestiona las sesiones entrantes en función del nombre de usuario, el nombre de la aplicación, el nombre de la base de datos o el nombre del host.

Para obtener información adicional sobre la funcionalidad del gobernador de recursos en SQL Server, consulte [Gobernador de recursos](https://learn.microsoft.com/en-us/sql/relational-databases/resource-governor/resource-governor?view=sql-server-ver16) en la documentación de Microsoft.

**Contents**
+ [Versiones y regiones compatibles](#ResourceGovernor.SupportedVersions)
+ [Limitaciones y recomendaciones](#ResourceGovernor.Limitations)
+ [Habilitación del gobernador de recursos de Microsoft SQL Server para la instancia de RDS para SQL Server](ResourceGovernor.Enabling.md)
  + [Creación del grupo de opciones para `RESOURCE_GOVERNOR`](ResourceGovernor.Enabling.md#ResourceGovernor.OptionGroup)
  + [Agregar la opción `RESOURCE_GOVERNOR` al grupo de opciones](ResourceGovernor.Enabling.md#ResourceGovernor.Add)
  + [Asociación del grupo de opciones a su instancia de base de datos](ResourceGovernor.Enabling.md#ResourceGovernor.Apply)
+ [Uso del gobernador de recursos de Microsoft SQL Server para la instancia de RDS para SQL Server](ResourceGovernor.Using.md)
  + [Administración de un grupo de recursos](ResourceGovernor.Using.md#ResourceGovernor.ManageResourcePool)
    + [Creación de un grupo de recursos](ResourceGovernor.Using.md#ResourceGovernor.CreateResourcePool)
    + [Modificación de un grupo de recursos](ResourceGovernor.Using.md#ResourceGovernor.AlterResourcePool)
    + [Eliminación de un grupo de recursos](ResourceGovernor.Using.md#ResourceGovernor.DropResourcePool)
  + [Administración de grupos de cargas de trabajo](ResourceGovernor.Using.md#ResourceGovernor.ManageWorkloadGroups)
    + [Creación de un grupo de carga de trabajo](ResourceGovernor.Using.md#ResourceGovernor.CreateWorkloadGroup)
    + [Modificación del grupo de carga de trabajo](ResourceGovernor.Using.md#ResourceGovernor.AlterWorkloadGroup)
    + [Eliminación de un grupo de carga de trabajo](ResourceGovernor.Using.md#ResourceGovernor.DropWorkloadGroup)
  + [Creación y registro de la función de clasificación](ResourceGovernor.Using.md#ResourceGovernor.ClassifierFunction)
  + [Eliminación de la función de clasificación](ResourceGovernor.Using.md#ResourceGovernor.DropClassifier)
  + [Anulación del registro de la función de clasificación](ResourceGovernor.Using.md#ResourceGovernor.DeregisterClassifier)
  + [Restablecimiento de estadísticas](ResourceGovernor.Using.md#ResourceGovernor.ResetStats)
  + [Cambios de configuración del gobernador de recursos](ResourceGovernor.Using.md#ResourceGovernor.ConfigChanges)
  + [Enlace de TempDB a un grupo de recursos](ResourceGovernor.Using.md#ResourceGovernor.BindTempDB)
  + [Desvinculación de TempDB de un grupo de recursos](ResourceGovernor.Using.md#ResourceGovernor.UnbindTempDB)
  + [Limpieza del gobernador de recursos](ResourceGovernor.Using.md#ResourceGovernor.Cleanup)
+ [Consideraciones para implementaciones multi-AZ](#ResourceGovernor.Considerations)
+ [Consideraciones para réplicas de lectura](#ResourceGovernor.ReadReplica)
+ [Supervisión del gobernador de recursos de Microsoft SQL Server con las vistas del sistema para la instancia de RDS para SQL Server](ResourceGovernor.Monitoring.md)
  + [Estadísticas de tiempo de ejecución del grupo de recursos](ResourceGovernor.Monitoring.md#ResourceGovernor.ResourcePoolStats)
+ [Desactivación del gobernador de recursos de Microsoft SQL Server para la instancia de RDS para SQL Server](ResourceGovernor.Disabling.md)
+ [Prácticas recomendadas para configurar el gobernador de recursos en RDS para SQL Server](ResourceGovernor.BestPractices.md)

## Versiones y regiones compatibles
<a name="ResourceGovernor.SupportedVersions"></a>

Amazon RDS admite el regulador de recursos para las siguientes versiones y ediciones de SQL Server en todas las Regiones de AWS donde RDS para SQL Server esté disponible:
+ Ediciones Developer y Enterprise de SQL Server 2022
+ SQL Server 2019 Enterprise Edition
+ SQL Server 2017 Enterprise Edition
+ SQL Server 2016 Enterprise Edition

## Limitaciones y recomendaciones
<a name="ResourceGovernor.Limitations"></a>

Las siguientes limitaciones y recomendaciones se aplican al gobernador de recursos:
+ Restricciones de edición y servicio:
  + Disponible solo en SQL Server Enterprise Edition.
  + La administración de recursos se limita al motor de base de datos de SQL Server. No se admite el regulador de recursos para servicios de análisis, servicios de integración y servicios de informes.
+ Restricciones de configuración:
  + Debe utilizar los procedimientos almacenados de Amazon RDS para todas las configuraciones.
  + No se admiten las instrucciones DDL nativas ni las configuraciones de la GUI de SQL Server Management Studio.
+ Parámetros de grupos de recursos:
  + No se admiten los nombres de grupos que empiezan por `rds_`.
  + No se permiten las modificaciones de grupos de recursos internos y predeterminados.
  + Para los grupos de recursos definidos por el usuario, no se admiten los siguientes parámetros del grupo de recursos:
    + `MIN_MEMORY_PERCENT`
    + `MIN_CPU_PERCENT`
    + `MIN_IOPS_PER_VOLUME`
    + `AFFINITY`
+ Parámetros del grupo de cargas de trabajo:
  + No se admiten los nombres de grupos de carga de trabajo que empiezan por `rds_`.
  + No se permite la modificación de grupos de carga de trabajo internos.
  + Para el grupo de carga de trabajo predeterminado:
    + Solo se puede modificar el parámetro `REQUEST_MAX_MEMORY_GRANT_PERCENT`.
    + Para el grupo de cargas de trabajo predeterminado, `REQUEST_MAX_MEMORY_GRANT_PERCENT` debe estar entre 1 y 70.
    + Todos los demás parámetros están bloqueados y no se pueden cambiar.
  + Los grupos de carga de trabajo definidos por el usuario permiten modificar todos los parámetros.
+ Limitaciones de la función de clasificación:
  + La función de clasificación enruta las conexiones a grupos de carga de trabajo personalizados en función de criterios específicos (nombre de usuario, base de datos, host o nombre de aplicación).
  + Admite hasta dos grupos de cargas de trabajo definidos por el usuario con sus condiciones de enrutamiento respectivas.
  + Combina el criterio con las condiciones `AND` de cada grupo.
  + Requiere al menos un criterio de enrutamiento por grupo de carga de trabajo.
  + Solo se admiten los métodos de clasificación indicados anteriormente.
  + El nombre de la función debe comenzar con `rg_classifier_`.
  + Asignación grupal predeterminada si no coincide ninguna condición.

# Habilitación del gobernador de recursos de Microsoft SQL Server para la instancia de RDS para SQL Server
<a name="ResourceGovernor.Enabling"></a>

Habilitación del regulador de recursos al agregar la opción `RESOURCE_GOVERNOR` a la instancia de base de datos de RDS para SQL Server. Utilice el siguiente proceso:

1. Cree un nuevo grupo de opciones o elija un grupo de opciones ya existente.

1. Añada la opción `RESOURCE_GOVERNOR` al grupo de opciones.

1. Asocie el grupo de opciones a la instancia de base de datos.

**nota**  
La habilitación del gobernador de recursos a través de un grupo de opciones no requiere reiniciar.

## Creación del grupo de opciones para `RESOURCE_GOVERNOR`
<a name="ResourceGovernor.OptionGroup"></a>

Para habilitar el gobernador de recursos, cree un grupo de opciones o modifique un grupo de opciones que corresponda a la edición y versión de SQL Server de la instancia de base de datos que planea utilizar. Para completar este procedimiento, utilice la Consola de administración de AWS o la AWS CLI.

### Consola
<a name="ResourceGovernor.OptionGroup.Console"></a>

Use el siguiente procedimiento para crear un grupo de opciones para SQL Server Enterprise Edition 2022.

**Para crear el grupo de opciones**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija **Create group**.

1. En la ventana **Create option group** (Crear grupo de opciones), haga lo siguiente:

   1. En **Nombre**, escriba un nombre para el grupo de opciones que sea exclusivo dentro de su cuenta de AWS, como **resource-governor-ee-2022**. El nombre solo puede contener letras, dígitos y guiones.

   1. En **Descripción**, escriba una breve descripción del grupo de opciones, como **RESOURCE\$1GOVERNOR option group for SQL Server EE 2022**. La descripción se utiliza para fines de visualización.

   1. Para **Motor**, elija **sqlserver-ee**.

   1. En **Major engine version (Versión principal dle motor)**, elija **16.00**.

1. Seleccione **Crear**.

### CLI
<a name="ResourceGovernor.OptionGroup.CLI"></a>

El siguiente procedimiento crea un grupo de opciones para SQL Server Enterprise Edition 2022.

**Para crear el grupo de opciones**
+ Ejecute uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o 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"
  ```

## Agregar la opción `RESOURCE_GOVERNOR` al grupo de opciones
<a name="ResourceGovernor.Add"></a>

A continuación, utilice la Consola de administración de AWS o la AWS CLI para agregar la opción `RESOURCE_GOVERNOR` al grupo de opciones.

### Consola
<a name="ResourceGovernor.Add.Console"></a>

**Agregación de la opción RESOURCE\$1GOVERNOR**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija el grupo de opciones que acaba de crear, **resource-governor-ee-2022** en este ejemplo.

1. Elija **Agregar opción**.

1. En **Detalles de la opción**, elija **RESOURCE\$1GOVERNOR** para **Nombre de la opción**.

1. En **Scheduling** (Programación), elija si desea agregar la opción inmediatamente o en el siguiente período de mantenimiento.

1. Elija **Add option** (Agregar opción).

### CLI
<a name="ResourceGovernor.Add.CLI"></a>

**Agregación de la opción de `RESOURCE_GOVERNOR`**
+ Agregue la opción `RESOURCE_GOVERNOR` al grupo de opciones.  
**Example**  

  Para Linux, macOS o 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
  ```

## Asociación del grupo de opciones a su instancia de base de datos
<a name="ResourceGovernor.Apply"></a>

Para asociar el grupo de opciones de `RESOURCE_GOVERNOR` a la instancia de base de datos, use la Consola de administración de AWS o la AWS CLI.

### Consola
<a name="ResourceGovernor.Apply.Console"></a>

Para terminar de activar el gobernador de recursos, asocie el grupo de opciones `RESOURCE_GOVERNOR` a una instancia de base de datos nueva o existente:
+ Para una nueva instancia de base de datos, asóciela cuando inicie la instancia. Para obtener más información, consulte [Creación de una instancia de base de datos de Amazon RDS](USER_CreateDBInstance.md).
+ Para una instancia de base de datos existente, asóciela modificando la instancia. Para obtener más información, consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md).

### CLI
<a name="ResourceGovernor.Apply.CLI"></a>

Puede asociar el grupo de opciones `RESOURCE_GOVERNOR` a una instancia de base de datos nueva o ya existente.

**Creación de una instancia con el grupo de opciones `RESOURCE_GOVERNOR`**
+ Especifique el mismo tipo de motor de base de datos y la misma versión principal que ha utilizado al crear el grupo de opciones.  
**Example**  

  Para Linux, macOS o 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
  ```

**Para modificar una instancia y asociar el grupo de opciones `RESOURCE_GOVERNOR`**
+ Ejecute uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o 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
  ```

# Uso del gobernador de recursos de Microsoft SQL Server para la instancia de RDS para SQL Server
<a name="ResourceGovernor.Using"></a>

Tras agregar la opción de gobernador de recursos al grupo de opciones, el gobernador de recursos aún no está activo por motor de base de datos. Para habilitar completamente el gobernador de recursos, debe utilizar los procedimientos almacenados de RDS para SQL Server a fin de habilitarlo y crear los objetos del gobernador de recursos necesarios. Para obtener más información, consulte [Conexión a la instancia de base de datos de Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md).

En primer lugar, conéctese a la base de datos de SQL Server y, a continuación, llame al RDS correspondiente para los procedimientos almacenados de SQL Server para completar la configuración. Para obtener instrucciones acerca de cómo conectarse a la base de datos, consulte [Conexión a la instancia de base de datos de Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md).

Para obtener instrucciones acerca de cómo llamar a cada procedimiento almacenado, consulte los siguientes temas:

**Topics**
+ [Administración de un grupo de recursos](#ResourceGovernor.ManageResourcePool)
+ [Administración de grupos de cargas de trabajo](#ResourceGovernor.ManageWorkloadGroups)
+ [Creación y registro de la función de clasificación](#ResourceGovernor.ClassifierFunction)
+ [Eliminación de la función de clasificación](#ResourceGovernor.DropClassifier)
+ [Anulación del registro de la función de clasificación](#ResourceGovernor.DeregisterClassifier)
+ [Restablecimiento de estadísticas](#ResourceGovernor.ResetStats)
+ [Cambios de configuración del gobernador de recursos](#ResourceGovernor.ConfigChanges)
+ [Enlace de TempDB a un grupo de recursos](#ResourceGovernor.BindTempDB)
+ [Desvinculación de TempDB de un grupo de recursos](#ResourceGovernor.UnbindTempDB)
+ [Limpieza del gobernador de recursos](#ResourceGovernor.Cleanup)

## Administración de un grupo de recursos
<a name="ResourceGovernor.ManageResourcePool"></a>

### Creación de un grupo de recursos
<a name="ResourceGovernor.CreateResourcePool"></a>

Una vez que el gobernador de recursos esté habilitado en el grupo de opciones, puede crear grupos de recursos personalizados mediante `rds_create_resource_pool`. Estos grupos le permiten asignar porcentajes específicos de CPU, memoria e IOPS a diferentes cargas de trabajo.

**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
```

Se requieren los siguientes parámetros:
+ `@group_name`: es el nombre de un grupo de cargas de trabajo definido por el usuario existente.
+ `@pool_name`: es el nombre definido por el usuario para el grupo de recursos. *pool\$1name* es alfanumérico, puede tener hasta 128 caracteres, debe ser único en una instancia del motor de base de datos y debe cumplir con las reglas de los identificadores de bases de datos.

Los siguientes parámetros son opcionales:
+ `@MAX_CPU_PERCENT`: especifica el ancho de banda medio máximo de la CPU que reciben todas las solicitudes del grupo de recursos cuando hay una contención de la CPU. El *valor* es un número entero con un valor predeterminado de 100. El rango de *valores* permitido es de 1 a 100.
+ `@CAP_CPU_PERCENT`: especifica un límite máximo en el ancho de banda de la CPU que reciben todas las solicitudes del grupo de recursos. Limita el nivel máximo de ancho de banda de la CPU para que sea igual al valor especificado. El *valor* es un número entero con un valor predeterminado de 100. El rango de *valores* permitido es de 1 a 100.
+ `@MAX_MEMORY_PERCENT`: especifica la cantidad máxima de memoria del espacio de trabajo de consultas que pueden utilizar las solicitudes de este grupo de recursos. El *valor* es un número entero con un valor predeterminado de 100. El rango de *valores* permitido es de 1 a 100.
+ `@MAX_IOPS_PER_VOLUME`: especifica el número máximo de operaciones de E/S por segundo (IOPS) por volumen de disco para permitir el grupo de recursos. El rango de *valores* permitido es de 0 a 2^31-1 (2,147,483,647). Especifique 0 para eliminar un límite de IOPS para el grupo. El valor predeterminado es 0.

**Ejemplos**

Ejemplo de creación del grupo de recursos con todos los valores predeterminados:

```
--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
```

Ejemplo de creación de un grupo de recursos con 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
```

### Modificación de un 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;
```

Se requieren los siguientes parámetros:
+ `@pool_name`: es el nombre de un grupo de recursos definido por el usuario existente. No se permite modificar el grupo de recursos predeterminado en Amazon RDS SQL Server.

Se debe especificar al menos uno de los parámetros opcionales:
+ `@MAX_CPU_PERCENT`: especifica el ancho de banda medio máximo de la CPU que reciben todas las solicitudes del grupo de recursos cuando hay una contención de la CPU. El *valor* es un número entero con un valor predeterminado de 100. El rango de *valores* permitido es de 1 a 100.
+ `@CAP_CPU_PERCENT`: especifica un límite máximo en el ancho de banda de la CPU que reciben todas las solicitudes del grupo de recursos. Limita el nivel máximo de ancho de banda de la CPU para que sea igual al valor especificado. El *valor* es un número entero con un valor predeterminado de 100. El rango de *valores* permitido es de 1 a 100.
+ `@MAX_MEMORY_PERCENT`: especifica la cantidad máxima de memoria del espacio de trabajo de consultas que pueden utilizar las solicitudes de este grupo de recursos. El *valor* es un número entero con un valor predeterminado de 100. El rango de *valores* permitido es de 1 a 100.
+ `@MAX_IOPS_PER_VOLUME`: especifica el número máximo de operaciones de E/S por segundo (IOPS) por volumen de disco para permitir el grupo de recursos. El rango de *valores* permitido es de 0 a 2^31-1 (2,147,483,647). Especifique 0 para eliminar un límite de IOPS para el grupo. El valor predeterminado es 0.

**Ejemplos**

```
--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
```

### Eliminación de un grupo de recursos
<a name="ResourceGovernor.DropResourcePool"></a>

**Uso**

```
USE [msdb]
EXEC dbo.rds_drop_resource_pool    
@pool_name=value;
```

El siguiente parámetro es obligatorio:
+ `@pool_name`: es el nombre de un grupo de recursos definido por el usuario existente.

**nota**  
No se permite eliminar un grupo de recursos interno o predeterminado en SQL Server.

**Ejemplos**

```
--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
```

## Administración de grupos de cargas de trabajo
<a name="ResourceGovernor.ManageWorkloadGroups"></a>

Los grupos de carga de trabajo, creados y administrados con `rds_create_workload_group` y `rds_alter_workload_group`, le permiten establecer los niveles de importancia, las concesiones de memoria y otros parámetros para los grupos de consultas.

### Creación de un grupo de carga de trabajo
<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
```

Se requieren los siguientes parámetros:
+ `@pool_name`: es el nombre de un grupo de recursos definido por el usuario existente.
+ `@group_name`: es el nombre de un grupo de cargas de trabajo definido por el usuario existente.

Los siguientes parámetros son opcionales:
+ `@IMPORTANCE`: especifica la importancia relativa de una solicitud en el grupo de cargas de trabajo. El valor predeterminado es `MEDIUM`.
+ `@REQUEST_MAX_MEMORY_GRANT_PERCENT`: especifica la cantidad máxima de memoria del espacio de trabajo de consultas que una sola solicitud puede ocupar del grupo. El *valor* es un porcentaje del tamaño del grupo de recursos definido por `MAX_MEMORY_PERCENT`. El valor predeterminado es 25.
+ `@REQUEST_MAX_CPU_TIME_SEC`: especifica el tiempo máximo de CPU (en segundos) que puede utilizar una solicitud por lotes. El *valor* debe ser 0 o un número entero positivo. El *valor* predeterminado es 0, lo que significa ilimitado.
+ `@REQUEST_MEMORY_GRANT_TIMEOUT_SEC`: especifica el tiempo máximo, en segundos, que una consulta puede esperar hasta que esté disponible una concesión de memoria de la memoria del espacio de trabajo de consultas. El *valor* debe ser 0 o un número entero positivo. La configuración predeterminada del *valor*, 0, utiliza un cálculo interno basado en el costo de la consulta para determinar el tiempo máximo.
+ `@MAX_DOP`: especifica el grado máximo de paralelismo (`MAXDOP`) para la ejecución de consultas paralelas. El rango permitido para el *valor* es de 0 a 64. La configuración predeterminada para el *valor*, 0, usa la configuración global.
+ `@GROUP_MAX_REQUESTS`: especifica el número máximo de solicitudes simultáneas que se pueden ejecutar en el grupo de carga de trabajo. El *valor* debe ser 0 o un número entero positivo. La configuración predeterminada para el *valor* es 0 y permite solicitudes ilimitadas.
+ `@pool_name`: asocia el grupo de cargas de trabajo al grupo de recursos definido por el usuario identificado por *pool\$1name* o al grupo de recursos de `default`. Si no se proporciona *pool\$1name*, el grupo de cargas de trabajo se asocia al grupo `default` integrado.

**Ejemplos**

```
--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
```

### Modificación del grupo de carga de trabajo
<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
```

Se requieren los siguientes parámetros:
+ `@group_name`: es el nombre de un grupo de cargas de trabajo definido por el usuario predeterminado o existente.

**nota**  
Solo se puede cambiar el parámetro `REQUEST_MAX_MEMORY_GRANT_PERCENT` del grupo de cargas de trabajo predeterminado. Para el grupo de cargas de trabajo predeterminado, `REQUEST_MAX_MEMORY_GRANT_PERCENT` debe estar entre 1 y 70. No se puede modificar ningún otro parámetro en el grupo de cargas de trabajo predeterminado. Todos los parámetros se pueden modificar en el grupo de cargas de trabajo definido por el usuario.

Los siguientes parámetros son opcionales:
+ `@IMPORTANCE`: especifica la importancia relativa de una solicitud en el grupo de cargas de trabajo. El valor predeterminado es MEDIO.
+ `@REQUEST_MAX_MEMORY_GRANT_PERCENT`: especifica la cantidad máxima de memoria del espacio de trabajo de consultas que una sola solicitud puede ocupar del grupo. El *valor* es un porcentaje del tamaño del grupo de recursos definido por `MAX_MEMORY_PERCENT`. El valor predeterminado es 25. En Amazon RDS, `REQUEST_MAX_MEMORY_GRANT_PERCENT` debe estar entre 1 y 70.
+ `@REQUEST_MAX_CPU_TIME_SEC`: especifica el tiempo máximo de CPU (en segundos) que puede utilizar una solicitud por lotes. El *valor* debe ser 0 o un número entero positivo. El *valor* predeterminado es 0, lo que significa ilimitado.
+ `@REQUEST_MEMORY_GRANT_TIMEOUT_SEC`: especifica el tiempo máximo, en segundos, que una consulta puede esperar hasta que esté disponible una concesión de memoria de la memoria del espacio de trabajo de consultas. El *valor* debe ser 0 o un número entero positivo. La configuración predeterminada del *valor*, 0, utiliza un cálculo interno basado en el costo de la consulta para determinar el tiempo máximo.
+ `@MAX_DOP`: especifica el grado máximo de paralelismo (MAXDOP) para la ejecución de consultas paralelas. El rango permitido para el *valor* es de 0 a 64. La configuración predeterminada para el *valor*, 0, usa la configuración global.
+ `@GROUP_MAX_REQUESTS`: especifica el número máximo de solicitudes simultáneas que se pueden ejecutar en el grupo de carga de trabajo. El *valor* debe ser 0 o un número entero positivo. La configuración predeterminada para el *valor* es 0 y permite solicitudes ilimitadas.
+ `@pool_name`: asocia el grupo de cargas de trabajo al grupo de recursos definido por el usuario identificado por *pool\$1name*.

**Ejemplos**

Ejemplo para modificar el cambio de grupo de cargas de trabajo predeterminado 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';
```

Ejemplo de modificación de un grupo de cargas de trabajo no predeterminado:

```
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;
```

Ejemplo de traslado de un grupo de cargas de trabajo no predeterminado a otro 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
```

### Eliminación de un grupo de carga de trabajo
<a name="ResourceGovernor.DropWorkloadGroup"></a>

**Uso**

```
EXEC msdb.dbo.rds_drop_workload_group    
@group_name = value
```

Se requieren los siguientes parámetros:
+ `@group_name`: es el nombre de un grupo de cargas de trabajo definido por el usuario existente.

**Ejemplos**

```
--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
```

## Creación y registro de la función de clasificación
<a name="ResourceGovernor.ClassifierFunction"></a>

Este procedimiento crea una función de clasificación del gobernador de recursos en la base de datos principal que enruta las conexiones a grupos de carga de trabajo personalizados en función de criterios específicos (nombre de usuario, base de datos, host o nombre de aplicación). Si el gobernador de recursos está activado y se especifica una función de clasificación en la configuración del gobernador de recursos, el resultado de la función determina el grupo de carga de trabajo utilizado para las nuevas sesiones. En ausencia de una función de clasificación, todas las sesiones se clasifican en el grupo `default`.

**Características:**
+ Admite hasta dos grupos de cargas de trabajo con sus condiciones de enrutamiento respectivas.
+ Combina el criterio con las condiciones `AND` de cada grupo.
+ Requiere al menos un criterio de enrutamiento por grupo de carga de trabajo.
+ El nombre de la función debe comenzar con `rg_classifier_`.
+ Asignación grupal predeterminada si no coincide ninguna condición.

La función de clasificación tiene las siguientes características y comportamientos:
+ La función se define en el ámbito del servidor (en la base de datos principal).
+ La función se define mediante un enlace de esquema.
+ La función se evalúa para cada nueva sesión, incluso cuando la agrupación de conexiones está habilitada.
+ La función devuelve el contexto del grupo de carga de trabajo de la sesión. La sesión se asigna al grupo de carga de trabajo devuelto por el clasificador durante toda la sesión.
+ Si la función devuelve NULL, el valor predeterminado o el nombre de un grupo de cargas de trabajo inexistente, se asigna a la sesión el contexto del grupo de cargas de trabajo predeterminado. La sesión también recibe el contexto predeterminado si la función produce un error por cualquier motivo.
+ Puede crear distintas funciones de clasificación. Sin embargo, SQL Server solo permite registrar una función de clasificación a la vez.
+ La función de clasificación no se puede eliminar a menos que se elimine su estado de clasificación mediante el procedimiento de anulación del registro (`EXEC dbo.msdb.rds_alter_resource_governor_configuration @deregister_function = 1;`) que establece el nombre de la función en NULL o que se registre otra función de clasificación mediante (`EXEC dbo.msdb.rds_alter_resource_governor_configuration @classifier_function = <function_name>;`)
+ En ausencia de una función de clasificación, todas las sesiones se clasifican en el grupo predeterminado.
+ No puede modificar una función de clasificación mientras se haga referencia a ella en la configuración del gobernador de recursos. Sin embargo, puede modificar la configuración para utilizar otra función de clasificación diferente. Si desea realizar cambios en el clasificador, considere la posibilidad de crear un par de funciones de clasificación. Por ejemplo, puede crear `rg_classifier_a` y `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
```

Se requieren los siguientes parámetros:
+ `@function_name`: nombre de la función de clasificación. Debe empezar con `rg_classifier_`
+ `@workload_group1`: nombre del primer grupo de carga de trabajo

Los siguientes parámetros son opcionales:

(Debe especificarse al menos uno de estos criterios para el grupo 1)
+ `@user_name1`: nombre de inicio de sesión para el grupo 1
+ `@db_name1`: nombre de la base de datos del grupo 1
+ `@host_name1`: nombre de host del grupo 1
+ `@app_name1`: nombre de la aplicación para el grupo 1

(Si se especifica el grupo 2, se debe proporcionar al menos un criterio)
+ `@workload_group2`: nombre del segundo grupo de carga de trabajo
+ `@user_name2`: nombre de inicio de sesión para el grupo 2
+ `@db_name2`: nombre de la base de datos del grupo 2
+ `@host_name2`: nombre de host del grupo 2
+ `@app_name2`: nombre de la aplicación para el grupo 2

**nota**  
Las cuentas del sistema, las bases de datos, las aplicaciones y el host están restringidos.

**Ejemplos**

Ejemplo básico con un grupo de cargas de trabajo:

```
/*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;
```

## Eliminación de la función de clasificación
<a name="ResourceGovernor.DropClassifier"></a>

**Uso**

```
USE [msdb]
EXEC dbo.rds_drop_classifier_function
@function_name = value;
```

El siguiente parámetro es obligatorio:
+ `@function_name`: es el nombre de una función de clasificación existente definida por el usuario

**Ejemplo**

```
EXEC msdb.dbo.rds_drop_classifier_function
@function_name = 'rg_classifier_b';
```

## Anulación del registro de la función de clasificación
<a name="ResourceGovernor.DeregisterClassifier"></a>

Utilice este procedimiento para anular el registro de la función de clasificación. Tras anular el registro de la función, las nuevas sesiones se asignan automáticamente al grupo de carga de trabajo predeterminado.

**Uso**

```
USE [msdb]
EXEC dbo.rds_alter_resource_governor_configuration    
@deregister_function = 1;
```

Para cancelar el registro, se requiere el siguiente parámetro:
+ `@deregister_function` debe ser 1

**Ejemplo**

```
EXEC msdb.dbo.rds_alter_resource_governor_configuration 
    @deregister_function = 1;
GO

-- Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
```

## Restablecimiento de estadísticas
<a name="ResourceGovernor.ResetStats"></a>

Las estadísticas del gobernador de recursos son acumulativas desde el último reinicio del servidor. Si necesita recopilar estadísticas a partir de un momento determinado, puede restablecerlas mediante el siguiente procedimiento almacenado de Amazon RDS.

**Uso**

```
USE [msdb]
EXEC dbo.rds_alter_resource_governor_configuration  
@reset_statistics = 1;
```

Para restablecer las estadísticas es necesario el siguiente parámetro:
+ `@reset_statistics` debe ser 1

## Cambios de configuración del gobernador de recursos
<a name="ResourceGovernor.ConfigChanges"></a>

Cuando el gobernador de recursos no está habilitado, `rds_alter_resource_governor_configuration` habilita el gobernador de recursos. La habilitación del gobernador de recursos tiene los siguientes resultados:
+ La función de clasificación, si la hay, se ejecuta para las sesiones nuevas y se asigna a los grupos de carga de trabajo.
+ Los límites de recursos que se especifican en la configuración del gobernador de recursos se respetan y se hacen cumplir.
+ Los límites de recursos que se especifican en la configuración del gobernador de recursos se respetan y se hacen cumplir.
+ Las solicitudes que existían antes de habilitar el gobernador de recursos pueden verse afectadas por cualquier cambio de configuración realizado cuando el gobernador de recursos esté activado.
+ Las solicitudes existentes, antes de habilitar el gobernador de recursos, pueden verse afectadas por cualquier cambio de configuración realizado cuando el gobernador de recursos esté activado.
+ En RDS para SQL Server, `EXEC msdb.dbo.rds_alter_resource_governor_configuration` se debe ejecutar para que cualquier cambio en la configuración del gobernador de recursos surta efecto. 

**Uso**

```
USE [msdb]
EXEC dbo.rds_alter_resource_governor_configuration
```

## Enlace de TempDB a un grupo de recursos
<a name="ResourceGovernor.BindTempDB"></a>

Puede vincular metadatos optimizados para memoria tempdb a un grupo de recursos específico utilizando `rds_bind_tempdb_metadata_to_resource_pool` en Amazon RDS SQL Server versión 2019 y versiones posteriores.

**nota**  
La característica de metadatos tempdb optimizada para la memoria debe estar habilitada antes de vincular los metadatos tempdb al grupo de recursos. Para habilitar esta característica en Amazon RDS, es un parámetro `tempdb metadata memory-optimized` estático.

Habilite el parámetro estático en Amazon RDS y reinicie sin conmutación por error para que el parámetro surta efecto:

```
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;
```

El siguiente parámetro es obligatorio:
+ `@pool_name`: es el nombre de un grupo de recursos definido por el usuario existente.

**nota**  
Este cambio también requiere que se reinicie el servicio sql sin que se produzca la conmutación por error, incluso si la característica de metadatos TempDB optimizada para la memoria ya está habilitada.

## Desvinculación de TempDB de un grupo de recursos
<a name="ResourceGovernor.UnbindTempDB"></a>

Desvincule los metadatos optimizados para la memoria tempdb de un grupo de recursos.

**nota**  
Este cambio también requiere que se reinicie el servicio sql sin que se produzca la conmutación por error

**Uso**

```
USE [msdb]
EXEC dbo.rds_unbind_tempdb_metadata_from_resource_pool
```

## Limpieza del gobernador de recursos
<a name="ResourceGovernor.Cleanup"></a>

Este procedimiento consiste en limpiar todos los objetos asociados después de haber eliminado la opción del gobernador de recursos del grupo de opciones. Esto desactiva el gobernador de recursos, restablece el grupo de cargas de trabajo predeterminado a su configuración predeterminada y elimina los grupos de carga de trabajo personalizados, los grupos de recursos y las funciones de clasificación.

**Características clave**
+ Restablece el grupo de cargas de trabajo predeterminado a la configuración predeterminada
+ Desactiva el gobernador de recursos
+ Elimina los grupos de carga de trabajo personalizados
+ Elimina los grupos de recursos personalizados
+ Elimina funciones de clasificación
+ Elimina el enlace del grupo de recursos tempdb si está activado

**importante**  
Esta limpieza puede provocar un error si hay sesiones activas en el grupo de carga de trabajo. Espere a que finalicen las sesiones activas o finalice las sesiones activas según sus necesidades empresariales. Se recomienda ejecutar esta operación durante el periodo de mantenimiento.   
Esta limpieza puede provocar un error si un grupo de recursos estaba enlazado a tempdb y aún no se ha realizado el reinicio sin conmutación por error. Si ha enlazado un grupo de recursos a tempdb o ha desenlazado un grupo de recursos de tempdb anteriormente, reinicie sin conmutación por error para que el cambio se haga efectivo. Se recomienda ejecutar esta operación durante el periodo de mantenimiento.

**Uso**

```
USE [msdb]
EXEC dbo.rds_cleanup_resource_governor
```

## Consideraciones para implementaciones multi-AZ
<a name="ResourceGovernor.Considerations"></a>

RDS para SQL Server replica el gobernador de recursos en una instancia secundaria de una implementación multi-AZ. Puede comprobar cuándo se modificó por última vez con la instancia secundaria y el nuevo regulador de recursos.

Utilice la siguiente consulta para comprobar `last_sync_time` de la replicación:

```
SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();
```

En los resultados de la consulta, si el tiempo de sincronización ha pasado el tiempo de actualización o creación del gobernador de recursos, el gobernador de recursos se sincroniza con el secundario.

Para realizar una conmutación por error manual de la base de datos para confirmar que el gobernador de recursos se replica, espere para `last_sync_time` a que se actualice. A continuación, proceda con la conmutación por error de multi-AZ.

## Consideraciones para réplicas de lectura
<a name="ResourceGovernor.ReadReplica"></a>
+ Para réplicas de SQL Server que estén en la misma región que la instancia de base de datos de origen, utilice el mismo grupo de opciones que el origen. Los cambios en el grupo de opciones se propagan a las réplicas inmediatamente, independientemente de los periodos de mantenimiento.
+ Cuando crea una réplica entre regiones de SQL Server, RDS crea un grupo de opciones dedicado para ella.
+ No puede eliminar una réplica entre regiones de SQL Server desde su grupo de opciones dedicado. Ninguna otra instancia de base de datos puede utilizar el grupo de opciones dedicado para una réplica entre regiones de SQL Server.
+ La opción de gobernador de recursos es una opción no replicada. Solo puede agregar o quitar opciones no replicadas de un grupo de opciones dedicado.
+ Al promocionar una réplica de lectura entre regiones de SQL Server, la réplica de lectura promocionada se comporta igual que las otras instancias de base de datos de SQL Server, incluida la administración de sus opciones.

**nota**  
Cuando utilice el regulador de recursos en una réplica de lectura, debe asegurarse manualmente de que el gobernador de recursos se haya configurado en la réplica de lectura mediante procedimientos almacenados de Amazon RDS después de agregar la opción al grupo de opciones. Las configuraciones del gobernador de recursos no se replican automáticamente en la réplica de lectura. Además, la carga de trabajo de la réplica de lectura suele ser diferente a la de la instancia principal. Por lo tanto, se recomienda aplicar la configuración de recursos a la réplica en función de la carga de trabajo y el tipo de instancia. Puede ejecutar estos procedimientos almacenados de Amazon RDS en la réplica de lectura de forma independiente para configurar el gobernador de recursos en la réplica de lectura.

# Supervisión del gobernador de recursos de Microsoft SQL Server con las vistas del sistema para la instancia de RDS para SQL Server
<a name="ResourceGovernor.Monitoring"></a>

Las estadísticas del gobernador de recursos son acumulativas desde el último reinicio del servidor. Si necesita recopilar estadísticas a partir de un momento determinado, puede restablecerlas mediante el siguiente procedimiento almacenado de Amazon RDS:

```
EXEC msdb.dbo.rds_alter_resource_governor_configuration  
@reset_statistics = 1;
```

## Estadísticas de tiempo de ejecución del grupo de recursos
<a name="ResourceGovernor.ResourcePoolStats"></a>

Para cada grupo de recursos, el gobernador de recursos rastrea el uso de la CPU y la memoria, los eventos de falta de memoria, las concesiones de memoria, E/S y otras estadísticas. Para obtener más información, 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).

La siguiente consulta devuelve un subconjunto de estadísticas disponibles para todos los 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;
```

# Desactivación del gobernador de recursos de Microsoft SQL Server para la instancia de RDS para SQL Server
<a name="ResourceGovernor.Disabling"></a>

Al desactivar el gobernador de recursos en RDS para SQL Server, el servicio deja de administrar los recursos de carga de trabajo. Antes de desactivar el gobernador de recursos, revise cómo afecta esto a las conexiones y configuraciones de la base de datos.

La desactivación del gobernador de recursos tiene los siguientes resultados:
+ La función de clasificación no se ejecuta cuando se abre una nueva conexión.
+ Las conexiones nuevas se clasifican automáticamente en el grupo de carga de trabajo predeterminado.
+ Todos los ajustes del grupo de carga de trabajo y del grupo de recursos existentes se restablecerán a sus valores predeterminados.
+ No se activa ningún evento cuando se alcanzan los límites.
+ Se pueden realizar cambios en la configuración del gobernador de recursos, pero los cambios no surten efecto hasta que el gobernador de recursos esté habilitado.

Para desactivar el gobernador de recursos, quite la opción `RESOURCE_GOVERNOR` de su grupo de opciones.

## Consola
<a name="ResourceGovernor.Disabling.Console"></a>

El procedimiento siguiente quita la opción `RESOURCE_GOVERNOR`.

**Para eliminar la opción RESOURCE\$1GOVERNOR de su grupo de opciones**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija el grupo de opciones con la opción `RESOURCE_GOVERNOR` (`resource-governor-ee-2022` en los ejemplos anteriores).

1. Elija **Delete option (Eliminar opción)**.

1. En **Eliminar opciones**, elija **RESOURCE\$1GOVERNOR** para **Opciones para eliminar**.

1. En **Apply immediately** (Aplicar inmediatamente), seleccione **Yes** (Sí) para eliminar la opción inmediatamente o **No** para eliminarla en el siguiente período de mantenimiento.

1. Elija **Delete** (Eliminar).

## CLI
<a name="ResourceGovernor.Disabling.CLI"></a>

El procedimiento siguiente quita la opción `RESOURCE_GOVERNOR`.

**Para eliminar la opción RESOURCE\$1GOVERNOR de su grupo de opciones**
+ Ejecute uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o 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ácticas recomendadas para configurar el gobernador de recursos en RDS para SQL Server
<a name="ResourceGovernor.BestPractices"></a>

Para controlar el consumo de recursos, RDS para SQL Server admite el gobernador de recursos de Microsoft SQL Server. Las siguientes prácticas recomendadas lo ayudan a evitar problemas de configuración comunes y a optimizar el rendimiento de la base de datos.

1. La configuración del gobernador de recursos se almacena en la base de datos `master`. Se recomienda guardar siempre una copia de los scripts de configuración del gobernador de recursos de forma independiente.

1. La función de clasificación prolonga el tiempo de procesamiento del inicio de sesión, por lo que se recomienda evitar una lógica compleja en la clasificación. Una función demasiado compleja puede provocar retrasos en los inicios de sesión o tiempos de espera de la conexión, incluidas las sesiones de automatización de Amazon RDS. Esto puede afectar a la capacidad de la automatización de Amazon RDS para supervisar el estado de la instancia. Por lo tanto, siempre se recomienda probar la función de clasificación en un entorno de preproducción antes de implementarla en entornos de producción.

1. Evite establecer valores altos (superiores a 70) para `REQUEST_MAX_MEMORY_GRANT_PERCENT` en los grupos de carga de trabajo, ya que esto puede impedir que la instancia de la base de datos asigne suficiente memoria para otras consultas simultáneas, lo que podría provocar errores de tiempo de espera en la concesión de memoria (error 8645). Por el contrario, si se establece este valor demasiado bajo (inferior a 1) o en 0, es posible que las consultas que requieren espacio de trabajo de memoria (como las que implican operaciones de clasificación o hash) se ejecuten correctamente en los grupos de carga de trabajo definidos por el usuario. RDS impone estos límites al restringir los valores entre 1 y 70 en los grupos de carga de trabajo predeterminados.

1. Para vincular tempdb a un grupo de recursos, después de vincular los metadatos tempdb optimizados para la memoria a un grupo, el grupo podría alcanzar su configuración máxima y cualquier consulta que utilice `tempdb` podría producir un error de memoria insuficiente. En determinadas circunstancias, el SQL Server podría detenerse si se produce un error de memoria insuficiente. Para reducir la posibilidad de que esto ocurra, establezca el `MAX_MEMORY_PERCENT` del grupo de memoria en un valor alto.