Ich habe ein wirklich seltsames, nerviges Problem. Irgendwie ist die Instanz von SQL Server 2008 R2, die auf unserem Server ausgeführt wird, etwas beschädigt.
Zuerst haben wir festgestellt, dass die Datenbank, die wir gestern erstellt haben, fehlt. Also sahen wir uns um und stellten fest, dass es immer noch da war, aber losgelöst. Also haben wir versucht, das MDF anzuhängen, aber eine Nachricht erhalten, die so etwas wie war The file is currently in use
.
Ich fand das seltsam und startete SQL Server neu. Das Gleiche ... okay, Zeit für drastische Maßnahmen ... also habe ich den Dienst gestoppt, das MDF komprimiert, den Dienst gestartet, entpackt und dann versucht, ihn wiederherzustellen. Die obige Nachricht war weg, aber dann bekam ich:
Es kann keine Datenbank mit demselben Namen wie eine vorhandene Datenbank angehängt werden
Autsch. Natürlich wird es nicht im Datenbank-Explorer angezeigt, also keine Ahnung, was los ist ... letzter Ausweg:
DROP DATABASE [DatabaseName]
Natürlich hat das nicht funktioniert. Das sagt mir, dass die Datenbank nicht existiert. Also, ich stecke fest ... an einem Punkt glaubt SQL Server, dass die Datenbank existiert und an einem anderen Punkt denkt, dass die Datenbank nicht existiert. Offensichtlich ist sie in einem Zustand der Verwirrung.
Hat das schon mal jemand gesehen? Haben Sie Ideen, wie Sie das Problem beheben können?
sys.databases
? ZBSELECT * FROM sys.databases
listet Ihre Datenbank noch auf?SELECT name, user_access_desc, state_desc FROM sys.databases
offenbart?Antworten:
Richtig .. Ich habe es herausgefunden .. Einige Clowns hier (denen es nicht gefällt) haben die Datenbank umbenannt, sodass sich ihr Name in SSMS von den Namen der MDF- und LDF-Dateien unterscheidet. Und nicht nur ein bisschen anders. . völlig anders. LOL. Trotzdem vielen Dank für Ihre hilfreichen Vorschläge.
quelle
Wenn Sie keine Berechtigung zum Anzeigen der Datenbank hätten, wären dies genau die Symptome. Die Datenbank wird in Ihren Ansichten nicht angezeigt. Sind Sie sicher, dass Sie nicht nur die Datei (en) einer Datenbank gezappt haben, auf die Sie keinen Zugriff hatten? Arbeiten Sie als Systemadministrator?
Aktualisieren
War die Datenbank getrennt oder offline ? Wenn Sie sagen,
So, we looked around and found that it was still there, but detached
wovon genau sprechen Sie? Wo hast du gesucht, was hast du gefunden? Es ist nicht trivial zu identifizieren, dass eine Datenbank "getrennt" wurde (im Gegensatz zum Beispiel zum Löschen).quelle
Fragen Sie sys.databases ab. Möglicherweise wurde die Datenbank mit einem Leerzeichen am Ende ihres Namens erstellt. Führen Sie den folgenden Code aus und beachten Sie, dass Sie nur eine der Datenbanken erstellen können. Es spielt keine Rolle, welche Sie zuerst erstellen. Sie können nur diese erstellen.
quelle
Führen Sie 'DBCC CHECKDB' auf Master, MSDB und der Datenbank selbst aus, um zu sehen, was darin steht. Möglicherweise muss das System in den Einzelbenutzermodus versetzt werden, damit dbcc im Reparaturmodus mit Datenverlust ausgeführt wird. Oder stellen Sie einfach Ihre Backups von Master und MSDB nach Bedarf wieder her.
quelle
Für mich wurde dies durch das Aktualisieren von Datenbanken gelöst. Ich habe eine erfolglose Wiederherstellung durchgeführt und db gesehen, die nicht mit derselben Fehlermeldung gelöscht werden konnte: "Die Datenbank ist auf dem Server nicht vorhanden."
quelle
Ich hatte das gleiche Problem mit SQL Server 2008r2.
Ich habe versucht, eine Datenbank zu duplizieren (Versionierung foo) und habe den SQL Server verwirrt. SQL Server Management Studio glaubte, dass die Datenbank vorhanden war (MDF und LDF), aber die Master-Datenbank glaubte nicht, dass die Datenbank vorhanden war (nicht in sys.databases angezeigt).
Der Trick bestand darin, die MDF- und LDF-Dateien umzubenennen, dann die Datenbank aus SQL zu erstellen, die Datenbank zu
create database [db name here]
löschen und schließlich die MDF- und LDF-Dateien von zuvor anzuhängen.quelle