

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