[sql-server] 단일 사용자 모드 종료

현재 내 데이터베이스는 단일 사용자 모드입니다. 데이터베이스를 확장하려고하면 오류가 발생합니다.

데이터베이스 ‘my_db’에 액세스 할 수 없습니다. (ObjectExplorer)

또한 데이터베이스를 삭제하려고하면 오류가 발생합니다.

현재 데이터베이스 ‘my_db’의 상태 또는 옵션을 변경할 수 없습니다. 데이터베이스가 단일 사용자 모드에 있으며 사용자가 현재 연결되어 있습니다.

단일 사용자 모드를 종료하려면 어떻게합니까? 이 데이터베이스를 사용하는 사용자가 없습니다.

IIS를 사용하여 사이트를 탐색 할 때 발생하는 오류는 다음과 같습니다.

현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 생성되었습니다. 예외의 출처와 위치에 관한 정보는 아래 예외 스택 추적을 사용하여 식별 할 수 있습니다.

단일 사용자 모드 가이 문제를 일으키는 것처럼 느껴집니다.



답변

일반적으로 SSMS는 백그라운드에서 데이터베이스에 여러 연결을 사용합니다.

액세스 모드를 변경하기 전에 이러한 연결을 종료해야합니다.

먼저, 오브젝트 탐색기가 master와 같은 시스템 데이터베이스를 가리키는 지 확인하십시오.

둘째, sp_who2를 실행하고 데이터베이스 ‘my_db’에 대한 모든 연결을 찾으십시오. KILL { session id }세션 ID가 (으)로 SPID나열되는 곳 을 수행하여 모든 연결 을 종료하십시오 sp_who2.

셋째, 새 쿼리 창을 엽니 다.

다음 코드를 실행하십시오.

-- Start in master
USE MASTER;

-- Add users
ALTER DATABASE [my_db] SET MULTI_USER
GO

데이터베이스 파일 관리에 대한 내 블로그 기사 를 참조하십시오 . 이것은 파일 이동을 위해 작성되었지만 사용자 관리는 동일합니다.


답변

먼저 KILL현재 실행중인 모든 프로세스를 찾아보십시오 .

그런 다음, 다음 T-SQL을 실행하여 데이터베이스를 MULTI_USER모드 로 설정하십시오 .

USE master
GO
DECLARE @kill varchar(max) = '';
SELECT @kill = @kill + 'KILL ' + CONVERT(varchar(10), spid) + '; '
FROM master..sysprocesses
WHERE spid > 50 AND dbid = DB_ID('<Your_DB_Name>')
EXEC(@kill);

GO
SET DEADLOCK_PRIORITY HIGH
ALTER DATABASE [<Your_DB_Name>] SET MULTI_USER WITH NO_WAIT
ALTER DATABASE [<Your_DB_Name>] SET MULTI_USER WITH ROLLBACK IMMEDIATE
GO


답변

단일 사용자 모드에서 전환하려면 다음을 시도하십시오.

ALTER DATABASE [my_db] SET MULTI_USER

단일 사용자 모드로 다시 전환하려면 다음을 사용하십시오.

ALTER DATABASE [my_db] SET SINGLE_USER


답변

  1. 데이터베이스 섹션에서 데이터베이스를 마우스 오른쪽 단추로 클릭하십시오.
  2. “속성”을 선택하십시오
  3. “옵션”페이지를 선택하십시오
  4. “기타 옵션”을 아래로 스크롤하고 “액세스 제한”필드를 변경하십시오.

SQL Server의 옵션 페이지 스크린 샷


답변

나는 이것이 효과가 있다고 시도했다.

ALTER DATABASE dbName SET MULTI_USER WITH ROLLBACK IMMEDIATE


답변

나는 같은 문제가 있었고이 쿼리를 사용하여 kill_session_id를 찾았습니다.

Select request_session_id From sys.dm_tran_locks Where resource_database_id=DB_ID('BI_DB_Rep');


답변

CTRL + 1을 누릅니다.

데이터베이스를 잠그는 프로세스를 찾으십시오. dbname 열에서 db를 찾고 spid를 기록하십시오. 이제 그 문장을 실행해야합니다 :

kill <your spid>
ALTER DATABASE <your db> SET MULTI_USER;