

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Accès à la base de données tempdb sur des instances de base de données Microsoft SQL Server sur Amazon RDS
<a name="SQLServer.TempDB"></a>

Vous pouvez accéder à la base de données `tempdb` sur vos instances de base de données Microsoft SQL Server sur Amazon RDS. Vous pouvez exécuter le code sur `tempdb` à l'aide de Transact-SQL via Microsoft SQL Server Management Studio (SSMS) ou via toute autre application cliente SQL standard. Pour plus d'informations sur la connexion à votre instance de base de données, consultez [Connexion à votre instance de base de données Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md). 

L'utilisateur principal pour votre instance de base de données bénéficie d'un accès `CONTROL` à `tempdb` afin qu'il puisse modifier les options de la base de données `tempdb`. L'utilisateur principal n'est pas le propriétaire de la base de données `tempdb`. Si nécessaire, l'utilisateur principal peut accorder un accès `CONTROL` à d'autres utilisateurs afin qu'ils puissent eux aussi modifier les options de la base de données `tempdb`. 

**Note**  
Vous ne pouvez pas exécuter de commandes DBCC (Database Console) sur la base de données `tempdb`. 

# Modification des options de la base de données tempdb
<a name="SQLServer.TempDB.Modifying"></a>

Vous pouvez modifier les options de base de données sur la base de données `tempdb` sur vos instances de base de données Amazon RDS. Pour plus d'informations sur les options qui peuvent être modifiées, veuillez consulter [Base de données tempdb](https://msdn.microsoft.com/en-us/library/ms190768%28v=sql.120%29.aspx) dans la documentation Microsoft.

Les options de base de données telles que les options de taille maximale des fichiers sont persistantes une fois que vous redémarrez votre instance de base de données. Vous pouvez modifier les options de base de données pour optimiser les performances lors de l'importation des données et pour éviter le manque d'espace de stockage.

## Optimisation des performances lors de l'importation de données
<a name="SQLServer.TempDB.Modifying.Import"></a>

Afin d'optimiser les performances lors de l'importation de grandes quantités de données dans votre instance de base de données, définissez les propriétés `SIZE` et `FILEGROWTH` de la base de données tempdb sur des grands chiffres. Pour plus d'informations sur la façon d'optimiser `tempdb`, veuillez consulter [Optimisation des performances de la base de données tempdb](https://technet.microsoft.com/en-us/library/ms175527%28v=sql.120%29.aspx) dans la documentation Microsoft.

L'exemple suivant illustre la définition de la taille sur 100 Go et la croissance des fichiers sur 10 pour cent. 

```
1. alter database[tempdb] modify file (NAME = N'templog', SIZE=100GB, FILEGROWTH = 10%)
```

## Prévention des problèmes de stockage
<a name="SQLServer.TempDB.Modifying.Full"></a>

Pour éviter que la base de données `tempdb` utilise tout l'espace disque disponible, définissez la propriété `MAXSIZE`. L'exemple suivant illustre la définition de la propriété sur 2 048 Mo. 

```
1. alter database [tempdb] modify file (NAME = N'templog', MAXSIZE = 2048MB)
```

# Réduction de la base de données tempdb
<a name="SQLServer.TempDB.Shrinking"></a>

Il existe deux façons de réduire la base de données `tempdb` sur votre instance de base de données Amazon RDS. Vous pouvez utiliser la procédure `rds_shrink_tempdbfile` ou vous pouvez définir la propriété `SIZE`. 

## Utilisation de la procédure rds\$1shrink\$1tempdbfile
<a name="SQLServer.TempDB.Shrinking.Proc"></a>

Vous pouvez utiliser la procédure Amazon RDS `msdb.dbo.rds_shrink_tempdbfile` pour réduire la base de données `tempdb`. Vous pouvez uniquement appeler `rds_shrink_tempdbfile` si vous disposez de l'accès `CONTROL` à `tempdb`. Lorsque vous appelez `rds_shrink_tempdbfile`, il n'y a aucun temps d'arrêt pour votre instance de base de données. 

La procédure `rds_shrink_tempdbfile` possède les paramètres suivants.


****  

| Nom du paramètre | Type de données | Par défaut | Obligatoire | Description | 
| --- | --- | --- | --- | --- | 
| `@temp_filename` | SYSNAME | — | obligatoire | Le nom logique du fichier à réduire. | 
| `@target_size` | int | null | facultatif | La nouvelle taille du fichier en mégaoctets. | 

L'exemple suivant permet d'obtenir les noms des fichiers de la base de données `tempdb`.

```
1. use tempdb;
2. GO
3. 
4. select name, * from sys.sysfiles;
5. GO
```

L'exemple suivant réduit un fichier de base de données `tempdb` nommé `test_file` et demande une nouvelle taille de `10` mégaoctets : 

```
1. exec msdb.dbo.rds_shrink_tempdbfile @temp_filename = N'test_file', @target_size = 10;
```

## Configuration de la propriété SIZE
<a name="SQLServer.TempDB.Shrinking.Size"></a>

Vous pouvez également réduire la base de données `tempdb` en configurant la propriété `SIZE` et en redémarrant votre instance de base de données. Pour plus d'informations sur le redémarrage de votre instance de base de données, consultez [Redémarrage d'une instance de base de données cluster de base de données](USER_RebootInstance.md).

L'exemple suivant illustre la définition de la propriété `SIZE` sur 1 024 Mo. 

```
1. alter database [tempdb] modify file (NAME = N'templog', SIZE = 1024MB)
```

# Configuration de TempDB pour les déploiements multi-AZ
<a name="SQLServer.TempDB.MAZ"></a>

Si votre instance de base de données RDS for SQL Server est un déploiement multi-AZ qui utilise la mise en miroir de la base de données (DBM, Database Mirroring) ou les groupes de disponibilité (AG, Availability Groups) toujours actifs, gardez à l’esprit les points suivants concernant l’utilisation de la base de données `tempdb`.

Vous ne pouvez pas répliquer les données `tempdb` de votre instance de base de données principale vers votre instance de base de données secondaire. Lorsque vous basculez vers une instance de base de données secondaire, `tempdb` sera vide sur cette instance de base de données secondaire.

Vous pouvez synchroniser la configuration des options de la base de données `tempdb`, y compris ses paramètres de dimensionnement des fichiers et de croissance automatique, entre votre instance de base de données principale et celle secondaire. La synchronisation de la configuration `tempDB` est prise en charge sur toutes les versions de RDS for SQL Server. Vous pouvez activer la synchronisation automatique de la configuration `tempdb` à l’aide de la procédure stockée suivante :

```
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'TempDbFile';
```

**Important**  
Avant d’utiliser la procédure stockée `rds_set_system_database_sync_objects`, assurez-vous d’avoir défini votre configuration `tempdb` préférée sur votre instance de base de données principale plutôt que sur celle secondaire. Si vous avez modifié la configuration sur votre instance de base de données secondaire, votre configuration `tempdb` préférée risque d’être supprimée lorsque vous activerez la synchronisation automatique.

Vous pouvez utiliser la fonction suivante pour vérifier si la synchronisation automatique de la configuration `tempdb` est activée :

```
SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();
```

Lorsque la synchronisation automatique de la configuration `tempdb` est activée, une valeur est renvoyée pour le champ `object_class`. Lorsqu’elle est désactivée, aucune valeur n’est renvoyée.

Vous pouvez utiliser la fonction suivante pour trouver la dernière synchronisation des objets selon le fuseau horaire UTC :

```
SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();
```

Par exemple, si vous avez modifié la configuration `tempdb` à 01 h 00, puis que vous exécutez la fonction `rds_fn_server_object_last_sync_time`, la valeur renvoyée pour `last_sync_time` doit être postérieure à 01 h 00, ce qui indique qu’une synchronisation automatique a eu lieu.

Si vous utilisez également la réplication des tâches SQL Server Agent, vous pouvez activer la réplication à la fois pour les tâches SQL Agent et pour la configuration `tempdb` en les fournissant dans le paramètre `@object_type` :

```
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'SQLAgentJob,TempDbFile';
```

Pour plus d’informations sur la réplication des tâches SQL Server Agent, consultez[Activation de la réplication des tâches de l'agent SQL Server](Appendix.SQLServer.CommonDBATasks.Agent.md#SQLServerAgent.Replicate).

Au lieu d’utiliser la procédure stockée `rds_set_system_database_sync_objects` pour garantir la synchronisation automatique des modifications de configuration `tempdb`, vous pouvez utiliser l’une des méthodes manuelles suivantes :

**Note**  
Nous vous recommandons d’activer la synchronisation automatique de la configuration `tempdb` à l’aide de la procédure stockée `rds_set_system_database_sync_objects`. L’utilisation de la synchronisation automatique évite d’avoir à effectuer ces tâches manuelles chaque fois que vous modifiez votre configuration `tempdb`.
+ Tout d'abord, modifiez votre instance de base de données et désactivez le déploiement multi-AZ, puis modifier tempdb, puis enfin réactivez le déploiement multi-AZ. Cette méthode n'entraîne aucun temps d'arrêt.

  Pour plus d'informations, consultez [Modification d'une instance de base de données Amazon RDS](Overview.DBInstance.Modifying.md). 
+ Tout d'abord, modifiez `tempdb` dans l'instance principale d'origine, puis exécutez un basculement manuel et enfin modifiez `tempdb` dans la nouvelle instance principale. Cette méthode implique un temps d'arrêt. 

  Pour plus d’informations, consultez [Redémarrage d'une instance de base de données cluster de base de données](USER_RebootInstance.md).