2008-09-02 12 views

Répondre

109

si je me souviens bien ... dans un analyseur de requête ou équivalent:

BACKUP LOG databasename WITH TRUNCATE_ONLY 

DBCC SHRINKFILE ( databasename_Log, 1) 
+2

C'est certainement mieux que de mettre le modèle de récupération de base de données à SIMPLE (comme dans la réponse de Blorgbeard) car si votre modèle de récupération est FULL, vous l'avez définir de cette façon pour une raison. –

+47

truncate_only est obsolète dans SQL Server 2008, donc vous devez passer la base de données à la simple récupération http://msdn.microsoft.com/en-us/library/ms143729(SQL.90).aspx –

+9

Pour SQL Server 2012 cela fonctionne, mais sans 'WITH TRUNCATE_ONLY'. –

258

en studio de gestion:

  • Ne pas faire cela sur un environnement réel, mais pour vous assurer reculez votre dev db autant que vous le pouvez:
    • un clic droit sur la base de données, choisissez Properties, puis Options.
    • Assurez-vous que "modèle de récupération" est réglé sur "Simple", pas "Full"
    • Cliquez sur OK
  • un clic droit sur la base de données à nouveau, choisissez Tasks ->Shrink ->Files
  • Change type de fichier à "Log"
  • Cliquez sur OK.

Sinon, le SQL pour le faire:

ALTER DATABASE mydatabase SET RECOVERY SIMPLE 
DBCC SHRINKFILE (mydatabase_Log, 1) 

Ref: http://msdn.microsoft.com/en-us/library/ms189493.aspx

+1

Votre réponse a juste sauvé ma journée! Je ne connaissais pas l'option "Clic droit - Tâches -> Réduire". Je vous remercie! –

+7

Que faites-vous dans un environnement en direct? Sauvegarder les journaux en premier? –

+1

Je ne suis pas un administrateur de base de données, mais oui, je crois que la sauvegarde du journal le tronquera: http://technet.microsoft.com/en-us/library/ms179478.aspx – Blorgbeard

3

sauvegarde logname journal avec truncate_only suivi d'une commande dbcc shrinkfile

46

Pour SQL Server 2008, la commande est:

ALTER DATABASE ExampleDB SET RECOVERY SIMPLE 
DBCC SHRINKFILE('ExampleDB_log', 0, TRUNCATEONLY) 

Cela a réduit mon 14GB fichier journal jusqu'à 1Mo.

+4

Comme la question est ambiguë quant à savoir quelle version et la réponse acceptée n'est pas applicable à SQL Server 2008, cette réponse est toujours valide quel que soit l'âge. –

+0

Merci, cela m'a aidé à réduire un gros fichier journal qui n'a pas réagi avec DBCC SHRINKFILE –

+3

N'oubliez pas de changer le modèle de récupération à FULL lorsque vous avez terminé! – Dan

32

Pour SQL 2008, vous pouvez vous connecter à un appareil de sauvegarde nul:

BACKUP LOG [databaseName] 
TO DISK = 'nul:' WITH STATS = 10 

Et puis utilisez DBCC SHRINKFILE pour tronquer le fichier journal.

+2

Ceci est le seul qui a fini par fonctionner dans ma situation ... J'ai eu une erreur en essayant d'utiliser la sauvegarde avec TRUNCATE_ONLY – TomXP411

-7

Une autre option consiste à détacher la base de données via Management Studio. Il suffit ensuite de supprimer le fichier journal ou de le renommer et de le supprimer ultérieurement.

Retour dans Management Studio rattachez la base de données. Dans la fenêtre attach, supprimez le fichier journal de la liste des fichiers.

La base de données se connecte et crée un nouveau fichier journal vide. Après avoir vérifié que tout va bien, vous pouvez supprimer le fichier journal renommé.

Vous ne devriez probablement pas l'utiliser pour les bases de données de production.

+3

Ne jamais le faire! Il peut y avoir des données dans le journal pas encore validées dans le fichier de données. Vous perdriez ces données. – Paul

+3

AVERTISSEMENT! C'est incorrect et dangereux! – defines

+0

Si, dans votre réponse, vous avertissez de ne pas l'essayer en production, cela ne vaut pas la peine de poster du tout. –