2009년 8월 23일 일요일

[MS SQL Server] Login failed for user ’sa’ because the account iscurrently locked out.

Login failed for user ’sa’ because the account is currently locked out. The system administrator can unlock it.



 LINQ to SQL 을 이용하여 DB를 사용하려 하다가 "SqlException" 이 일어났다. 예외 메시지는 다음과 같다.

" Login failed for user ’six605’ because the account is currently locked out. The system administrator can unlock it."

해당 계정이 잠겼다는 소리인데.. administrator 계정이 해당 계정의 잠금을 풀어줄 수 있다는 소리다. (아직 DB 잘 모르는 상태...)

우선 왜 해당 계정이 잠겼는지 이해가 안갔는데 Windows Server OS 에는 로컬 보안 정책암호 정책계정 잠금 정책이 있다. 해당 계정이 잠길 수 있는 경우는 2가지 이다.


1. 암호 정책 에 의한 계정 잠금

리스트에 여러 항목이 있는데 그 중에서도 "최대 암호 사용 기간" 이라는 것이 있다. 암호 설정 후 여기서 설정한 기간이 지나면 해당 계정이 잠길 수 있다.



2. 계정 잠금 정책 에 의한 계정 잠금


리스트에 보면은 "계정 잠금 임계값" 설정이 있다. 즉, 사용자가 해당 계정으로 로그인 시도 시 설정만큼 로그인 실패 한다면 해당 계정이 잠기게 된다.



cf) 1.
MS Sql Server 에서 계정을 추가하면, Windows 계정에도 추가 되더라...
조금 더 알아봐야 겠지만 SQL Server 의 계정과 Windows 계정이 이원적인게 아니구나!!




cf) 2.
만약 계정이 잠겼다면 다음 SQL 문으로 잠금 해제 시켜줄 수 있다.

use master
go

alter login 로그인계정
with PASSWORD  = '새로운패스워드' unlock
go



MS SQL Server 에 계정을 생성할 때 Windows 의 계정 정책을 적용하지 않게 할 수 있다. 기본적으로는 Windows 의 계정 정책이 적용된다. MSSMS 를 열어보자.



해당 계정의 속성을 보면 "Enforce password policy" 와 "Enforce password expiration" 이 체크되어 있다. 암호 정책과 암호 만기를 적용시키겠다는 것인데, 이것을 체크 해제 시켜주면된다.

댓글 없음:

댓글 쓰기