J'ai un MDF Fichier et aucun fichier LDF pour une base de données créée dans MS SQL Server 2005. Lorsque j'essaie de joindre le fichier MDF fichier sur un autre serveur SQL , Je reçois le message d'erreur suivant.
The log cannot be rebuilt because there were open transactions/users when the database was shutdown, no checkpoint occurred to the database, or the database was read-only. This error could occur if the transaction log file was manually deleted or lost due to a hardware or environment failure.
Je voudrais accomplir l'une des options suivantes:
Quelles commandes SQL puis-je essayer d'obtenir ma base de données à nouveau?
J'ai trouvé le document suivant sur Experts Exchange .
patrikt: Vous aurez une perte de données mais cela peut être fait.
1. Détachez la base de données et déplacez votre MDF pour économiser de l'emplacement. [.____] 2. Créez une nouvelle base de données du même nom, des mêmes fichiers, même emplacement de fichier et la même taille de fichier. [.____] 3. Stop SQL Server. 4. Echangez le fichier MDF de simplement créé dB à votre sauvegarde. 5. Démarrer SQL. DB ira soupçonner. 6. Alter base de donnéesyourdb
définissez l'urgence [.____] 7. Alter base de donnéesyourdb
set unique_user [.____] 8. DBCC CheckDB (yourdb
, réparateur_allow_data_loss) [.____] 9. Alter base de donnéesyourdb
définissez MULTI_USER [.____] 10. Alter base de donnéesyourdb
set en ligne [.____]
Voici des détails qui couvrent les pièces 2) et 3) dans le cas où la création de journal ne fonctionne pas, ce qui peut arriver si MDF fichier est corrompu.
Vous pouvez récupérer des données et une structure uniquement en lisant MDF avec un seul outil de tiers pouvant décoder ce qui est écrit en tant que données binaires, mais même avec de tels outils, vous ne pouvez toujours pas toujours faire le travail.
Dans de tels cas, vous pouvez essayer Apexsql Recover . De ce que je sais, c'est le seul outil qui peut faire ce genre de travail, mais c'est assez cher.
Beaucoup meilleure idée est d'essayer de les récupérer de toutes les vieilles sauvegardes si vous en avez.
D'après un post sur les forums SQL Server Joindre MDF sans LDF :
Si vous souhaitez attacher un MDF sans LDF, vous pouvez suivre les étapes ci-dessous, il est testé et fonctionne bien
Créez une nouvelle base de données avec le même nom et les mêmes fichiers MDF et LDF
Arrêtez SQL Server et renommez le MDF existant à un nouveau et copiez l'original MDF à cet emplacement et supprimez les fichiers LDF.
Démarrer SQL Server
Maintenant, votre base de données sera marquée Suspective 5. Mettez à jour les sysdatabases pour mettre à jour en mode d'urgence. Cela n'utilisera pas de fichiers journaux dans le démarrage
Sp_configure "allow updates", 1 go Reconfigure with override GO Update sysdatabases set status = 32768 where name = "BadDbName" go Sp_configure "allow updates", 0 go Reconfigure with override GO
Redémarrez SQL Server. Maintenant, la base de données sera en mode d'urgence
Maintenant, exécutez le DBCC non documenté pour créer un fichier journal
DBCC Rebuild_log (dbname, 'c:\dbname.ldf') - étape non documentée pour créer un nouveau fichier journal.
(remplacez le nom du fichier dbname et journal en fonction de votre condition de votre condition)
Exécuter SP_RESETStatus
Redémarrez SQL Server et voir la base de données est en ligne.
Mise à jour: DBCC Rebuild_Log n'existe pas SQL2005 et plus. Cela devrait fonctionner:
USE [master]
GO
CREATE DATABASE [Test] ON
(FILENAME = N'C:\MSSQL\Data\Test.mdf')
FOR ATTACH_REBUILD_LOG
GO
avez-vous essayé d'ignorer le LDF et d'attacher simplement le MDF:
sp_attach_single_file_db [@dbname =] 'dbname', [@physname =] 'Nom physique'
je ne sais pas exactement ce qui va arriver à vos transactions ouvertes (probablement simplement perdues), mais cela pourrait récupérer vos données en ligne.
-enfiler
Voir ici: Reconstruire des bases de données système et restaurez des bases de données de l'échec du disque complet qui a une très belle explication
J'avais juste ce problème moi-même, mais aucune des réponses ci-dessus n'a fonctionné pour moi.
Mais au lieu de cela, j'ai trouvé cela qui a travaillé un régal et j'ai donc pensé que je partageais cela pour tout le monde:
http://www.kodyaz.com/articles/sql-server-attach-database-mdf-file.aspx
Trouvé une autre façon qui fonctionne complètement:
J'ai eu une base de données de travail après avoir essayé tout ce qui précède qui a échoué pour moi.
J'espère que c'est facile de le faire,
Exécutez la requête suivante
sp_attach_single_file_db @ dbname = 'dbname', @ physname = 'c:\base de données\dbname.mdf'
Où dbname
est que vous souhaitez montrer dans l'explorateur d'objets, où @physname
est l'emplacement local de FilePath de votre fichier MDF.
J'espère que cela aidera quelqu'un, j'ai fait par ci-dessus, a obtenu la structure et aussi des données.
Testé dans SQL Server 2000 et 2008. Dans SQL Server 2000, cela ne fonctionne pas, mais fonctionne parfaitement en 2008.