Introduction Dans Microsoft SQL Server 2005, vous pouvez réduire les fichiers journaux de transactions dans une base de données pour supprimer les pages inutilisées. Le moteur de base de données réutilisera efficacement l'espace. Toutefois, lorsqu'un fichier journal des transactions s'agrandit de manière inattendue, il peut être nécessaire de le réduire manuellement.
Cet article décrit comment utiliser l'instruction DBCC SHRINKFILE pour réduire manuellement les fichiers journaux de transactions dans une base de données SQL Server 2005 en modèle de récupération complète. La méthode que vous utilisez pour réduire un fichier journal des transactions dans SQL Server 2005 peut être différente de la méthode que vous utilisez pour réduire un fichier journal des transactions dans SQL Server 2000. Pour plus d’informations sur la réduction des fichiers journaux de transactions dans SQL Server 2000, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
272318 ( http://support.microsoft.com/kb/272318/ ) INF : réduction des journaux de transactions dans SQL Server 2000 à l'aide de DBCC SHRINKFILE
Retour au début
Plus d'informations Dans SQL Server 2005, l'opération de réduction (DBCC SHRINKFILE) tente immédiatement de réduire le fichier journal des transactions spécifié à la taille requise. Pour réduire manuellement les fichiers journaux de transactions dans le modèle de récupération complète, sauvegardez d'abord les fichiers journaux de transactions. Utilisez ensuite l'instruction DBCC SHRINKFILE pour réduire le fichier journal des transactions.
En règle générale, la réduction des fichiers journaux de transactions dans SQL Server 2005 est plus rapide que la réduction des fichiers journaux de transactions dans SQL Server 2000. La raison en est que le gestionnaire de journaux SQL Server 2005 crée ou réutilise des fichiers journaux virtuels inactifs en fonction de l'ordre de stockage du disque physique. Par conséquent, la partie inactive d'un fichier journal des transactions se trouve généralement à la fin du fichier.
Par exemple, un fichier journal des transactions peut contenir 100 fichiers journaux virtuels, mais n'en utiliser que 2. SQL Server 2000 stocke le premier fichier journal virtuel utilisé au début du fichier journal des transactions et le deuxième fichier journal virtuel utilisé au milieu du fichier journal des transactions. Afin de réduire le fichier journal des transactions à seulement 2 fichiers journaux virtuels, SQL Server remplira le reste du deuxième fichier journal virtuel avec des entrées de journal virtuel. SQL Server déplace le début du journal logique vers le prochain fichier journal virtuel disponible spécifié par le gestionnaire de journaux. Le gestionnaire de journaux peut créer un fichier journal virtuel au milieu du fichier journal des transactions, avant le dernier fichier journal virtuel actif. Dans ce cas, plusieurs opérations de sauvegarde de journal et plusieurs opérations de réduction doivent être utilisées pour réussir à réduire le fichier journal des transactions en 2 fichiers journaux virtuels. Dans le pire des cas, vous devrez peut-être utiliser 50 opérations de sauvegarde de journal et 50 opérations de réduction pour réussir à réduire le fichier journal des transactions à 2 fichiers journaux virtuels.
Toutefois, dans SQL Server 2005, vous pouvez immédiatement réduire le fichier journal des transactions à 2 fichiers journaux virtuels en exécutant une instruction DBCC SHRINKFILE. En effet, SQL Server 2005 Log Manager crée 2 fichiers journaux virtuels dans l'ordre dans lequel ils sont stockés sur le disque physique. Les deux fichiers journaux virtuels se trouvent au début du fichier journal des transactions.
Lorsque vous essayez de réduire un fichier journal des transactions qui dispose de très peu d'espace libre dans SQL Server 2005, vous devez effectuer une autre opération de sauvegarde du journal. Cette opération de sauvegarde du journal supplémentaire tronque le fichier journal des transactions à une taille plus petite. Lors de la réduction des fichiers journaux de transactions dans SQL Server 2000, en plus d'effectuer les trois étapes ci-dessus, vous devez également effectuer cette opération de sauvegarde du journal. Pour plus d'informations, consultez l'article de la Base de connaissances Microsoft mentionné dans la section « Introduction ». Pour réduire un fichier journal des transactions avec très peu d'espace libre dans SQL Server 2005, procédez comme suit : 1. Sauvegardez les fichiers journaux des transactions afin que la plupart des fichiers journaux virtuels actifs soient inactifs. Par conséquent, les fichiers journaux virtuels inactifs peuvent être supprimés ultérieurement. Pour ce faire, exécutez une instruction Transact-SQL similaire à l’instruction Transact-SQL suivante. JOURNAL DE SAUVEGARDE <DatabaseName> TO DISK = '<BackupFile>'
Remarque : Dans cette instruction, <DatabaseName> est un espace réservé pour le nom de la base de données à sauvegarder. Dans cette instruction, <BackupFile> est un espace réservé pour le chemin complet du fichier de sauvegarde.
Par exemple, exécutez l'instruction Transact-SQL suivante. JOURNAL DE SAUVEGARDE TestDB VERS DISQUE='C:TestDB1.bak'
2. Réduisez le fichier journal des transactions. Pour ce faire, exécutez une instruction Transact-SQL similaire à l’instruction Transact-SQL suivante. DBCC SHRINKFILE (<FileName>, <TargetSize>) AVEC NO_INFOMSGS
Remarque : Dans cette instruction, <FileName> est un espace réservé pour le nom du fichier journal des transactions. Dans cette instruction, <TargetSize> est un espace réservé pour la taille cible du fichier journal des transactions. La taille de la cible doit être raisonnable. Par exemple, vous ne pouvez pas réduire un fichier journal des transactions à moins de deux fichiers journaux virtuels.
3. Si l'instruction DBCC SHRINKFILE ne réduit pas le fichier journal des transactions à la taille cible, exécutez l'instruction BACKUP LOG mentionnée à l'étape 1 pour rendre inactifs davantage de fichiers journaux virtuels.
4. Exécutez l'instruction DBCC SHRINKFILE mentionnée à l'étape 2. Après cela, le fichier journal des transactions doit être proche de la taille cible.
En résumé, l'algorithme utilisé par Log Manager pour sélectionner le prochain fichier journal virtuel a changé dans SQL Server 2005. Par conséquent, la réduction des fichiers journaux de transactions dans SQL Server 2005 diffère de la réduction des fichiers journaux de transactions dans SQL Server 2000 des manières suivantes : • Si le fichier journal dispose d'une grande quantité d'espace libre, la réduction du fichier journal des transactions dans SQL Server 2005 est plus rapide que réduction du fichier journal des transactions dans SQL Server 2000 La réduction des fichiers journaux des transactions est plus rapide.
• La réduction d'un fichier journal des transactions dans SQL Server 2005 revient à réduire un fichier journal des transactions dans SQL Server 2000 si le fichier journal ne dispose pas d'espace libre.
• La réduction d'un fichier journal des transactions dans SQL Server 2005 nécessite une opération de sauvegarde de journal de plus que l'exécution de cette opération dans SQL Server 2000 si le fichier journal dispose de très peu d'espace libre.