J'ai ce problème dans l'instance locale de SQL Server 2008 R2 sur ma machine. Il existe plusieurs bases de données sur cette instance. Mais je ne suis pas capable de voir l'un d'eux depuis l'objet Explorer.
Je peux interroger mes bases de données à partir de la nouvelle fenêtre de requête. Mais pas capable de voir l'un d'eux.
Chaque fois que j'essaye d'explorer les bases de données, j'obtiens cette erreur:
Impossible d'ouvrir la base de données 'msdb'. Il a été marqué SUSPECT par récupération. Consultez le journal des erreurs SQL Server pour plus d'informations. (Microsoft SQL Server, erreur: 926).
J'ai essayé
J'ai également essayé des combinaisons de ci-dessus, mais rien ne fonctionne.
Mon système d'exploitation est Windows 7 Ultimate (64 bits).
La version de SQL Server Management Studio est 10.50.2500.0.
J'ai trouvé ma réponse dans this link.
EDIT: Y compris les deux solutions de link en raison de Linkrot possible à l'avenir.
Connectez-vous avec un compte sa
, pour les deux solutions.
Ouvrir une nouvelle fenêtre de requête
EXEC sp_resetstatus 'DB_Name';
(Explication: sp_resetstatus
désactive l'indicateur suspect sur une base de données. Cette procédure met à jour les colonnes de mode et d'état de la base de données nommée dans sys.databases
. Notez également que seules les connexions disposant des privilèges sysadmin peuvent effectuer cette opération.)
ALTER DATABASE DB_Name SET EMERGENCY;
(Explication: une fois que la base de données est définie sur le mode EMERGENCY, elle devient une copie READ_ONLY et seuls les membres des rôles de serveur sysadmin à serveur fixe disposent des privilèges pour y accéder.)
DBCC checkdb('DB_Name');
(Explication: vérifie l'intégrité de tous les objets.)
ALTER DATABASE DB_Name SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
(Explication: Définissez la base de données en mode mono-utilisateur.)
DBCC CheckDB ('DB_Name', REPAIR_ALLOW_DATA_LOSS);
(Explication: Réparer les erreurs)
ALTER DATABASE DB_Name SET MULTI_USER;
(Explication: définissez la base de données sur le mode multi-utilisateur afin que d'autres puissent y accéder.)
Dans l'explorateur d'objets -> L'élément de connexion ouvert -> clic droit -> Arrêter
Ouvrez le Panneau de configuration -> Outils d’administration -> Services
Sélectionnez l’élément Sql Server (MSSQLSERVER)
dans Services -> Clic droit -> Arrêter
Ouvrez C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
Déplacez MSDBData.mdf
& MSDBlog.ldf
vers un autre endroit
Copiez ensuite ces fichiers à partir d'un nouvel emplacement et mettez-les à l'ancien
C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
En connexion ouverte dans l'explorateur d'objets -> clic droit -> Démarrer
Ensuite, actualisez la base de données.
Ensuite, vous pouvez détacher le fichier MSDB
La 2ème solution a fonctionné pour moi.
Note: Je devais obtenir "msdb" les fichiers mdf et ldf de la base de données à partir d'une autre machine en état de fonctionnement pour le faire fonctionner.
Mon problème a été résolu instantanément en remplaçant les fichiers MSDBData.mdf et MSDBlog.ldf existants
dans C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA. J'ai copié ces 2 fichiers à partir d'une autre machine en état de fonctionnement, arrêté le service SQL en cours d'exécution sur ma machine, supprimé les 2 fichiers existants ci-dessus de leur emplacement et ajouté les 2 nouveaux copiés. Une fois que j'ai redémarré le service, les problèmes ont été résolus.