본문 바로가기

찌신이의 공부

[MS SQL] SSMS DB 링크 생성하기

저는 닷넷 개발자 입니다.
오라클 보다는 MS SQL 이 익숙합니다.
그리고 SSMS 를 주로 사용을 합니다.

오늘은 SSMS 로 DB 간 링크 생성하기를 알아보겠습니다.

1. DB 링크 생성하기
 개체 탐색기에서 서버 개체 > 연결된 서버 > 오른쪽 마우스 클릭하여 새 연결된 서버(N)을 실행

새 연결된 서버 선택왼쪽에 페이지 선택에서 일반을 선택하면 아래와 같은 화면이 나타납니다
서버 유형에는 SQL Server(Q), 기타 데이터 원본(H)가 있습니다
SQL Server(Q)
로 선택을 하면 연결된 서버(N) IP,Port(127.0.0.1,1433) 형태 또는 컴퓨터명\인스턴스명(MYSERVER\MSSQLDB)으로 입력을 해야 됩니다.
그러면 실제 쿼리를 사용할때도 그대로 사용을 되기 때문에 불편합니다
기타 데이터 원본(H)으로 선택하시는게 편합니다.

연결된 서버(N)에는 DB 링크 이름으로 알기 쉽고 사용하기 편하게 짧게 입력합니다공급자(P) MS-SQL인 경우에는 SQL Server Native Client xx.x로 하시면 됩니다오라클인 경우에는 Oracle Provider for OLE DB를 선택하시면 됩니다저는 MS-SQL DB 링크를 생성하겠습니다.

연결된 서버(N) : TEST1
공급자(P) : SQL Server Native Client 10.0
제품 이름(U) : MS-SQL
(오라클인 경우에는 Oracle)
데이터 원본(D) : IP,Port
(127.0.0.1,1433)

왼쪽에 페이지 선택에서 보안을 선택하면 아래와 같은 화면이 나타납니다로컬 서버 로그인과 원격 서버 로그인 매핑(O)를 이용하려면 추가(A) 버튼을 클릭하여 로컬 로그인, 가장여부, 원격사용자, 원격 암호를 입력하셔야 됩니다.

 저는 단순하게 위 목록에서 정의되지 않은 로그인에 대한 연결 설정으로 다음 보안 컨텍스트를 사용하여 연결(M)을 선택하였습니다원격 로그인(R), 암호(P)를 입력합니다.

 

 

페이지 선택에서 서버 옵션을 선택합니다RPC(Remote Procedure Call), RPC 내보내기 True로 변경합니다RPC는 원격 프로시져를 호출 할 수 있도록 하는 옵션입니다. 확인버튼을 눌러 DB 링크를 생성합니다. 생성을 하면 연결 테스트를 자동 수행합니다.

 

 아래 그림을 보시면 TEST1 이름으로 DB 링크가 추가되었습니다. 툴바에 새 쿼리(N)를 클릭하여 새 쿼리창을 열어서 DB 링크된 서버로 쿼리를 실행하여 테스트를 해보시기 바랍니다. 사용방법은 DB링크명.데이터베이스명.권한.테이블명으로 지정하시면 됩니다.

SELECT *
 FROM TEST1.ERPSYS.dbo.TERROR_CODE

 

 

 2. 공급자 옵션

 이번에는 공급자 속성으로 들어가서 옵션을 변경해 보겠습니다서버 개체 -> 연결된 서버 -> 공급자 -> SQLNCLI10에서 오른쪽 마우스를 클릭해서 속성(R)으로 들어 갑니다.

 

 공급자 옵션 창이 뜹니다공급자 옵션(P)에 보시면 다양한 옵션이 존재 합니다. 그중에서 Inprocess 허용을 해줘야 되는 경우가 있습니다오픈쿼리(Openquery)를 사용해야 될 경우 입니다.

 Inprocess 허용을 막아 놓은 이유는 공급자 오류로부터 SQL Server 프로세스를 보호하기 위해서 입니다(공급자 오류로 인하여 SQL Server 프로세스가 중단 되는 것을 방지). 오픈쿼리를 사용해야 되는 경우라면 Inprocess 허용을 사용하시기 바랍니다.

 가끔 사용으로 해 놓았는데 적용이 안되는 경우가 있는데 선택을 취소 했다가 다시 선택을 하시면 되는 경우가 있습니다.

 

DB 링크를 통하여 작업을 하시다가 아래와 같은 문제가 종종 발생하는 경우가 있습니다분산 트랜잭션을 처리 중 발생을 합니다대부분 DTC(Distributed Transaction Coordinator) 문제로 몇가지 설정만 하면 정상적으로 수행이 됩니다.