답변:
데이터베이스를 사용하고 있지 않다는 사실을 모르면 GUI에서 "Take Offline"을 사용하지 마십시오. 무엇이든. 약간의 레거시 작업 없이는 알기가 어렵 기 때문에이 스크립트를 어딘가에 저장하고 항상 사용하지 않겠습니까?
USE [master];
GO
ALTER DATABASE $dbname$ SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE $dbname$ SET OFFLINE;
그리고 물론 역수 :
ALTER DATABASE $dbname$ SET ONLINE;
GO
ALTER DATABASE $dbname$ SET MULTI_USER;
SINGLE_USER
SQL Server를 사용하려면 데이터베이스에 단독으로 액세스해야하므로 기존 사용자 를 먼저 설정해야하는 이유 는 기존 사용자를 제거하는 것입니다. 오프라인입니다. 이제 대규모 백업 작업이나 ETL 작업 도중에이 작업을 수행하는 것처럼 문제가 될 수있는 것처럼 현재 데이터베이스를 사용중인 사람을 확인하기 위해 추가 작업을 수행 할 수 있습니다.
편집 : 이것에 대해 Connect에 대한 제안을 제출했으며 ( Connect # 2687832 참조 ) Trello ( "Object Explorer"에 보관)에 게시했습니다 .
이미 정지 상태에 있다면 서버를 통해 열린 연결을 검색 할 수 있습니다.
sp_who2
master와 같은 다른 데이터베이스에서
데이터베이스가 오프라인으로 전환하려는 데이터베이스가있는 곳의 결과를 스캔하십시오.
해당 행의 spid (프로세스 ID) 열 값에 유의하십시오.
한 번에 하나씩
kill ##
여기서 "##"은 spid입니다.
확실히 프로세스가 실행 상태를 유지하는 데 중요하지 않은지 확인하십시오. 최신 명령을 완료하지 않고 경고없이 종료됩니다.
ALTER DATABASE foo SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
먼저 발행함으로써 차단되지 않는 방식 으로이 작업을 수행 할 수 있습니다.