Comment faire pour réduire le fichier journal des transactions dans SQL Server 2005

S’applique à : Microsoft SQL Server 2005 Standard EditionMicrosoft SQL Server 2005 Express EditionMicrosoft SQL Server 2005 Developer Edition

Résumé


Dans Microsoft SQL Server 2005, vous pouvez réduire un fichier journal des transactions dans une base de données pour supprimer les pages inutilisées. Le moteur de base de données réutilise espace efficacement. Toutefois, lorsque le fichier journal des transactions augmente de manière inattendue, vous devrez peut-être réduire le fichier journal des transactions manuellement.

Cet article décrit comment utiliser l’instruction DBCC SHRINKFILE pour réduire le fichier journal des transactions manuellement dans le modèle de récupération complète dans une base de données SQL Server 2005. La méthode qui vous permet de réduire le fichier journal de transactions dans SQL Server 2005 peut différer de la méthode qui vous permet de réduire le fichier journal de transactions dans SQL Server 2000. Pour plus d’informations sur la façon de réduire le fichier journal des transactions dans SQL Server 2000, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :

272318 réduction du journal de transactions dans SQL Server 2000 DBCC SHRINKFILE

Plus d'informations


Dans SQL Server 2005, une opération de réduction (DBCC SHRINKFILE) tente de réduire le fichier journal spécifié à la taille demandée, immédiatement. Pour réduire le fichier journal des transactions manuellement dans le modèle de récupération complète, sauvegardez d’abord le fichier journal des transactions. Ensuite, utilisez l’instruction DBCC SHRINKFILE pour réduire le fichier journal des transactions.

Réduire le fichier journal des transactions dans SQL Server 2005 est généralement plus rapide que la réduction du fichier journal des transactions dans SQL Server 2000. La raison est que le Gestionnaire du journal SQL Server 2005 crée ou réutilise les fichiers des journaux virtuels inactifs en suivant l’ordre de stockage de disque physique. Par conséquent, la partie inactive du journal de transactions est généralement à la fin du fichier.

Par exemple, le fichier journal des transactions peut avoir 100 fichiers journaux virtuels, et 2 seulement les fichiers journaux virtuels sont utilisés. SQL Server 2000 peut stocker le fichier journal virtuel utilisé premier au début du fichier journal des transactions et la seconde utilisé un fichier journal virtuel au milieu du fichier journal des transactions. Pour réduire le fichier journal des transactions à 2 uniquement les fichiers journaux virtuels, SQL Server remplit la partie restante du deuxième fichier journal virtuel à l’aide des entrées factices. SQL Server déplace le début du journal logique à la suivante disponible fichier journal virtuel qui est spécifié par le Gestionnaire de journal. Le Gestionnaire de journal peut créer un fichier journal virtuel au milieu du fichier journal des transactions juste avant le dernier fichier journal virtuel actif. Dans ce cas, vous devez utiliser plusieurs opérations de sauvegarde de journal et plusieurs opérations de compactage a réduire le fichier journal des transactions à 2 fichiers journaux virtuels. Dans le pire des cas de cet exemple, il se peut que vous deviez utiliser des opérations de sauvegarde de journal 50 et 50 réduire les opérations pour correctement réduire le fichier journal des transactions à 2 fichiers journaux virtuels.

Cependant, dans SQL Server 2005, vous pouvez exécuter une instruction DBCC SHRINKFILE pour réduire le fichier journal des transactions immédiatement à 2 fichiers journaux virtuels. Pour cela, car le Gestionnaire de journal de SQL Server 2005 crée des fichiers journaux virtuels 2 en suivant l’ordre de stockage de disque physique. Les deux fichiers journaux virtuels sont au début du fichier journal des transactions.

Lorsque vous essayez de réduire le fichier journal des transactions qui a peu d’espace libre dans SQL Server 2005, vous devrez peut-être effectuer une opération de sauvegarde de journal supplémentaire. L’opération de sauvegarde de journal supplémentaire tronque le fichier journal des transactions à une taille plus petite. Cette opération de sauvegarde de journal est en plus des trois étapes que vous effectuez pour réduire le fichier journal des transactions dans SQL Server 2000. Pour plus d’informations, consultez l’article de la Base de connaissances Microsoft mentionné dans la section » Résumé". Pour réduire un fichier journal des transactions qui a peu d’espace libre dans SQL Server 2005, procédez comme suit :
  1. Sauvegardez le fichier journal des transactions pour effectuer la plupart des fichiers journaux virtuels actifs inactifs. Par conséquent, les fichiers des journaux virtuels inactifs peuvent être supprimés dans une étape ultérieure. Pour cela, démarrez SQL Server Management Studio, puis exécutez une instruction Transact-SQL qui ressemble à l’instruction Transact-SQL suivante.
    BACKUP LOG <DatabaseName> TO DISK = '<BackupFile>'
    Remarque Dans cette instruction, < nom_base_données > est un espace réservé pour le nom de la base de données que vous sauvegardez, et < BackupFile > est un espace réservé pour le chemin d’accès complet du fichier de sauvegarde.

    Par exemple, exécutez l’instruction Transact-SQL suivante.
    BACKUP LOG TestDB TO DISK='C:\TestDB1.bak'
  2. Réduire le fichier journal des transactions. Pour ce faire, exécutez une instruction Transact-SQL qui ressemble à l’instruction Transact-SQL suivante.
    DBCC SHRINKFILE (<FileName>, <TargetSize>) WITH NO_INFOMSGS
    Remarque Dans cette instruction, < nom_fichier > est un espace réservé pour le nom du fichier journal des transactions, et < TargetSize > est un espace réservé pour la taille cible souhaitée pour le fichier journal des transactions soit. La taille de la cible doit être raisonnable. Par exemple, vous ne peut pas réduire le fichier journal des transactions à une taille inférieure à 2 les fichiers journaux virtuels.
  3. Si l’instruction DBCC SHRINKFILE ne réduit pas le fichier journal des transactions à la taille de la cible, exécutez l’instruction BACKUP LOG qui est mentionnée à l’étape 1 pour rendre les fichiers journaux virtuels inactifs.
  4. Exécutez l’instruction DBCC SHRINKFILE mentionné à l’étape 2. Après cette opération, le fichier journal des transactions doit être proche de la taille cible.
En résumé, algorithme du gestionnaire journal pour obtenir le prochain fichier de journal virtuel modifié dans SQL Server 2005. Par conséquent, la réduction du fichier journal des transactions dans SQL Server 2005 peut différer de réduire le fichier journal des transactions dans SQL Server 2000.
  • Si un fichier journal comporte suffisamment d’espace libre, réduction du fichier journal des transactions dans SQL Server 2005 est plus rapide que la réduction du fichier journal des transactions dans SQL Server 2000.
  • Si un fichier journal n’a pas d’espace libre, réduction du fichier journal des transactions dans SQL Server 2005 est la même que la réduction du fichier journal des transactions dans SQL Server 2000.
  • Si un fichier journal a peu d’espace disponible, vous devrez peut-être effectuer une opération de sauvegarde de journal supplémentaire dans SQL Server 2005 que vous devez effectuer dans SQL Server 2000.

Références


Pour plus d’informations sur la façon de réduire le journal des transactions, accédez au site Web de Microsoft Developer Network (MSDN) réduction du journal des transactions .


Pour plus d’informations sur l’instruction DBCC SHRINKFILE, consultez le site Web MSDN de DBCC SHRINKFILE (Transact-SQL) .


Pour plus d’informations sur la troncature du journal des transactions, consultez le site Web MSDN de Troncature de journal .