

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo del gestore delle risorse di Microsoft SQL Server per l'istanza RDS per SQL Server
<a name="ResourceGovernor.Using"></a>

Dopo aver aggiunto l'opzione Resource Governor al gruppo di opzioni, Resource Governor non è ancora attivo a livello del motore di database. Per abilitare completamente il resource governor, è necessario utilizzare RDS per le stored procedure di SQL Server per abilitarlo e creare gli oggetti Resource Governor necessari. Per ulteriori informazioni, consulta [Connessione all’istanza database Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md).

Innanzitutto, connettiti al database di SQL Server, quindi richiama le stored procedure RDS per SQL Server appropriate per completare la configurazione. Per istruzioni sulla connessione al tuo database, consulta [Connessione all’istanza database Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md).

Per istruzioni su come chiamare ciascuna stored procedure, consulta i seguenti argomenti:

**Topics**
+ [Gestisci il pool di risorse](#ResourceGovernor.ManageResourcePool)
+ [Gestisci i gruppi di carichi di lavoro](#ResourceGovernor.ManageWorkloadGroups)
+ [Crea e registra la funzione di classificazione](#ResourceGovernor.ClassifierFunction)
+ [Funzione di classificazione Drop](#ResourceGovernor.DropClassifier)
+ [De-register funzione di classificazione](#ResourceGovernor.DeregisterClassifier)
+ [Reimposta le statistiche](#ResourceGovernor.ResetStats)
+ [Modifiche alla configurazione del gestore delle risorse](#ResourceGovernor.ConfigChanges)
+ [Associa TempDB a un pool di risorse](#ResourceGovernor.BindTempDB)
+ [Scollegare TempDB da un pool di risorse](#ResourceGovernor.UnbindTempDB)
+ [Cleanup Resource Governor](#ResourceGovernor.Cleanup)

## Gestisci il pool di risorse
<a name="ResourceGovernor.ManageResourcePool"></a>

### Crea un pool di risorse
<a name="ResourceGovernor.CreateResourcePool"></a>

Una volta abilitato il gestore delle risorse nel gruppo di opzioni, è possibile creare pool di risorse personalizzati utilizzando`rds_create_resource_pool`. Questi pool consentono di allocare percentuali specifiche di CPU, memoria e IOPS a diversi carichi di lavoro.

**Utilizzo**

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

I parametri seguenti sono obbligatori:
+ `@group_name`- È il nome di un gruppo di carichi di lavoro esistente definito dall'utente.
+ `@pool_name`- È il nome definito dall'utente per il pool di risorse. {{pool\_name}}è alfanumerico, può contenere fino a 128 caratteri, deve essere univoco all'interno di un'istanza di Database Engine e deve rispettare le regole per gli identificatori del database.

I parametri seguenti sono facoltativi:
+ `@MAX_CPU_PERCENT`- Specifica la larghezza di banda media massima della CPU ricevuta da tutte le richieste nel pool di risorse in caso di conflitto tra CPU. {{value}}è un numero intero con un'impostazione predefinita di 100. L'intervallo consentito per {{value}} è compreso tra 1 e 100.
+ `@CAP_CPU_PERCENT`- Specifica un limite massimo alla larghezza di banda della CPU ricevuta da tutte le richieste nel pool di risorse. Limita il livello massimo di larghezza di banda della CPU in modo che corrisponda al valore specificato. {{value}}è un numero intero con un'impostazione predefinita pari a 100. L'intervallo consentito per {{value}} è compreso tra 1 e 100.
+ `@MAX_MEMORY_PERCENT`- Specifica la quantità massima di memoria dell'area di lavoro delle query che le richieste in questo pool di risorse possono utilizzare. {{value}}è un numero intero con un'impostazione predefinita di 100. L'intervallo consentito per {{value}} è compreso tra 1 e 100.
+ `@MAX_IOPS_PER_VOLUME`- Specifica il numero massimo di I/O operazioni al secondo (IOPS) per volume del disco per consentire il pool di risorse. L'intervallo consentito per {{value}} è compreso tra 0 e 2^31-1 (2.147.483.647). Specificare 0 per rimuovere un limite IOPS per il pool. Il valore predefinito è 0.

**Esempi**

Esempio di creazione di un pool di risorse con tutti i valori predefiniti:

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

Esempio di creazione di un pool di risorse con diversi parametri specificati:

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

### Modifica il pool di risorse
<a name="ResourceGovernor.AlterResourcePool"></a>

**Utilizzo**

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

I parametri seguenti sono obbligatori:
+ `@pool_name`- È il nome di un pool di risorse esistente definito dall'utente. La modifica del pool di risorse predefinito non è consentita in Amazon RDS SQL Server.

È necessario specificare almeno uno dei parametri opzionali:
+ `@MAX_CPU_PERCENT`- Specifica la larghezza di banda media massima della CPU ricevuta da tutte le richieste nel pool di risorse in caso di conflitto tra CPU. {{value}}è un numero intero con un'impostazione predefinita di 100. L'intervallo consentito per {{value}} è compreso tra 1 e 100.
+ `@CAP_CPU_PERCENT`- Specifica un limite massimo alla larghezza di banda della CPU ricevuta da tutte le richieste nel pool di risorse. Limita il livello massimo di larghezza di banda della CPU in modo che corrisponda al valore specificato. {{value}}è un numero intero con un'impostazione predefinita pari a 100. L'intervallo consentito per {{value}} è compreso tra 1 e 100.
+ `@MAX_MEMORY_PERCENT`- Specifica la quantità massima di memoria dell'area di lavoro delle query che le richieste in questo pool di risorse possono utilizzare. {{value}}è un numero intero con un'impostazione predefinita di 100. L'intervallo consentito per {{value}} è compreso tra 1 e 100.
+ `@MAX_IOPS_PER_VOLUME`- Specifica il numero massimo di I/O operazioni al secondo (IOPS) per volume del disco per consentire il pool di risorse. L'intervallo consentito per {{value}} è compreso tra 0 e 2^31-1 (2.147.483.647). Specificare 0 per rimuovere un limite IOPS per il pool. Il valore predefinito è 0.

**Esempi**

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

### Elimina il pool di risorse
<a name="ResourceGovernor.DropResourcePool"></a>

**Utilizzo**

```
USE [msdb]
EXEC dbo.rds_drop_resource_pool    
@pool_name=value;
```

Il parametro seguente è obbligatorio:
+ `@pool_name`- È il nome di un pool di risorse esistente definito dall'utente.

**Nota**  
L'eliminazione del pool di risorse interno o predefinito non è consentita in SQL Server.

**Esempi**

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

## Gestisci i gruppi di carichi di lavoro
<a name="ResourceGovernor.ManageWorkloadGroups"></a>

I gruppi di carico di lavoro, creati e gestiti con `rds_create_workload_group` e`rds_alter_workload_group`, consentono di impostare livelli di importanza, concessioni di memoria e altri parametri per gruppi di query.

### Crea un gruppo di carichi di lavoro
<a name="ResourceGovernor.CreateWorkloadGroup"></a>

**Utilizzo**

```
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, 
@GROUP_MAX_TEMPDB_DATA_MB = value, 
@GROUP_MAX_TEMPDB_DATA_PERCENT = value, 
@pool_name = value
```

I parametri seguenti sono obbligatori:
+ `@pool_name`- È il nome di un pool di risorse esistente definito dall'utente.
+ `@group_name`- È il nome di un gruppo di carichi di lavoro definito dall'utente esistente.

I parametri seguenti sono facoltativi:
+ `@IMPORTANCE`- Specifica l'importanza relativa di una richiesta nel gruppo di carichi di lavoro. Il valore predefinito è `MEDIUM`.
+ `@REQUEST_MAX_MEMORY_GRANT_PERCENT`- Specifica la quantità massima di memoria dell'area di lavoro delle query che una singola richiesta può occupare dal pool. {{value}}è una percentuale della dimensione del pool di risorse definita da. `MAX_MEMORY_PERCENT` Il valore predefinito è 25.
+ `@REQUEST_MAX_CPU_TIME_SEC`- Specifica la quantità massima di tempo di CPU, in secondi, che può essere utilizzata da una richiesta batch. {{value}}deve essere 0 o un numero intero positivo. L'impostazione predefinita per {{value}} è 0, che significa illimitata.
+ `@REQUEST_MEMORY_GRANT_TIMEOUT_SEC`- Specifica il tempo massimo, in secondi, in cui una query può attendere che una concessione di memoria dalla memoria del workspace della query diventi disponibile. {{value}}deve essere 0 o un numero intero positivo. L'impostazione predefinita per {{value}} 0 utilizza un calcolo interno basato sul costo della query per determinare il tempo massimo.
+ `@MAX_DOP`- Specifica il grado massimo di parallelismo (`MAXDOP`) per l'esecuzione parallela delle query. L'intervallo consentito per {{value}} è compreso tra 0 e 64. L'impostazione predefinita per {{value}} 0 utilizza l'impostazione globale.
+ `@GROUP_MAX_REQUESTS`= Specifica il numero massimo di richieste simultanee che possono essere eseguite nel gruppo di carico di lavoro. {{value}}deve essere 0 o un numero intero positivo. L'impostazione predefinita per {{value}} è 0 e consente un numero illimitato di richieste.
+ `@GROUP_MAX_TEMPDB_DATA_MB`— Specifica la quantità massima di spazio dati tempdb, in megabyte, che un gruppo di carichi di lavoro può consumare. {{value}}deve essere 0, un numero positivo o NULL. Sono consentiti valori frazionari. Quando il valore è 0, le allocazioni di spazio tempdb per sessioni nel gruppo di carico di lavoro non sono consentite. Quando un valore non è impostato, Resource Governor non limita il consumo di spazio tempdb da parte del gruppo di carico di lavoro. Questo parametro è disponibile in SQL Server 2025 e versioni successive.
+ `@GROUP_MAX_TEMPDB_DATA_PERCENT`— Specifica la quantità massima di spazio dati tempdb che un gruppo di carichi di lavoro può consumare, in percentuale della dimensione massima di tempdb. {{value}}deve essere compreso tra 0 e 100 o NULL. Sono consentiti valori frazionari. Quando il valore è 0, le allocazioni di spazio tempdb per sessioni nel gruppo di carico di lavoro non sono consentite. Quando un valore non è impostato, Resource Governor non limita il consumo di spazio tempdb da parte del gruppo di carico di lavoro. Quando `GROUP_MAX_TEMPDB_DATA_MB` è impostato o quando la dimensione massima di tempdb non è definita, non ha effetto. `GROUP_MAX_TEMPDB_DATA_PERCENT` Questo parametro è disponibile in SQL Server 2025 e versioni successive.
+ `@pool_name`= Associa il gruppo di carico di lavoro al pool di risorse definito dall'utente identificato da {{pool\_name}} o con il pool di risorse. `default` Se {{pool\_name}} non viene fornito, il gruppo di carico di lavoro è associato al pool integrato. `default`

**Esempi**

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

Esempio di creazione di un gruppo di carichi di lavoro con governance tempdb (SQL Server 2025 e versioni successive):

```
-- Create workload group with tempdb space limits
USE msdb;
EXEC dbo.rds_create_workload_group
    @group_name = 'etl_workload',
    @IMPORTANCE = 'MEDIUM',
    @REQUEST_MAX_MEMORY_GRANT_PERCENT = 25,
    @MAX_DOP = 4,
    @GROUP_MAX_TEMPDB_DATA_MB = 2048,
    @GROUP_MAX_TEMPDB_DATA_PERCENT = 30,
    @pool_name = 'etl_pool';

-- Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

-- Validate configuration
SELECT name, group_max_tempdb_data_mb, group_max_tempdb_data_percent
FROM sys.resource_governor_workload_groups
WHERE name = 'etl_workload';
```

### Modifica gruppo di carico di lavoro
<a name="ResourceGovernor.AlterWorkloadGroup"></a>

**Utilizzo**

```
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,
    @GROUP_MAX_TEMPDB_DATA_MB = value,
    @GROUP_MAX_TEMPDB_DATA_PERCENT = value,
    @pool_name = value
```

I parametri seguenti sono obbligatori:
+ `@group_name`- È il nome del gruppo di carico di lavoro predefinito o esistente definito dall'utente.

**Nota**  
È supportata la modifica del solo `REQUEST_MAX_MEMORY_GRANT_PERCENT` parametro nel gruppo di carico di lavoro predefinito. Per il gruppo di carico di lavoro predefinito, `REQUEST_MAX_MEMORY_GRANT_PERCENT` deve essere compreso tra 1 e 70. Nessun altro parametro può essere modificato nel gruppo di carico di lavoro predefinito. Tutti i parametri possono essere modificati nel gruppo di carico di lavoro definito dall'utente.

I parametri seguenti sono facoltativi:
+ `@IMPORTANCE`- Specifica l'importanza relativa di una richiesta nel gruppo di carico di lavoro. Il valore predefinito è MEDIUM.
+ `@REQUEST_MAX_MEMORY_GRANT_PERCENT`- Specifica la quantità massima di memoria dell'area di lavoro delle query che una singola richiesta può occupare dal pool. {{value}}è una percentuale della dimensione del pool di risorse definita da. `MAX_MEMORY_PERCENT` Il valore predefinito è 25. Su Amazon RDS, `REQUEST_MAX_MEMORY_GRANT_PERCENT` deve essere compreso tra 1 e 70.
+ `@REQUEST_MAX_CPU_TIME_SEC`- Specifica la quantità massima di tempo di CPU, in secondi, che può essere utilizzata da una richiesta batch. {{value}}deve essere 0 o un numero intero positivo. L'impostazione predefinita per {{value}} è 0, che significa illimitata.
+ `@REQUEST_MEMORY_GRANT_TIMEOUT_SEC`- Specifica il tempo massimo, in secondi, in cui una query può attendere che una concessione di memoria dalla memoria del workspace della query diventi disponibile. {{value}}deve essere 0 o un numero intero positivo. L'impostazione predefinita per {{value}} 0 utilizza un calcolo interno basato sul costo della query per determinare il tempo massimo.
+ `@MAX_DOP`- Specifica il grado massimo di parallelismo (MAXDOP) per l'esecuzione parallela delle query. L'intervallo consentito è compreso tra 0 e 64{{value}}. L'impostazione predefinita per {{value}} 0 utilizza l'impostazione globale.
+ `@GROUP_MAX_REQUESTS`- Specifica il numero massimo di richieste simultanee che possono essere eseguite nel gruppo di carichi di lavoro. {{value}}deve essere 0 o un numero intero positivo. L'impostazione predefinita per {{value}} è 0 e consente un numero illimitato di richieste.
+ `@GROUP_MAX_TEMPDB_DATA_MB`— Specifica la quantità massima di spazio dati tempdb, in megabyte, che un gruppo di carichi di lavoro può consumare. {{value}}deve essere 0, un numero positivo o NULL. Sono consentiti valori frazionari. Questo parametro è disponibile in SQL Server 2025 e versioni successive.
+ `@GROUP_MAX_TEMPDB_DATA_PERCENT`— Specifica la quantità massima di spazio dati tempdb che un gruppo di carichi di lavoro può consumare, in percentuale della dimensione massima di tempdb. {{value}}deve essere compreso tra 0 e 100 o NULL. Sono consentiti valori frazionari. Quando `GROUP_MAX_TEMPDB_DATA_MB` è impostato o quando la dimensione massima di tempdb non è definita, non `GROUP_MAX_TEMPDB_DATA_PERCENT` ha effetto. Questo parametro è disponibile in SQL Server 2025 e versioni successive.
+ `@pool_name`- Associa il gruppo di carico di lavoro al pool di risorse definito dall'utente identificato da. {{pool\_name}}

**Esempi**

Esempio di modifica della modifica predefinita del gruppo di carico di lavoro REQUEST\_MAX\_MEMORY\_GRANT\_PERCENT:

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

Esempio di modifica del gruppo di carico di lavoro non predefinito:

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

Esempio di spostamento di un gruppo Non-Default di carico di lavoro in un altro pool di risorse:

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

Esempio di modifica di un gruppo di carichi di lavoro con la governance tempdb (SQL Server 2025 e versioni successive):

```
-- Add tempdb limits to an existing workload group
USE msdb;
EXEC msdb.dbo.rds_alter_workload_group
    @group_name = 'etl_workload',
    @GROUP_MAX_TEMPDB_DATA_MB = 4096,
    @GROUP_MAX_TEMPDB_DATA_PERCENT = 50;

-- Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

-- Validate configuration
SELECT name, group_max_tempdb_data_mb, group_max_tempdb_data_percent
FROM sys.resource_governor_workload_groups
WHERE name = 'etl_workload';
```

### Elimina il gruppo di carico di lavoro
<a name="ResourceGovernor.DropWorkloadGroup"></a>

**Utilizzo**

```
EXEC msdb.dbo.rds_drop_workload_group    
@group_name = value
```

I parametri seguenti sono obbligatori:
+ `@group_name`- È il nome di un gruppo di carichi di lavoro definito dall'utente esistente.

**Esempi**

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

## Crea e registra la funzione di classificazione
<a name="ResourceGovernor.ClassifierFunction"></a>

Questa procedura crea una funzione di classificazione delle risorse nel database master che indirizza le connessioni a gruppi di carichi di lavoro personalizzati in base a criteri specificati (nome utente, database, host o nome dell'applicazione). Se il gestore delle risorse è abilitato e nella configurazione del gestore delle risorse è specificata una funzione di classificazione, l'output della funzione determina il gruppo di carico di lavoro utilizzato per le nuove sessioni. In assenza di una funzione di classificazione, tutte le sessioni vengono classificate nel gruppo. `default`

**Funzionalità:**
+ Supporta fino a due gruppi di carichi di lavoro con le rispettive condizioni di routing.
+ Combina criteri e `AND` condizioni all'interno di ciascun gruppo.
+ Richiede almeno un criterio di routing per gruppo di carichi di lavoro.
+ Il nome della funzione deve iniziare con. `rg_classifier_`
+ Assegnazione di gruppo predefinita se nessuna condizione corrisponde.

La funzione di classificazione presenta le seguenti caratteristiche e comportamenti:
+ La funzione è definita nell'ambito del server (nel database master).
+ La funzione è definita con l'associazione dello schema.
+ La funzione viene valutata per ogni nuova sessione, anche quando il pool di connessioni è abilitato.
+ La funzione restituisce il contesto del gruppo di carico di lavoro per la sessione. La sessione viene assegnata al gruppo di carico di lavoro restituito dal classificatore per tutta la durata della sessione.
+ Se la funzione restituisce NULL, default, o il nome di un gruppo di carico di lavoro inesistente, alla sessione viene assegnato il contesto del gruppo di carico di lavoro predefinito. Alla sessione viene inoltre assegnato il contesto predefinito se la funzione fallisce per qualsiasi motivo.
+ È possibile creare più funzioni di classificazione. Tuttavia, SQL Server consente la registrazione di una sola funzione di classificazione alla volta.
+ La funzione di classificazione non può essere eliminata a meno che il relativo stato di classificatore non venga rimosso utilizzando la procedura di annullamento della registrazione (`EXEC dbo.msdb.rds_alter_resource_governor_configuration @deregister_function = 1;`) che imposta il nome della funzione su NULL o se un'altra funzione di classificazione non viene registrata utilizzando () `EXEC dbo.msdb.rds_alter_resource_governor_configuration @classifier_function = <function_name>;`
+ In assenza di una funzione di classificazione, tutte le sessioni vengono classificate nel gruppo predefinito.
+ Non è possibile modificare una funzione di classificazione mentre è referenziata nella configurazione del governatore delle risorse. Tuttavia, è possibile modificare la configurazione per utilizzare una funzione di classificazione diversa. Se desideri apportare modifiche al classificatore, valuta la possibilità di creare una coppia di funzioni di classificazione. Ad esempio, potresti creare `rg_classifier_a` e. `rg_classifier_b`

**Utilizzo**

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

I parametri seguenti sono obbligatori:
+ `@function_name`- Nome della funzione di classificazione. Deve iniziare con `rg_classifier_`
+ `@workload_group1`- Nome del primo gruppo di carichi di lavoro

I parametri seguenti sono facoltativi:

(È necessario specificare almeno uno di questi criteri per il gruppo 1)
+ `@user_name1`- Nome di accesso per il gruppo 1
+ `@db_name1`- Nome del database per il gruppo 1
+ `@host_name1`- Nome host per il gruppo 1
+ `@app_name1`- Nome dell'applicazione per il gruppo 1

(Se viene specificato il gruppo 2, deve essere fornito almeno un criterio)
+ `@workload_group2`- Nome del secondo gruppo di carico di lavoro
+ `@user_name2`- Nome di accesso per il gruppo 2
+ `@db_name2`- Nome del database per il gruppo 2
+ `@host_name2`- Nome host per il gruppo 2
+ `@app_name2`- Nome dell'applicazione per il gruppo 2

**Nota**  
Gli account di sistema, i database, le applicazioni e l'host sono soggetti a restrizioni.

**Esempi**

Esempio di base con un gruppo di carichi di lavoro:

```
/*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;
```

## Funzione di classificazione Drop
<a name="ResourceGovernor.DropClassifier"></a>

**Utilizzo**

```
USE [msdb]
EXEC dbo.rds_drop_classifier_function
@function_name = value;
```

Il parametro seguente è obbligatorio:
+ `@function_name`- È il nome di una funzione di classificazione definita dall'utente esistente

**Esempio**

```
EXEC msdb.dbo.rds_drop_classifier_function
@function_name = 'rg_classifier_b';
```

## De-register funzione di classificazione
<a name="ResourceGovernor.DeregisterClassifier"></a>

Utilizzare questa procedura per annullare la registrazione della funzione di classificazione. Dopo l'annullamento della registrazione della funzione, le nuove sessioni vengono assegnate automaticamente al gruppo di carico di lavoro predefinito.

**Utilizzo**

```
USE [msdb]
EXEC dbo.rds_alter_resource_governor_configuration    
@deregister_function = 1;
```

Per l'annullamento della registrazione è richiesto il seguente parametro:
+ `@deregister_function`deve essere 1

**Esempio**

```
EXEC msdb.dbo.rds_alter_resource_governor_configuration 
    @deregister_function = 1;
GO

-- Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
```

## Reimposta le statistiche
<a name="ResourceGovernor.ResetStats"></a>

Le statistiche relative al gestore delle risorse sono cumulative dall'ultimo riavvio del server. Se devi raccogliere statistiche a partire da un determinato momento, puoi reimpostarle utilizzando la seguente procedura memorizzata di Amazon RDS.

**Utilizzo**

```
USE [msdb]
EXEC dbo.rds_alter_resource_governor_configuration  
@reset_statistics = 1;
```

Per ripristinare le statistiche è richiesto il seguente parametro:
+ `@reset_statistics`deve essere 1

## Modifiche alla configurazione del gestore delle risorse
<a name="ResourceGovernor.ConfigChanges"></a>

Quando il regolatore delle risorse non è abilitato, `rds_alter_resource_governor_configuration` abilita il regolatore delle risorse. L'attivazione del governatore delle risorse produce i seguenti risultati:
+ L'eventuale funzione di classificazione viene eseguita per le nuove sessioni, assegnandole ai gruppi di carico di lavoro.
+ I limiti delle risorse specificati nella configurazione del gestore delle risorse vengono rispettati e applicati.
+ I limiti delle risorse specificati nella configurazione del gestore delle risorse vengono rispettati e applicati.
+ Le richieste esistenti prima dell'abilitazione del gestore delle risorse potrebbero essere influenzate da eventuali modifiche alla configurazione apportate quando il gestore delle risorse è abilitato.
+ Le richieste esistenti, prima di abilitare il governatore delle risorse, potrebbero essere influenzate da eventuali modifiche alla configurazione apportate quando il gestore delle risorse è abilitato.
+ In RDS per SQL Server, `EXEC msdb.dbo.rds_alter_resource_governor_configuration` deve essere eseguita affinché tutte le modifiche alla configurazione del Resource Governor abbiano effetto. 

**Utilizzo**

```
USE [msdb]
EXEC dbo.rds_alter_resource_governor_configuration
```

## Associa TempDB a un pool di risorse
<a name="ResourceGovernor.BindTempDB"></a>

Puoi associare metadati ottimizzati per la memoria tempdb a un pool di risorse specifico utilizzando Amazon RDS SQL Server versione 2019 e `rds_bind_tempdb_metadata_to_resource_pool` successive.

**Nota**  
Memory-optimized La funzionalità di metadati tempdb deve essere abilitata prima di associare i metadati tempdb al pool di risorse. Abilitare questa funzionalità su Amazon RDS è un parametro statico. `tempdb metadata memory-optimized`

Abilita il parametro statico su Amazon RDS ed esegui un riavvio senza failover affinché il parametro abbia effetto:

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

**Utilizzo**

```
USE [msdb]
EXEC dbo.rds_bind_tempdb_metadata_to_resource_pool  
@pool_name=value;
```

Il parametro seguente è obbligatorio:
+ `@pool_name`- È il nome di un pool di risorse esistente definito dall'utente.

**Nota**  
Questa modifica richiede inoltre il riavvio del servizio sql senza failover per avere effetto, anche se la funzionalità di metadati Memory-optimized TempDB è già abilitata.

## Scollegare TempDB da un pool di risorse
<a name="ResourceGovernor.UnbindTempDB"></a>

Separa i metadati ottimizzati per la memoria tempdb da un pool di risorse.

**Nota**  
Questa modifica richiede anche il riavvio del servizio sql senza failover per avere effetto

**Utilizzo**

```
USE [msdb]
EXEC dbo.rds_unbind_tempdb_metadata_from_resource_pool
```

## Cleanup Resource Governor
<a name="ResourceGovernor.Cleanup"></a>

Questa procedura consente di pulire tutti gli oggetti associati dopo aver rimosso l'opzione Resource Governor dal gruppo di opzioni. Ciò disabilita il regolatore delle risorse, ripristina il gruppo di carico di lavoro predefinito alle impostazioni predefinite, rimuove i gruppi di carichi di lavoro personalizzati, i pool di risorse e le funzioni di classificazione.

**Caratteristiche principali**
+ Ripristina il gruppo di carico di lavoro predefinito alle impostazioni predefinite
+ Disattiva il gestore delle risorse
+ Rimuove i gruppi di carichi di lavoro personalizzati
+ Rimuove i pool di risorse personalizzati
+ Elimina le funzioni di classificazione
+ Rimuove l'associazione al pool di risorse tempdb se abilitata

**Importante**  
Questa pulizia può generare errori se ci sono sessioni attive nel gruppo di carico di lavoro. Attendi il termine delle sessioni attive o interrompi le sessioni attive in base alle tue esigenze aziendali. Si consiglia di eseguirlo durante la finestra di manutenzione.   
Questa pulizia può generare errori se un pool di risorse è stato associato a tempdb e il riavvio senza failover non è ancora stato effettuato. Se hai associato un pool di risorse a tempdb o hai scollegato un pool di risorse da tempdb in precedenza, esegui un riavvio senza failover per rendere effettiva la modifica. Si consiglia di eseguirlo durante la finestra di manutenzione.

**Utilizzo**

```
USE [msdb]
EXEC dbo.rds_cleanup_resource_governor
```