web-dev-qa-db-fra.com

SQL Server dans un état de confusion: la base de données existent-elle ou n'est-ce pas?

Vous avez un problème vraiment étrange et gênant .. L'instance de SQL Server 2008 R2 exécutée sur notre serveur est devenue quelque peu corrompue.

Premièrement, nous avons remarqué que la base de données que nous avons créée hier était manquante. Donc, nous avons regardé autour de vous et avons constaté que c'était toujours là, mais détaché. Nous avons donc essayé de joindre le MDF mais j'ai reçu un message qui était quelque chose comme The file is currently in use.

Je pensais que c'était impair, alors redémarré SQL Server. Même chose ... d'accord, heure des mesures drastiques ... Ainsi, j'ai arrêté le service, a lancé le MDF, a démarré le service, l'a décompressé, puis essayé de le restaurer. Le message ci-dessus était parti, mais alors j'ai eu:

Impossible de joindre une base de données avec le même nom qu'une base de données existante

Aie. Bien sûr, il ne figure pas dans l'explorateur de la base de données, donc aucune idée de ce qui se passe ... Dernier recours:

DROP DATABASE [DatabaseName]

Bien sûr que cela n'a pas fonctionné .. Cela me dit que la base de données n'existe pas. Donc, je suis coincé ... à un point SQL Server pense que la base de données existe et à un autre point, elle pense que la DB n'existe pas. De toute évidence, c'est dans un état de confusion.

Quelqu'un a-t-il déjà vu cela avant? Vous avez des idées sur la façon de le réparer?

8
Matt

Droite .. Je l'ai compris .. Certains clowns ici (qui ne posséderont pas) renommé DB de sorte que son nom dans SSMS soit différent des noms de fichiers MDF et LDF .. et pas seulement un peu différent .. . complètement différent. MDR. Merci de toute façon pour vos suggestions utiles.

5
Matt

Si vous n'avez pas eu la permission de voir la base de données, ce serait exactement les symptômes. La base de données ne serait pas apparu dans vos points de vue. Êtes-vous sûr de ne pas simplement zaper le (s) fichier (s) d'une base de données que vous n'avez pas accédé? Opérez-vous comme une sysadmin?

Mettre à jour


Était la base de données détachée ou hors ligne? Lorsque vous dites So, we looked around and found that it was still there, but detached De quoi parlez-vous exactement? avez-vous regardé, qu'as-tu trouvé? Identifier qu'une base de données a été "détachée" (par opposition à, dire, abandonnée) n'est pas triviale.

4
Remus Rusanu

Requête sys.databases. Il se pourrait que la base de données ait été créée avec un espace à la fin de son nom. Exécutez le code ci-dessous et remarquez que vous ne pouvez créer que l'une des bases de données et que vous ne pouvez pas créer d'abord que vous ne pouvez en créer qu'un.

create database [test]
create database [test ]
3
mrdenny

Exécutez 'DBCC CheckDB' sur Master, MSDB et la base de données Soi-même pour voir ce qu'il dit. Peut avoir besoin de mettre le système en mode utilisateur unique pour que DBCC soit exécuté en mode de réparation avec une perte de données. Ou simplement restaurer vos sauvegardes de Master et MSDB selon que nécessaire.

0
Ian P

Pour moi, cela a été résolu par des bases de données rafraîchissantes. J'ai fait une récupération et une note de données de récupération infructueuse, qui n'ont pas été supprimées avec le même message d'erreur: "La base de données n'existe pas sur le serveur."

0
Raduga