Supprimer les connexions de base de données dans MS Sql Server 2000
-
03-07-2019 - |
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.
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