it-swarm.com.de

SQL Server 2008 R2 bleibt im Einzelbenutzermodus hängen

Nachdem eine DB-Bereitstellung (aus einem VS SQL Server-Datenbankprojekt) auf einer lokalen Datenbank ausgeführt wurde, die fehlgeschlagen ist, wurde die Datenbank in einem Zustand belassen, in dem der Einzelbenutzermodus aktiviert ist (die Bereitstellung wird als Einzelbenutzermodus ausgeführt). 

Wenn ich eine Verbindung von SSMS her herstelle und etwas wie das Folgende versuche:

ALTER DATABASE MyDatabase
SET MULTI_USER;
GO

Ich bekomme den Fehler:

Änderungen am Status oder an den Optionen der Datenbank 'MyDatabase' können derzeit nicht vorgenommen werden. Die Datenbank befindet sich im Einzelbenutzermodus, und derzeit ist ein Benutzer mit der Datenbank verbunden.

Ich habe versucht, die Datenbank offline zu setzen, was laut SSMS erfolgreich ist, aber es scheint nichts zu tun. Bisher konnte ich das nur umgehen, indem ich die Datenbank löschte und neu erstellte (was in Ordnung ist, da es sich nur um eine lokale Testdatenbank handelt). Ich möchte jedoch den Status zurücksetzen können.

Wie kann ich SQL Server überzeugen, diese Datenbank aus dem Einzelbenutzermodus zu entfernen?

24
Paul Michaels

Im ersten Lauf nach Abfrage in der Masterdatenbank

exec sp_who

Wenn Sie den Täter nicht finden können, versuchen Sie es

SELECT request_session_id FROM sys.dm_tran_locks 
WHERE resource_database_id = DB_ID('YourDatabase')

Beenden Sie anschließend alle Prozesse, die Ihre Datenbank verwenden, mit der folgenden Abfrage:

KILL spid

Führen Sie dann folgende Abfrage aus:

USE Master
ALTER DATABASE YourDatabase SET MULTI_USER
90
mehdi lotfi

Dies wurde beantwortet hier , der Code lautet:

use master
ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

--do you stuff here 

ALTER DATABASE YourDatabase SET MULTI_USER
0
Tristan

Verwenden Sie DAC (dedizierte Admin-Verbindung). Vergewissern Sie sich, dass Sie es zuerst aktiviert haben.__In SSMS geben Sie admin: für Server Name Ein, nachdem Sie eine Verbindung zu master ALTER DATABASE SET MULTI_USER hergestellt haben 

0
Ankit

Versuchen Sie die folgenden Befehle 

Führen Sie zuerst diese drei Befehle aus

USE [master] 
SET DEADLOCK_PRIORITY HIGH
exec sp_dboption MyDBName, 'single user', 'FALSE';

Führen Sie diese beiden Befehle zum zweiten Mal aus

ALTER DATABASE MyDBName SET MULTI_USER WITH NO_WAIT
ALTER DATABASE MyDBName SET MULTI_USER WITH ROLLBACK IMMEDIATE
0
Pankil Agrawal