Question

J'ai une base de données avec laquelle nous avons des problèmes. D'une manière ou d'une autre, le journal est devenu 400 Go et la base de données est devenue inutile. Je souhaite supprimer toutes les connexions existantes à la base de données, puis détacher la base de données.

En gros, je vais supprimer le fichier journal géant, en créer un nouveau et le rattacher s'il fonctionne. Sinon, nous allons restaurer à partir de sauvegardes.

Était-ce utile?

La solution 3

En gros, aucune commande ne s’exécuterait du tout. Nous avons fini par désactiver le service, créer des copies vides des fichiers mdf et ldf et remplacer celles utilisées par le serveur SQL. Après cela, nous avons restauré la base de données à partir de la dernière sauvegarde et le tour est joué, cela fonctionne à nouveau (principalement).

Autres conseils

Si le journal est inutile, vous pouvez utiliser ces commandes, mais veuillez les documenter vous-même avant de les appliquer sur un serveur de production.

BACKUP LOG WITH NO_LOG pour ignorer les pages du journal,

sp_helpdb pour rechercher le nom des fichiers de la base de données

DBCC SHRINKFILE ('votre nom de fichier journal', 0) - pour lier le fichier physique à la taille spécifiée.

Si vous êtes certain qu'il n'y a pas de transaction en cours, vous pouvez placer la base de données en mode mono-utilisateur.

ALTER DATABASE [YourDB] SET SINGLE_USER WITH NO_WAIT

Lorsque vous avez terminé, remettez-le en mode multi-utilisateur. ALTER DATABASE [YourDB] SET MULTI_USER WITH NO_WAIT

Est-ce que

sauvegarder le journal de votre base de données avec truncate_only, puis dbcc shrinkdatabase (votre base de données) ne réduit pas le fichier journal pour vous?

ALTER DATABASE [DB_NAME_HERE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE

ALTER DATABASE [DB_NAME_HERE] SET MULTI_USER
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top