데이터베이스 연결 후 사용자 맵핑하기

11-11-28 by 최고관리자

[문제]


기존 데이터베이스를 분리한 후 DB 파일들을 복사해서 다른 서버에 연결할 때,


소유자가 dbo가 아닌 경우 객체에 권한을 동일하게 유지하는 방법은?

기존과 똑같은 user_id를 생성시켰어도 연결한 데이터베이스의 사용자명과는 다르게 인식되어

‘select * from [table_name]’만으로 쿼리가 안되는 경우

이렇게 밖에 쿼리가 안되죠. ==> ‘select * from [owner].[table_name]’

--------------------------------------------------------------------------

[해결]

1. DB 분리 전에 다음과 같은 쿼리로 ‘clickmind’ 사용자의 SID를 기록해 놓는다.


select SID from clickmind.dbo.sysusers where [name] = 'clickmind'

==> 0xEE7B3C699D5BF348AA3863F539B365D8

* MSSQL2005에서는 이렇게 하면 됨 ==> SELECT SUSER_SID('clickmind');

2. ‘clickmind’ 데이터베이스 분리, 새로운 서버로 DB 파일들 복사

3. 새로운 서버에서 사용자 계정 생성 (1번에서 얻어낸 SID로 생성)

EXEC sp_addlogin 'clickmind', 'clickmind', 'pubs', 'Korean'
, 0xEE7B3C699D5BF348AA3863F539B365D8
go

4. 데이터베이스 연결, ‘*.mdf’ 파일 선택 후 소유자는 ‘sa’로 선택 (clickmind가 아닌)

download.blog?fhandle=MDJSUTNAZnMyLmJsb2cuZGF1bS5uZXQ6L0lNQUdFLzAvMTUuSlBHLnRodW1i&filename=15.JPG


5. 정상적으로 연결 되었는지 확인, 정상적인 경우 다음과 같이 보인다.

download.blog?fhandle=MDJSUTNAZnMyLmJsb2cuZGF1bS5uZXQ6L0lNQUdFLzAvMTYuSlBHLnRodW1i&filename=16.JPG

만일 ‘clickmind’의 ‘로그인 이름’이 ‘(공란)’으로 표시될 경우 비정상이다.

==> 이런 경우엔 ‘sa’ 계정등으로 ‘clickmind’ 데이터베이스로 가서 다음을 쿼리한다.


EXEC sp_change_users_login 'Auto_Fix', 'clickmind'
go

위 명령어는 자동적으로 clickmind 계정에 대해 같은 것들을 연결시켜 주는 시스템 함수이다.

또는 이렇게 쓸 수도 있다.

EXEC sp_change_users_login 'Update_One', 'clickmind', 'clickmind'
go

암튼 이렇게 되고 나면.. 종전과 똑같이 사용이 가능합니다.

download.blog?fhandle=MDJSUTNAZnMzLmJsb2cuZGF1bS5uZXQ6L0lNQUdFLzAvMTYuSlBHLnRodW1i&filename=16.JPG


use master
go


alter login slow
with PASSWORD  = '098poi' unlock
go


그럼, 수고하세요. ^^





Comments

  1. 등록된 코멘트가 없습니다.

Leave a Comment

자동등록방지 숫자를 순서대로 입력하세요.