Vous avez un problème vraiment étrange et ennuyeux. D'une manière ou d'une autre, l'instance de SQL Server 2008 R2 s'exécutant sur notre serveur a été quelque peu corrompue.
Tout d'abord, nous avons remarqué que la base de données que nous avons créée hier manquait. Donc, nous avons regardé autour de nous et avons constaté qu'il était toujours là, mais détaché. Donc, nous avons essayé de joindre le mdf mais avons reçu un message qui ressemblait à quelque chose The file is currently in use
.
Je pensais que c'était étrange, alors j'ai redémarré SQL Server. Même chose ... d'accord, il est temps de prendre des mesures drastiques ... alors, j'ai arrêté le service, zippé le mdf, démarré le service, décompressé puis essayé de le restaurer. Le message ci-dessus avait disparu, mais j'ai ensuite:
Impossible de joindre une base de données portant le même nom qu'une base de données existante
Aie. Bien sûr, il ne s'affiche pas dans l'explorateur de base de données, donc aucune idée de ce qui se passe ... en dernier recours:
DROP DATABASE [DatabaseName]
Bien sûr, cela n'a pas fonctionné .. cela me dit que la base de données n'existe pas. Donc, je suis bloqué ... à un moment donné, SQL Server pense que la base de données existe et à un autre moment, il pense que la base de données n'existe pas. Évidemment, elle 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?
sys.databases
?? Par exemple, affiche-t-ilSELECT * FROM sys.databases
toujours votre base de données?SELECT name, user_access_desc, state_desc FROM sys.databases
révèle-t-il?Réponses:
Bon .. Je l'ai compris .. un clown ici (qui ne s'en rendra pas compte) a renommé la base de données pour que son nom dans SSMS soit différent des noms de fichiers mdf et ldf .. et pas juste un peu différent .. . complètement différent. LOL. Merci à tous pour vos suggestions utiles de toute façon.
la source
Si vous n'aviez pas l'autorisation de voir la base de données, ce serait exactement les symptômes. La base de données n'apparaîtra pas dans vos vues. Êtes-vous sûr de ne pas avoir simplement zappé le ou les fichiers d'une base de données à laquelle vous n'aviez pas accès? Êtes-vous un administrateur système?
Mise à jour
La base de données était-elle détachée ou hors ligne ? Quand vous dites de
So, we looked around and found that it was still there, but detached
quoi parlez-vous exactement? Où avez-vous regardé, qu'avez-vous trouvé? Identifier qu'une base de données a été «détachée» (par opposition à, disons, supprimée) n'est pas anodin.la source
Recherchez 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 notez que vous ne pouvez créer qu'une des bases de données, et peu importe celle que vous créez en premier, vous ne pouvez créer que celle-ci.
la source
Exécutez 'DBCC CHECKDB' sur le maître, msdb et la base de données pour voir ce qu'il dit. Il peut être nécessaire de mettre le système en mode mono-utilisateur pour que dbcc s'exécute en mode réparation avec perte de données. Ou restaurez simplement vos sauvegardes de master et msdb selon le cas.
la source
Pour moi, cela a été résolu en actualisant les bases de données. J'ai fait une récupération infructueuse et j'ai vu db, qui n'a pas pu être supprimé avec le même message d'erreur: "La base de données n'existe pas sur le serveur."
la source
J'avais ce même problème en utilisant SQL Server 2008r2.
J'essayais de dupliquer une base de données (versioning foo) et j'ai fini par confondre le serveur SQL. SQL Server Management Studio pensait que la base de données existait (le MDF et le LDF l'ont fait) mais la base de données master ne pensait pas que la base de données existait (n'apparaissait pas dans sys.databases)
L'astuce consistait à renommer les fichiers MDF et LDF, puis à créer la base de données à partir de SQL
create database [db name here]
puis à supprimer la base de données et enfin à attacher les fichiers MDF et LDF d'avant.la source