본문 바로가기

운영/권한 관리

Login과 User 매핑하기

SQL Server의 Login 정보와 DB의 User 정보를 일치시키고 싶습니다.

1. Login과 User의 매핑

EXEC sp_change_users_login 'Report';
EXEC sp_change_users_login 'Auto_Fix', 'CFERP_CON', NULL, 'wndrnerp%xp2';
EXEC sp_change_users_login 'Update_One', 'FERP_CON', 'FERP_CON';

2. SID를 가지고 Login 생성하기

: 미러링 구성 시에 반듯이 필요합니다.

: 데이터베이스의 User로는 이미 생성이 되어 있고, 서버의 Login을 생성해야 하는 경우에 사용합니다.

: 데이터베이스가 Write가 안되는 경우(미러링 구성시 보조서버일 경우)는 해당 데이터베이스의 User정보를 가지고 서버의 Login 을 만들어야 합니다.

CREATE LOGIN loginName { WITH {option_list1} | FROM {sources} }
 
{option_list1} ::=
    PASSWORD = { 'password' | hashed_password HASHED } [ MUST_CHANGE ]
    [ , {option_list2} [ ,... ] ]
 
{option_list2} ::=
    SID = sid
    | DEFAULT_DATABASE = database  
    | DEFAULT_LANGUAGE = language
    | CHECK_EXPIRATION = { ON | OFF}
    | CHECK_POLICY = { ON | OFF}
    | CREDENTIAL = credential_name
 
{sources} ::=
    WINDOWS [ WITH {windows_options} [ ,... ] ]
    | CERTIFICATE certname
    | ASYMMETRIC KEY asym_key_name
 
{windows_options} ::=    
    DEFAULT_DATABASE = database
    | DEFAULT_LANGUAGE = language

: SID를 찾기 위한 쿼리입니다.

SELECT * 
FROM sys.server_principals

: 위에서 찾은 SID를 가지고 Login을 생성하는 쿼리입니다.

CREATE LOGIN [test]
 WITH
 PASSWORD = 'test',
 SID = 0x740E5B99822C43409C36C7EA7CD5AF14,
 DEFAULT_DATABASE = [master],
 CHECK_POLICY = OFF,
 CHECK_EXPIRATION = OFF