/**********************************************************************************************
-- Title : [2k5] 연결된 서버의 로그인 보안 컨텍스트 설정 및 확인
-- Reference : dbRang.com
-- Key word : 보안 컨텍스트 sp_dropserver sp_helplinkedsrvlogin sp_addlinkedsrvlogin
연결된 서버 연결된서버 linkedserver linked server
**********************************************************************************************/
-- 연결된 서버 및 원격 사용자 동시 제거
EXEC sp_dropserver 'linked_an2', droplogins
-- 원격 사용자 확인
EXEC sp_helplinkedsrvlogin
-- 연결된 서버 등록
EXEC sp_addlinkedserver
@server = 'linked_an2'
, @srvproduct = ''
, @provider = 'SQLOLEDB'
, @datasrc = 's_an2'
, @catalog = ''
-- 원격 사용자 확인
-- sp_addlinkedserver 실행하면 자동으로 Is Self Mapping이 1이 된다.
-- 즉, 현재 로그인된 보안 컨텍스트를 사용.
EXEC sp_helplinkedsrvlogin
-- Is Self Mapping을 0으로 설정
-- 이는, 보안 컨텍스트 없이 연결과 동일.
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'linked_an2'
, @locallogin = NULL
, @useself = 'False'
-- 원격 사용자 확인
EXEC sp_helplinkedsrvlogin
-- Is Self Mapping을 1로 설정(sp_addlinkedserver 최초 사용했다 가정시)
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'linked_an2'
, @locallogin = NULL
, @useself = 'True'
-- 원격 사용자 확인
EXEC sp_helplinkedsrvlogin
-- 로컬 사용자(user3)와 원격 사용자(user1) 지정
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'linked_an2'
, @useself = false
, @locallogin ='user3'
, @rmtuser = 'user1'
, @rmtpassword = 'user11'
-- 원격 사용자 확인
-- Is Self Mapping이 여전히 존재하고
-- 로컬 사용자(user3)와 원격 사용자(user1)이 추가된다.
-- 즉, 2가지 옵션이 동시 적용된다고 보면 된다.
EXEC sp_helplinkedsrvlogin
-- 모든 로컬 사용자와 원격 사용자(user1) 지정
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'linked_an2'
, @useself = false
, @locallogin = null --null로 하면 로컬의 모든 사용자
, @rmtuser = 'user1'
, @rmtpassword = 'user11'
-- 원격 사용자 확인
-- locallogin을 null로 하면 모든 사용자를 나타내기에 Is Self Mapping값 1이 없어진다.
EXEC sp_helplinkedsrvlogin
-- 로그인의 현재 보안 컨텍스트를 사용하여 연결
-- 즉, Is Self Mapping을 1로 설정(sp_addlinkedserver 최초 사용시 default)
--로컬 사용자와 원격 사용자 계정/암호가 모두 같아야 한다.
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'linked_an2'
, @useself = true
, @locallogin =null
-- 원격 사용자 확인
EXEC sp_helplinkedsrvlogin
-- 연결된 서버 및 원격 사용자 동시 제거
EXEC sp_dropserver 'linked_an2', droplogins
/*
-- 로컬 서버 로그인과 원격 서버 로그인의 매핑만 허용하고
-- 위 목록에서 정의되지 않은 로그인에 대한 연결 설정 : "연결 안 함"으로 할 경우.
*/
-- 1. 매핑 만들고 난 후,
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'LINKED_UNI2', @locallogin = N'usr_prog', @useself = N'False', @rmtuser = N'usr_prog2', @rmtpassword = N''
GO
-- 2. sp_droplinkedsrvlogin으로 @locallogin=NULL로 세팅해 줘야 한당..(될까? ㅋㅋ)
EXEC master.dbo.sp_droplinkedsrvlogin @rmtsrvname = N'LINKED_UNI2', @locallogin = NULL
GO