2017년 10월 25일 수요일

MSSQL 연결된서버 사용하기 (linked server)

 - MSSQL 연결된 서버란?

   MSSQL 은 연결된서버 기능을 제공하는데 이를 이용하면 다른 네트워크의 데이터베이스를 원격으로 접속하여
   사용할 수 있도록 해줍니다.


 - MSSQL 연결된 서버 생성

   EXEC sp_addlinkedserver
      @server = '[연결된 서버별칭]',
      @srvproduct = '',
      @provider = 'SQLOLEDB',
      @datasrc = '[서버 아이피]',
      @catalog = '[데이터 베이스명]'

 - MSSQL 연결계정 생성

   EXEC sp_addlinkedsrvlogin
      @rmtsrvname= '[연결된 서버별칭]',
      @useself= 'false',
      @rmtuser = '[사용자 이름]',
      @rmtpassword = '[사용자 암호]'


 - MSSQL 연결된 서버 확인

   SELECT FROM master.dbo.sysservers WHERE srvname = '[연결된 서버별칭]'


 - MSSQL 연결계정 확인

   SELECT FROM master.sys.linked_logins WHERE remote_name = '[사용자 이름]'


 - MSSQL 연결된 서버 이용방법

   연결된 서버를 등록한 후 사용하려면 [연결된 서버별칭].[데이터 베이스명].[데이터베이스 소유자명].[테이블명]
   형태로 호출하여 사용할 수 있습니다.
   SELECT 쿼리를 예로 들면 아래와 같습니다.


 - MSSQL 일반서버에 SELECT 쿼리시

​   SELECT [컬럼명] FROM [테이블명] WHERE [조건절]

 - MSSQL 연결된 서버에 SELECT 쿼리시

​   SELECT [컬럼명] FROM [연결된 서버별칭].[데이터 베이스명].[데이터베이스 소유자명].[테이블명] WHERE [조건절]


 - MSSQL 연결된 서버 삭제

   EXEC sp_dropserver
      @server = '[연결된 서버별칭]'

 - MSSQL 연결계정 삭제

   EXEC sp_droplinkedsrvlogin
      @rmtsrvname= '[연결된 서버별칭]',
      @locallogin = NULL

 [참고사항] 연결된 서버 삭제

   연결된 서버를 삭제하기 위해서는 sp_droplinkedsrvlogin 을 이용하여 연결계정을 먼저 삭제하고
   sp_dropserver 를 이용하여 연결된 서버를 삭제하여야 합니다.



 - 예제 1

   아래와 같은 정보를 갖는 연결된 서버를 생성하시오.


항목
상세 내용
연결된 서버별칭
linkedserver
서버 아이피
192.168.1.3
데이터 베이스명
test
사용자 이름
id
사용자 암호
password

 예제 1 쿼리

   EXEC sp_addlinkedserver
      @server = 'linkedserver',
      @srvproduct = '',
      @provider = 'SQLOLEDB',
      @datasrc = '192.168.1.3',
      @catalog = 'test'

   EXEC sp_addlinkedsrvlogin
      @rmtsrvname= 'linkedserver',
      @useself= 'false',
      @rmtuser = 'id',
      @rmtpassword = 'password'


 - 예제 2

   예제1에서 생성한 연결된 서버와 연결계정을 확인하시오.


 - 예제 2 연결된 서버 생성여부 확인

   SELECT FROM master.dbo.sysservers WHERE srvname = 'linkedserver'


srvid
srvstatus
srvname
1
1184
linkedserver

 - 예제 2 연결계정 생성여부 확인

   SELECT FROM master.sys.linked_logins WHERE remote_name = 'id'


server_id
local_principal_id
uses_self_credential
remote_name
modify_date
1
0
0
id
2015-03-22 16:11:41.637

srvid
srvstatus
srvname
1
1184
linkedserver

 - 예제 3

   예제1에서 생성한 연결된 서버를 이용하여 아래와 같은 테이블의 내용을 조회하시오.


 - 192.168.1.3 서버 test.dbo.성적 테이블
일련번호
이름
점수
1
홍길동
90
2
일지매
95
3
임꺽정
85

 - 예제 3 쿼리

   SELECT 일련번호이름점수 FROM linkedserver.test.dbo.성적

일련번호
이름
점수
1
홍길동
90
2
일지매
95
3
임꺽정
85
 - 예제 4

   예제1에서 생성한 연결된 서버와 연결계정을 삭제하시오.

 - 예제 4 쿼리

   EXEC sp_droplinkedsrvlogin
      @rmtsrvname= 'linkedserver',
      @locallogin = NULL

   EXEC sp_dropserver
      @server = 'linkedserver'

댓글 없음:

댓글 쓰기