-
Lors de l'utilisation de SQL Server, nous rencontrons souvent des situations dans lesquelles le journal de la base de données est très volumineux. Lorsque nous rencontrons ce problème, nous introduisons deux méthodes pour le résoudre.
Première méthode
Dans des circonstances normales, la réduction d'une base de données SQL ne peut pas réduire considérablement la taille de la base de données. Sa fonction principale est de réduire la taille du journal. Cette opération doit être effectuée régulièrement pour éviter que le journal de la base de données ne devienne trop volumineux.
1. Définissez le mode base de données en mode simple : ouvrez SQL Enterprise Manager, cliquez sur Microsoft SQL Server dans le répertoire racine de la console -> groupe SQL Server -> double-cliquez pour ouvrir votre serveur -> double-cliquez pour ouvrir la base de données. répertoire-->Sélectionnez le nom de votre base de données (par exemple Forum de base de données Forum)-->puis cliquez avec le bouton droit et sélectionnez Propriétés-->Sélectionner les options-->Sélectionnez "Simple" en mode de basculement, puis appuyez sur OK pour enregistrer
2. Cliquez avec le bouton droit sur la base de données actuelle et affichez la base de données réduite dans toutes les tâches. Généralement, les paramètres par défaut n'ont pas besoin d'être ajustés.
3. Après avoir réduit la base de données, il est recommandé de réinitialiser les propriétés de votre base de données en mode standard. La méthode de fonctionnement est la même que celle du premier point, car le journal constitue souvent une base importante pour restaurer la base de données dans certaines circonstances anormales.
DÉFINIR NOCOUNT ON
DÉCLARE @LogicalFileName nom système,
@MaxMinutes INT,
@NewSizeINT
USE tablename -- le nom de la base de données sur laquelle opérer
SELECT @LogicalFileName = 'tablename_log', -- nom du fichier journal
@MaxMinutes = 10, -- Limite de temps autorisée pour envelopper le journal.
@NewSize = 1 -- La taille du fichier journal que vous souhaitez définir (M)
--Configuration/initialisation
DÉCLARE @OriginalSize int
SELECT @OriginalSize = taille
DEPUIS les fichiers système
OÙ nom = @LogicalFileName
SELECT 'Taille originale de ' + db_name() + ' LOG est ' +
CONVERTIR(VARCHAR(30),@OriginalSize) + ' 8K pages ou ' +
CONVERTIR(VARCHAR(30), (@OriginalSize*8/1024)) + 'Mo'
DEPUIS les fichiers système
OÙ nom = @LogicalFileName
CRÉER UNE TABLE DummyTrans
(DummyColumn char (8000) non nul)
DÉCLARER @Counter INT,
@StartTime DATEHEURE,
@TruncLog VARCHAR(255)
SELECT @StartTime = GETDATE(),
@TruncLog = 'JOURNAL DE SAUVEGARDE' + nom_base() + 'AVEC TRUNCATE_ONLY'
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Enveloppez le journal si nécessaire.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- le temps n'a pas expiré
ET @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)
ET (@OriginalSize * 8/1024) > @NewSize
BEGIN – Boucle externe.
SELECT @Compteur = 0
PENDANT ( (@Counter < @OriginalSize / 16) ET (@Counter < 50000))
DÉBUT – mise à jour
INSÉRER LES VALEURS DummyTrans (« Remplir le journal »)
SUPPRIMER DummyTrans
SELECT @Compteur = @Compteur + 1
FIN
EXEC (@TruncLog)
FIN
SELECT 'Taille finale de ' + db_name() + ' LOG est ' +
CONVERTIR(VARCHAR(30),taille) + ' 8 Ko pages ou ' +
CONVERTIR(VARCHAR(30),(taille*8/1024)) + 'Mo'
DEPUIS les fichiers système
OÙ nom = @LogicalFileName
TABLE DE DÉPÔT DummyTrans
DÉSACTIVER NOCOUNT