Je dois vider un fichier LDF avant de l'envoyer à un collègue. Comment forcer SQL Server à tronquer le journal?Quelle est la commande pour tronquer un fichier journal SQL Server?
Répondre
si je me souviens bien ... dans un analyseur de requête ou équivalent:
BACKUP LOG databasename WITH TRUNCATE_ONLY
DBCC SHRINKFILE ( databasename_Log, 1)
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
, puisOptions
. - 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, choisissez
- 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)
Votre réponse a juste sauvé ma journée! Je ne connaissais pas l'option "Clic droit - Tâches -> Réduire". Je vous remercie! –
Que faites-vous dans un environnement en direct? Sauvegarder les journaux en premier? –
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
sauvegarde logname journal avec truncate_only suivi d'une commande dbcc shrinkfile
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.
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. –
Merci, cela m'a aidé à réduire un gros fichier journal qui n'a pas réagi avec DBCC SHRINKFILE –
N'oubliez pas de changer le modèle de récupération à FULL lorsque vous avez terminé! – Dan
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.
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
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.
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
AVERTISSEMENT! C'est incorrect et dangereux! – defines
Si, dans votre réponse, vous avertissez de ne pas l'essayer en production, cela ne vaut pas la peine de poster du tout. –
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. –
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 –
Pour SQL Server 2012 cela fonctionne, mais sans 'WITH TRUNCATE_ONLY'. –