이미 단일 사용자 모드 인 데이터베이스에 액세스하려고하면 먼저 데이터베이스에 대한 모든 연결을 닫아야합니다. 그렇지 않으면 오류 메시지가 나타납니다.
메시지 5064, 수준 16, 상태 1, 줄 1 현재 데이터베이스 이름 'DatabaseName'의 상태 또는 옵션을 변경할 수 없습니다. 데이터베이스가 단일 사용자 모드에 있으며 사용자가 현재 연결되어 있습니다. 메시지 5069, 수준 16, 상태 1, 줄 1 ALTER DATABASE 문이 실패했습니다.
다음 쿼리는 데이터베이스에 액세스하는 프로세스를 죽이고 :
-- Create the sql to kill the active database connections
declare @execSql varchar(1000), @databaseName varchar(100)
-- Set the database name for which to kill the connections
set @databaseName = 'DatabaseName'
set @execSql = ''
select @execSql = @execSql + 'kill ' + convert(char(10), spid) + ' '
from master.dbo.sysprocesses
where db_name(dbid) = @databaseName
and
DBID <> 0
and
spid <> @@spid
exec(@execSql)
GO
그런 다음 평소와 같이 데이터베이스를 다중 사용자 모드로 되돌릴 수 있어야합니다.
ALTER DATABASE 'DatabaseName' SET MULTI_USER