2011-02-15 3 views
0

이 맞춤법 검사는 테스트 환경에서 쉽게 재현 할 수 있습니다. SSMS를 열고 서버에 연결하십시오. MYTEST 데이터베이스에 연결된 새 쿼리 탭을 엽니 다 (MYTEST가 온라인이라고 가정). 이 탭으로 아무 것도하지 마십시오. 같은 데이터베이스에 연결된 새 탭을 엽니 다. 새 탭SSMS 탭 내 차단

USE master 
GO 
ALTER DATABASE MYTEST 
SET OFFLINE 

귀하의 코드는 당신이 당신의 첫 번째 탭에서 실행중인 프로세스에 의해 차단 머리 것에 다음 코드를 입력합니다. (활동 모니터를 참조하십시오). 첫 번째 탭에 프로세스와 관련된 작업이 없는데도 실행이 차단되는 이유는 무엇입니까? 데이터베이스에 대한 연결이 실행 여부, DB 잠금을 공유했습니다

답변

2

당신은이 by design입니다

ALTER DATABASE MYTEST 
SET OFFLINE 
WITH ROLLBACK IMMEDIATE 

밖으로 모든 연결을 걷어차 SQL 말할 필요 것입니다. <termination>::=

함께

데이터베이스가 한 상태에서 다른 상태로 전환 될 때 완료되지 않은 트랜잭션을 롤백 할시기를 지정합니다. 종료 절을 생략하면 데이터베이스에 잠금이있는 경우 ALTER DATABASE 문은 무기한 대기합니다. 종료 절은 하나만 지정할 수 있으며 SET 절 다음에옵니다.

그냥 실행 sp_lock (또는 새로운 DMV에이 :-) 그리고 당신이 그들을

+1

ROLLABCK는 "구문이 잘못되었습니다"라는 메시지를 피하기 위해 롤백 변경해야를 볼 수 있습니다 뭐든간에. –