안녕하세요? 이번 티스토링에서는 MS-SQL DB(Data Base)에서 SSMS(SQL Server Management Studio)로 DB 링크(Data Base Link)를 생성해 보겠습니다. SSMS 어떤 버전을 이용하시든 상관이 없습니다. 저는 SQL Server Management Studio 2012를 이용하였습니다.
DB 링크(DB Link)를 생성하여 사용하면 원격지에 있는 데이터베이스(DB-Data Base)의 리소스를 사용할 수 있도록 합니다. 이기종 간의 데이터베이스, 논리적 또는 물리적으로 떨어진 데이터베이스를 마치 현재 데이터베이스에 있는 것 처럼 사용 할 수 있습니다.
단점은 DB 링크를 생성할 수 있는 공급자가 있어야 하며 네트워크 환경에 따라서 처리 속도가 느릴 수 있습니다. 잘못된 쿼리문 사용으로 원격지의 모든 데이터를 복사해 올 수 있어서 주의가 요구 됩니다.
DB 링크(DB Link)를 생성하기 위해서는 DB 링크를 생성할 서버에서 원격 DB로 접속할 수 있는 공급자가 설치되어 있어야 합니다. 아래 그림에서 보시면 왼쪽에 서버 개체 -> 연결된 서버 -> 공급자를 보시면 사용할 수 있는 공급자 들이 나타납니다.
MS-SQL로 접속하기 위해서는 SQLNCLI10(SQL Server Native Client 10.0) 공급자가 필요합니다(10.0은 버전으로 상위버전에서 하위 버전의 DB로는 접속에 문제가 없습니다. 하지만 상위 DB로 접속을 할 경우 사용에 제한이 발생할 수 있습니다).
오라클(Oracle)로 접속하기 위해서는 OraOLEDB.Oracle(Oracle Provider for OLE 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) 문제로 몇가지 설정만 하면 정상적으로 수행이 됩니다.
DTC 관련은 다음 티스토링에서 소개를 하겠습니다.
출처: http://www.dsun.kr/36 [Dsuny]
'IT > Tip' 카테고리의 다른 글
MySQL 외부접속 가능하게 하기 (4) | 2018.01.23 |
---|---|
ERWIN에서 Forwarding Engineering 할때 (0) | 2017.08.23 |
Microsoft SQL Server Version List (0) | 2016.08.19 |
VS2013, VS2015 설치 프로젝트 (0) | 2016.08.02 |
MSSQL에서 락(lock)걸린 쿼리 확인하고 해제하기 (0) | 2016.04.07 |