J'essaie de mettre en place une base de données à des fins de développement sur SQL Server Developer Edition 12.0.2000.8 local de mon PC. J'ai une sauvegarde complète de la base de données et des fichiers de sauvegarde séparés du journal des transactions disponibles qui m'ont été envoyés sur le réseau.
Lorsque j'essaie de restaurer à partir d'une sauvegarde complète, après un certain temps (~ 1 heure peut-être, la base de données fait ~ 270 Go), j'obtiens une erreur:
System.Data.SqlClient.SqlError: Une erreur s'est produite lors du traitement du journal de la base de données 'nom de la base de données'. Si possible, restaurez à partir de la sauvegarde. Si aucune sauvegarde n'est disponible, il peut être nécessaire de reconstruire le journal. (Microsoft.SqlServer.SmoExtended)
Après cela, la base de données est dans l'état «Restauration ..».
Je voulais lancer quelque chose comme (obtenu à partir de cette question)
ALTER DATABASE recovery_test_2 SET EMERGENCY;
ALTER DATABASE recovery_test_2 SET SINGLE_USER;
DBCC CHECKDB (recovery_test_2, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS;
contre elle, mais naturellement je ne peux pas car la base de données est dans l'état "Restauration ..".
Comment puis-je faire fonctionner la base de données? La cohérence transactionnelle n'a pas d'importance pour moi.
Le script de restauration généré automatiquement SSMS:
USE [master]
RESTORE DATABASE [database_name] FROM DISK = N'D:\database_name.bak' WITH FILE = 1,
MOVE N'database_name' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name.mdf',
MOVE N'database_name_index' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_index.ndf',
MOVE N'database_name_log' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_log.ldf',
NOUNLOAD,
STATS = 5
GO
Le résultat de la requête suggérée par @Craig Efrein
Le journal ne peut pas être reconstruit car des transactions / utilisateurs étaient ouverts lors de la fermeture de la base de données, aucun point de contrôle ne s'est produit dans la base de données ou la base de données était en lecture seule. Cette erreur peut se produire si le fichier journal des transactions a été supprimé ou perdu manuellement en raison d'une défaillance matérielle ou environnementale.
la source
Réponses:
Des commentaires déplacés vers le chat, cette note du PO:
Je viens d'essayer de le joindre via l'interface graphique. En sélectionnant le fichier .mdf, le SSMS a identifié la base de données composée de 3 fichiers (données, index, journal), mais d'une manière ou d'une autre, même si j'étais en train de restaurer WITH MOVE, les détails de la base de données sur le chemin du fichier disaient que c'était faux! Je les ai donc simplement pointés vers l'ancien fichier journal / données / index et ... La base de données est en ligne.
la source
Passez en mode mono-utilisateur et restaurez.
exemple:
la première restauration utilise l'option NORECOVERY afin que des restaurations supplémentaires puissent être effectuées. La deuxième commande restaure le journal des transactions, puis met la base de données en ligne pour une utilisation par l'utilisateur final.
la source