web-dev-qa-db-fra.com

La base de données MSDB ne peut pas être ouverte

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é 

  1. Rafraîchir la connexion
  2. Reconnexion de la connexion 
  3. Redémarrage du service SQL Server (MSSQLSERVER).
  4. Redémarrage de SQL Server Management Studio
  5. Redémarrer ma machine

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.

12
Devraj Gadhavi

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.

Solution 1

  1. Ouvrir une nouvelle fenêtre de requête

  2. 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.)

  3. 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.)

  4. DBCC checkdb('DB_Name'); (Explication: vérifie l'intégrité de tous les objets.)

  5. ALTER DATABASE DB_Name SET SINGLE_USER WITH ROLLBACK IMMEDIATE; (Explication: Définissez la base de données en mode mono-utilisateur.)

  6. DBCC CheckDB ('DB_Name', REPAIR_ALLOW_DATA_LOSS); (Explication: Réparer les erreurs)

  7. 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.)

Solution 2

  1. Dans l'explorateur d'objets -> L'élément de connexion ouvert -> clic droit -> Arrêter Object Explorer

  2. Ouvrez le Panneau de configuration -> Outils d’administration -> Services Control Panel -> Administrative Tools -> Services

  3. Sélectionnez l’élément Sql Server (MSSQLSERVER) dans Services -> Clic droit -> Arrêter Stop Sql Server (MSSQLSERVER)

  4. Ouvrez C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA

  5. Déplacez MSDBData.mdf & MSDBlog.ldf vers un autre endroit

  6. Copiez ensuite ces fichiers à partir d'un nouvel emplacement et mettez-les à l'ancien

    C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA

  7. En connexion ouverte dans l'explorateur d'objets -> clic droit -> Démarrer

  8. Ensuite, actualisez la base de données.

  9. 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.

13
Devraj Gadhavi

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.

0
Yashwant Kumar Sahu