[database] SQL Server 데이터베이스를 오프라인으로 전환 할 때의 대기 시간

나는 내 dev에 데이터베이스에 일부 오프라인 유지 보수 (dev에 데이터베이스가 라이브 백업에서 복원)을 수행하기 위해 노력하고있어,하지만 SQL Server Management Studio를 통해 ‘오프라인 상태’명령을 수행하는 매우 천천히 – 삼십분 플러스 지금의 순서. 나는 단지 내 wits 끝에 있으며 속도 문제를 일으키는 원인 또는 해결 방법에 대한 온라인 참조를 찾을 수없는 것 같습니다.

일부 사이트에서는 데이터베이스에 대한 열린 연결로 인해 속도가 느려질 수 있다고 제안했지만이 데이터베이스를 사용하는 유일한 응용 프로그램은 개발자 컴퓨터의 IIS 인스턴스이고 서비스가 중지되었습니다. 더 이상 열린 연결이 없습니다.

이 속도 저하의 원인은 무엇이며 속도를 높이려면 어떻게해야합니까?



답변

추가 검색 (gbn의 답변과 kMike의 답변에 대한 u07ch의 의견에서 영감을 얻은 새로운 검색어) 후 2 초 안에 성공적으로 완료되었습니다.

ALTER DATABASE <dbname> SET OFFLINE WITH ROLLBACK IMMEDIATE

(최신 정보)

그래도 다음과 같은 오류가 발생하면 이 블로그 게시물에서 영감을 얻은대로 수정할 수 있습니다 .

데이터베이스 ‘dbname’에 잠금을 배치 할 수 없으므로 ALTER DATABASE가 실패했습니다. 나중에 다시 시도하십시오.

다음 명령을 실행하여 데이터베이스를 잠그는 사람을 찾을 수 있습니다.

EXEC sp_who2

그리고 SPID다음 명령에서 찾은 것을 사용 하십시오.

KILL <SPID>

그런 다음 ALTER DATABASE명령을 다시 실행 하십시오. 이제 작동합니다.


답변

어딘가에서 DB에 연결되었을 가능성이 높습니다 (드문 예 : 비동기 통계 업데이트) )

연결을 찾으려면 sys.sysprocesses를 사용하십시오.

USE master
SELECT * FROM sys.sysprocesses WHERE dbid = DB_ID('MyDB')

강제로 연결을 끊으려면 ROLLBACK IMMEDIATE를 사용하십시오.

USE master
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE


답변

이 DB에 연결된 열려있는 SQL Server Management Studio 창이 있습니까?

단일 사용자 모드로 설정 한 후 다시 시도하십시오.


답변

내 경우에는 너무 많은 시간을 기다린 후에 인내심이 없었으며 단순히 관리 스튜디오를 닫았습니다. 종료하기 전에 성공 메시지 db가 오프라인 상태임을 표시했습니다. 파일 이름을 바꿀 수있었습니다.


답변

저장 프로 시저 sp_who2를 실행하십시오.

이를 통해 차단 잠금 장치가 있는지 확인할 수 있습니다.


답변

SSMS에서 : SQL 서버 아이콘, 활동 모니터를 마우스 오른쪽 단추로 클릭하십시오. 프로세스를 엽니 다. 처리 된 연결을 찾으십시오. 프로세스를 마우스 오른쪽 단추로 클릭하십시오.


답변

이 유형의 항목을 실행할 때마다 항상 트랜잭션 로그를 생각해야합니다. 롤백 즉시 alter db statment는 이것이 사실임을 나타냅니다. 이것 좀 봐: http://msdn.microsoft.com/en-us/library/ms189085.aspx

검사 점 등을 요약합니다. 로그의 트랜잭션을 저장할 가치가 있는지 여부를 결정한 다음 그에 따라 db를 실행할 모드를 선택해야합니다. 기다릴 이유는 없지만 데이터를 잃을 이유도 없습니다. 둘 다 가질 수 있습니다.