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
서버 아이피 1.0.0.1
데이터 베이스명 test
사용자 이름 id
사용자 암호 password

 

 예제 1 쿼리



   EXEC sp_addlinkedserver
      @server = 'linkedserver',
      @srvproduct = '',
      @provider = 'SQLOLEDB',
      @datasrc = ' 1.0.0.1 ',
      @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 2024-03-22 16:11:41.637

 

srvid srvstatus srvname
1 1184 linkedserver

 

 - 예제 3



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

 - 1.0.0.1 서버 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'
반응형