Ich bin gerade dabei, eine Entwicklungsdatenbank auf dem Produktionsserver abzutrennen. Da dies ein Produktionsserver ist, möchte ich den SQL-Dienst nicht neu starten. Das ist das Worst-Case-Szenario.Datenbank trennen/offline nehmen fehlgeschlagen
Offensichtlich habe ich versucht, es durch SSMS zu lösen. Sagte mir, es gab eine aktive Verbindung und ich habe es getrennt. Als ich das zweite Mal losließ, sagte es mir, dass das unmöglich sei, seit es benutzt wurde.
Ich versuchte EXEC sp_detach_db
'DB' ohne Glück.
Ich habe versucht, die Datenbank offline zu bekommen. Das lief für ungefähr 15 Minuten, als mir langweilig wurde und ich es abstellte.
Wie auch immer, ich habe alles versucht ... Ich habe sichergestellt, dass alle Verbindungen mit dem Verbindungsindikator in detach Datenbank mit SSMS getötet wurden.
Die folgende ergab 0 Treffer:
USE master SELECT * FROM sys.sysprocesses WHERE dbid = DB_ID ('DB')
und Folgendes wird nun für 18 Minuten ausgeführt wird:
ALTER DATABASE DB SET OFFLINE MIT ROLLBACK SOFORT
Ich habe SMSS während dieser ganzen Zeit regelmäßig neu gestartet, um sicherzustellen, dass SSMS nicht der Übeltäter ist, indem ich etwas unsichtbar sperrte.
Gibt es nicht einen Weg, es brutal zu erzwingen? Das Datenbankschema ist etwas, das mir ziemlich am Herzen liegt, aber die Daten sind entbehrlich.
Hoffentlich gibt es eine Art schnelle Lösung? :)
Der DBA wird versuchen, den Prozess heute Nacht zurückzusetzen, aber ich würde gerne den Fix für diese nur für den Fall wissen.
Thx!
ps: Ich benutze DTC ... vielleicht könnte dies erklären, warum meine Datenbank plötzlich gesperrt wurde?
edit:
ich jetzt mache die folgende, die in einer unendlichen Ausführung des letzten Teils führt. Die erste Abfrage gibt sogar 0 zurück, also nehme ich an, dass das Töten der Benutzer nicht einmal von Bedeutung ist.
USE [master] GO
SELECT * FROM sys.sysprocesses WHERE dbid = DB_ID ('Datenbank')
DECLARE GO @return_value int
EXEC @return_value = [dbo].[Usp_KillUsers] @p_DBName = 'Datenbank'
SELECT 'Rückgabewert' = @return_value
ALTER DATABASE Datenbank SET OFFLINE MIT ROLLBACK IMMEDIATE
Auch für solche Aufgaben möchte ich am Anfang einen expliziten "Master verwenden", um sicherzustellen, dass ich nicht die DB verwende, die ich lösen möchte. –
Ich bin 100% sicher, dass ich die Datenbank nicht benutze. Ich habe jeden Ort überprüft, den Sie überprüfen können, um sicherzustellen, dass keine Verbindungen in dieser Datenbank aktiv sind. – SpoBo