2011. 12. 16. 09:35

sa계정에 디폴트 디비를 지정하는 경우가 얼마나 흔한지는 모르겠지만 저 같은 경우 sa는 사용하지 않고 sa에게 권한을 부여받은 계정을 주로 사용하기 때문에 디폴트 디비를 지정해주는 경우가 종종 있습니다.

그런데 모든 계정은 디폴트디비가 삭제되면 로그인이 되지 않습니다 ㅡ,.ㅡ;

사용자 기본 데이터베이스를 열 수 없습니다.
cannot open user default database. login failed

 

이런 에러가 발생합니다.

 


 

1. 윈도우 인증을 확인해 보자

이런 경우 제일 먼저 해봐야 할 것은 '윈도우 인증'으로 로그인이 되나 입니다.
되면 해당 계정의 DB를 다시 지정하면 되는 것이니까요.

 


 

보안 > 로그인 > sa계정 속성

2. 'sqlcmd'를 이용한 방법

문제는 '윈도우 인증도 막혔다면?'
후덜덜한 상황입니다.

마이크로 소프트 고객지원을 보면 'sqlcmd'를 이용하라는데...옌 어디 있는 거니?
( 참고 : 마이크로 소프트 고객센터 - SQL Server 인스턴스에 연결할 때 "사용자 기본 데이터베이스를 열 수 없습니다."라는 오류 메시지가 나타난다 )

다행히 Sungmin Go님의 블로그에 자세한 복구 방법이 나와 있습니다.
참고 : Sungmin Go님 블로그 - 데이터베이스 SUSPECT 후 로그인 실패


명령 프롬프트를 열고 'C:\Program Files\Microsoft SQL Server\80\Tools\Binn'까지 이동합니다.
여기서 '80'은 2005를 일 때고 2008은 '90', 2010은 '100'입니다.
자신이 설치한 버전에만 'Tools'폴더나 'Binn'폴더가 있으므로 확인해보시면 됩니다.

1
osql -S . -U [계정] -P [비밀번호] -d [로그온할 DB]
cs


이거 대소문자 구분합니다.
계정과 비밀번호를 쓰고 로그온할 DB는 'master'로 하시면 됩니다.

명령이 성공하면 명령 프롬프트가 꺾쇠(>)모양이 됩니다.
이 상태에서

1
2
1> sp_defaultdb 'sa','master' 
2> go
cs


라고 입력하시면 됩니다.



이렇게 하면 디폴트 디비 문제로 로그인이 되지 않던 계정이 로그인됩니다.

 

마무리

물론 마스터 DB가 날아간 경우에는 이 방법도 통하지 않죠 ㅡ,.ㅡ;;