Neulich gelang das Anlegen einer neuen Datenbank auf einem Microsoft SQL Server 2012 nicht. Unter keinem Benutzer, weder per Windows- noch per SQL Server-Authentifizierung, war es möglich die Datenbank anzulegen.
Fehler bei Erstellen für Datenbank 'Test'. (Microsoft.SqlServer.Smo)
Zusätzliche Informationen
Ausnahme beim Ausführen einer Transact-SQL-Anweisung oder eines Transact-SQL-Batches. (Microsoft.SqlServer.ConnectionInfo)
Es konnte keine exklusive Sperre für die model-Datenbank erhalten werden. Wiederholen Sie den Vorgang zu einem späteren Zeitpunkt.
Fehler bei CREATE DATABASE. Einige angezeigte Dateinamen konnten nicht erstellt werden. Überprüfen Sie zugehörige Fehler. (Microsoft SQL Server, Fehler: 1807)
Lösungsmöglichkeit 1
Die Verbindung im Management Studio trennen und nochmals an dem Server anmelden.
Lösungsmöglichkeit 2
Einige Zeit warten. Nach einem Tag war das Problem schlicht nicht mehr da. Vermutlich aufgrund eines Serverneustarts.
Lösungsmöglichkeit 3
Herausfinden ob die Datenbank „Model“ bereits gesperrt ist. Diese Datenbank wird für das Anlegen einer neuen Datenbank benötigt:
1 2 3 4 5 6 7 |
Use master GO IF EXISTS(SELECT request_session_id FROM sys.dm_tran_locks WHERE resource_database_id = DB_ID('Model')) PRINT 'Model Database being used by some other session' ELSE PRINT 'Model Database not used by other session' |
Wenn die Datenbank tatsächlich gesperrt ist, kann man rausfinden welche Session daran schuld ist:
1 2 |
SELECT request_session_id FROM sys.dm_tran_locks WHERE resource_database_id = DB_ID('Model') |
Das Ergebnis könnte z. B. Session 10 sein.
Nun kann man noch nachschauen, was in der entsprechenden Session für eine Abfrage ausgeführt wird:
1 |
DBCC InputBuffer(10) |
Nachdem man geklärt hat ob die Abfrage noch laufen muss oder nicht, kann man dann die entsprechende Session killen:
1 |
KILL 10 |
Danach sollte es beim Anlegen der Datenbank keinen Fehler mehr geben.
Quelle:
https://dbasqlserver13.blogspot.de/2013/10/error-1807-could-not-obtain-exclusive.html