[sql] 단일 사용자 모드에서 다중 사용자로 데이터베이스 설정

SINGLE_USER모드에서 복원 된 데이터베이스를로 설정하는 데 도움이 필요 합니다 MULTI_USER. 내가 달릴 때마다

ALTER DATABASE BARDABARD
SET MULTI_USER;
GO

이 오류가 발생합니다.

현재 데이터베이스 ‘BARDABARD’의 상태 또는 옵션을 변경할 수 없습니다.

데이터베이스가 단일 사용자 모드이고 사용자가 현재 연결되어 있습니다.

SINGLE_USER다른 모드로 설정하려면 비 모드에 있어야하지만 데이터베이스가 다른 모드에서는 데이터베이스를 설정할 수 없습니다 SINGLE_USER.



답변

“사용자가 현재 연결되어 있습니다”는 SQL Server Management Studio 창 자체 일 수 있습니다. 마스터 데이터베이스를 선택하고 ALTER쿼리를 다시 실행 하십시오.


답변

이 오류 메시지는 일반적으로 DB에 연결된 다른 프로세스가 있음을 의미합니다. 연결된 것을 확인하려면 이것을 실행하십시오 :

exec sp_who

그러면 프로세스가 반환되고 다음을 실행할 수 있습니다.

kill [XXX]

여기서 [xxx]는 spid죽이려고하는 프로세스입니다.

그런 다음 위의 진술을 실행할 수 있습니다.

행운을 빕니다.


답변

변경 사항을 즉시 롤백하는 옵션을 추가 할 수 있습니다.

ALTER DATABASE BARDABARD
SET MULTI_USER
WITH ROLLBACK IMMEDIATE
GO


답변

SQL Server 2012 :

를 마우스 오른쪽 버튼으로 클릭 DB > Properties > Options > [Scroll down] State > RestrictAccess > select Multi_user하고 확인을 클릭하십시오.

짜잔!


답변

나는 같은 문제가 있었고 다음 단계에 의해 수정되었습니다-참조 : http://giladka8.blogspot.com.au/2011/11/database-is-in-single-user-mode-and.html

use master
GO

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 = 'dbname'
GO

kill 56 --=> kill the number in spid field
GO

exec sp_dboption 'dbname', 'single user', 'FALSE'
GO


답변

이것은 나를 위해 잘 작동했습니다.

단계 1. 데이터베이스 엔진을 마우스 오른쪽 단추로 클릭하고 활동 모니터를 클릭 한 후 연결중인 프로세스를 확인하십시오. 특정 사용자를 종료하고 쿼리를 즉시 실행하십시오.

2 단계.

USE [master];
GO
ALTER DATABASE [YourDatabaseNameHere] SET MULTI_USER WITH NO_WAIT;
GO  

데이터베이스를 새로 고칩니다.


답변

실제로 하나의 명령이 새로 고쳐지고 다시 잠길 때까지 프로세스와 경쟁 조건에 의해 DB가 거의 잠겨있는 문제가 발생했습니다. 다음 명령을 다시 실행해야했습니다. SSMS에서 저를 오프라인 상태로 만들었습니다. 거기서부터 복원 작업을 수행하고 온라인으로 돌아 왔습니다.

처음 달렸다 :

USE master
GO

DECLARE @kill varchar(8000) = '';
SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), spid) + ';'
FROM master..sysprocesses
WHERE dbid = db_id('<yourDbName>')

EXEC(@kill);

그런 다음 (두 번째 쿼리 창에서) 직후 :

USE master ALTER DATABASE <yourDbName> SET OFFLINE WITH ROLLBACK IMMEDIATE

내가 필요한 것을 한 다음 다시 온라인으로 가져 왔습니다. 내 문제를 결합하고 해결하기 위해이 조각을 쓴 모든 사람들에게 감사드립니다.