Banco de dados do SQL Server 2008 R2 preso no modo de usuário único

1

Tentamos restaurar um banco de dados e ele falhou por algum motivo. Agora está preso no modo de usuário único. Aqui está o que eu tentei:

select d.name, d.dbid, spid, login_time, nt_domain, nt_username, loginame
from sysprocesses p inner join sysdatabases d on p.dbid = d.dbid
where d.name = 'mydb'

Ele retornou um resultado e eu o matei usando kill 77 . Eu li em algum lugar que você também deve matar o id mais um para uma boa medida, então também corremos kill 78 . Neste ponto, a execução da consulta retornou novamente 0 conexões.

Eu tentei todos estes:

exec sp_dboption 'mydb', 'single user', 'FALSE';

SET DEADLOCK_PRIORITY HIGH
exec sp_dboption 'mydb', 'single user', 'FALSE';

ALTER DATABASE [mydb] SET MULTI_USER WITH NO_WAIT

ALTER DATABASE [mydb] SET MULTI_USER WITH ROLLBACK IMMEDIATE

Todos eles me dão

Msg 5064, Level 16, State 1, Line 1
Changes to the state or options of database 'mydb' cannot be made at this time. The database is in single-user mode, and a user is currently connected to it.

Eu percebo que provavelmente poderia resolver o problema reiniciando o serviço sql ou talvez reinicializando o servidor. No entanto, este é um servidor de produção, então prefiro evitar isso.

Alguma sugestão?

    
por Martin Ørding-Thomsen 16.07.2012 / 10:56

1 resposta

3

Dê uma olhada rápida no SPID

USE master 
EXEC sp_who

A partir daí, calcule o banco de dados e mate o bloqueio correspondente.

Alternar do modo individual para o modo multiusuário

ALTER DATABASE 'DB NAME' SET MULTI_USER WITH ROLLBACK IMMEDIATE

    
por 16.07.2012 / 11:15