데이터베이스 개발자 질문과 답변 게시판
mssql server 2005 스탠다드 사용 중 입니다.
로그인 목록 중에서 login_aaa 라는 로그인이 있고
해당 로그인의 속성 - 사용자 매핑 에서 보면
Web_001_DB라는 DB에 db_owner 역학 멤버가 주어져 있는 상태입니다.
하지만....
Web_001_DB 라는 DB의 보안 - 사용자... 를 보면 login_aaa 가 없네요.
그래서....
Use Web_001_DB
Go
CREATE USER [Web_001_DB] FOR LOGIN [Web_001_DB]
GO
했더니...
---------------------------------------------------------------
메시지 15063, 수준 16, 상태 1, 줄 1
로그인에 이미 다른 사용자 이름의 계정이 있습니다.
Comment 3
-
디비러
2013.10.17 12:42
초짜해커님 감사합니다.
말씀해주신대로
select * from sys.syslogins where name = 'login_aaa' 확인 결과
해당 로그인의 SID 가 0xDBB0752518BE1846B9DFC37B5AF1E1D4 이고
select * From sys.sysusers
where sid = 0xDBB0752518BE1846B9DFC37B5AF1E1D4
해보니.... name이 dbo로 나오네요....
하지만 현재 서버에서 login_aaa 로그인으로 DB 접속도 잘 되고 sp 호출도 잘 되고 있는게 신기하네요.
이 부분 해결 하려면 어찌 해얄까요??
다시 한번 도움 부탁드립니다.(__)
감사합니다.
-
일단 login_aaa로 로긴하면 그 SID를 가지고 해당 DB에 접근 권한을 확인하고
권한이 있으면 그 DB를 사용하게 되는거죠.
sysusers에 이름이 달리 나오는 경우는 중간에 login 이름을 바꾼경우 그럴 수 있고
dbo로 나온다면 해당 DB의 owner인거 같습니다.
각 로긴은 SID를 가집니다.
그리고 이 SID를 가지고 로긴을 식별하게 되죠.
아침에 잠깐 테스트를 해봤습니다.
1.DBUser라는 로긴을 하나 만들고 TestDB에 Owner권한을 주었습니다.
2.그리고 TestDB를 detach합니다.
3.DBUser의 이름을 DBUserX로 바꿉니다.
4.다시 TestDB를 attach합니다.
이 상황에서 TestDB로 가서 sys.syslogins와 sys.sysuser를 조회해보면
SID는 같은데 이름이 다른 DBUser와 DBUserX가 보일겁니다.
아마 디비러님께서 겪는 문제는 SID의 이름이 바뀌어서 생기는 문제일거 같구요.
해당 SID의 권한을 제거했다가 다시 부여하면 될거 같습니다.