SQL Server: Einzelbenutzermodus
ausschalten
Ich habe aus Versehen meine Datenbank im SQL Server auf
Einzelbenutzermodus umgeschaltet, als ich Daten wiederherstellen wollte.
Jetzt ist die Datenbank gesperrt und wenn ich die Eigenschaften
öffnen möchte um den Einzelbenutzermodus auszuschalten, dann kommt genau diese
Meldung des Einzelbenutzermodus, den ich ja wiederum ausschalten möchte.
Betrifft: Set database from SINGLE USER mode to MULTI USER
Hier die Anzeige, wenn man auf die Eigenschaften der
Datenbank gehen möchte, um den Einzelbenutzermodus auszuschalten.
Der Dialog: Eigenschaften der Datenbank lässt sich nicht
öffnen, da schon ein anderer Benutzer angemeldet ist.
Fehlermeldung:
TITEL: Microsoft SQL Server Management Studio
Das angeforderte Dialogfeld kann nicht angezeigt werden.
ZUSÄTZLICHE INFORMATIONEN:
Das angeforderte Dialogfeld kann nicht angezeigt werden. (SqlMgmt)
Ausnahme beim Ausführen einer Transact-SQL-Anweisung oder
eines Transact-SQL-Batches. (Microsoft.SqlServer.ConnectionInfo)
Die
Programmierer-Datenbank ist bereits geöffnet und kann jeweils nur einen
Benutzer haben. (Microsoft SQL Server, Fehler: 924)
Hilfe erhalten Sie durch Klicken auf: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=12.00.4213&EvtSrc=MSSQLServer&EvtID=924&LinkId=20476
Änderung der Datenbank von Einzelbenutzer in Mehrbenutzer Modus
in einer Abfrage in TransactSQL
Dieses script ändert den Modus einer Datenbank in den
Mehrbenutzermodus
use master
go
ALTER DATABASE Programmierer SET
MULTI_USER
go
|
Meldung
Meldung 5064,
Ebene 16, Status 1, Zeile 3
Änderungen am
Status oder an Optionen der Programmierer-Datenbank können zu diesem
Zeitpunkt nicht vorgenommen werden. Die Datenbank befindet sich im
Einzelbenutzermodus, und zurzeit ist ein Benutzer mit ihr verbunden.
Meldung 5069,
Ebene 16, Status 1, Zeile 3
Fehler bei der
ALTER DATABASE-Anweisung.
|
Lösung:
Man muss den Prozess, der schon mit der Datenbank verbunden
ist, löschen. Es kann zum Beispiel sein, dass sich ein Webserver IIS oder ein
Client schon mit der Datenbank verbunden hat.
Schritt 1: ermitteln, welche ProzessID spid mit der
Datenbank verbunden ist
Mit diesem SQL Server script:
select *
from sysprocesses p inner join sysdatabases d on p.dbid = d.dbid
where d.name =
'meine_Datenbank'
|
script im SQL Server (TransactSQL) zum Beenden des
Einzelbenutzermodus und umschalten in Mehrbenutzermodus.
Die Zeile Kill 51 schaltet den Task aus, der die Umschaltung
verhindert
use master
go
select *
from sysprocesses
p inner join sysdatabases d on p.dbid = d.dbid
where d.name = 'Programmierer'
GO
Kill 51
go
ALTER DATABASE Programmierer SET
MULTI_USER
go
|
script ausführen
Sobald man den Task kennt, der die Änderung verhindert, muss
man das komplette script durchlaufen lassen, indem man alles Markiert und dann
F5 drückt oder Ausführen drückt
Nachher:
Nach dem Durchlauf des Abfrage-scripts ist die Datenbank
wieder in dem normalen Mehrbenutzermodus
Dokumentation,
Frage:
kann man den Einzelbenutzermodus ausschalten indem man den
Datenbankserver neu startet?
Nein
Kein Erfolg: SQL Server neustarten
Nach dem Neustart des SQL Servers:
War die Datenbank immer noch gesperrt oder in Einzelbenutzermodus