MSSQL 연결된 서버(Linked Server) 사용하기 – ODBC 활용
MS SQL에서 연결된 서버(Linked Server)는 주로 분산 쿼리를 처리하는 데 사용됩니다. 로컬 서버에 네트워크로 연결된 이기종 데이터베이스를 연결된 서버에 등록하여 사용할 수 있도록 해줍니다. 윈도우 탐색기에서 네트워크 드라이버 연결하여 사용하는 것과 비슷합니다.
이기종 데이터베이스를 연결하는 방법은 여러 가지 있지만 ODBC(Open Database Connectivity)를 활용하여 연결된 서버에 등록 및 사용법에 대해서 알아보죠.
포스트 기준
– Microsoft SQL Server 2019
– SSMS 18.11
※ Microsoft 기술 문서
![Microsoft 기술 문서](https://bluesharehub.com/wp-content/uploads/2022/04/img_1-9.png)
![Microsoft 기술 문서](https://bluesharehub.com/wp-content/uploads/2022/04/img_1-9.png)
1. ODBC 64비트 추가
▶ 예시) 시스템 DSN -> BlueShare64 ODBC 추가 (SQL Server DB)
![시스템 DSN -> BlueShare64 ODBC 추가 (SQL Server DB)](https://bluesharehub.com/wp-content/uploads/2022/04/img_2-8.png)
![시스템 DSN -> BlueShare64 ODBC 추가 (SQL Server DB)](https://bluesharehub.com/wp-content/uploads/2022/04/img_2-8.png)
2. 연결된 서버 등록
▶ 등록하는 방법은 SSMS(SQL Server Management Studio) 툴로 등록하는 방법과 쿼리문 명령어로 등록하는 방법이 있는데요. SSMS 툴로 등록하는 방법에 대해서 알아보죠.
1. DBMS → 서버 개체 → 연결된 서버 → 새 연결된 서버(N)…
![DBMS → 서버 개체 → 연결된 서버 → 새 연결된 서버(N)...](https://bluesharehub.com/wp-content/uploads/2022/04/img_3-6.png)
![DBMS → 서버 개체 → 연결된 서버 → 새 연결된 서버(N)...](https://bluesharehub.com/wp-content/uploads/2022/04/img_3-6.png)
2. 일반 탭
연결된 서버(N) : 사용할 서버 이름 기입
공급자(P) : Microsoft OLE DB Provider for ODBC Drivers 선택
제품 이름(U) : MSDASQL (ODBC인 경우)
데이터 원본(D) : BlueShare64 (ODBC 64비트에서 추가한 시스템 DSN 이름)
공급자 문자열(V) : LocalServer (ODBC인 경우)
![일반 탭](https://bluesharehub.com/wp-content/uploads/2022/04/img_4-5.png)
![일반 탭](https://bluesharehub.com/wp-content/uploads/2022/04/img_4-5.png)
※ sp_addlinkedserver(Transact-SQL) 함수를 사용해서 등록 가능
![sp_addlinkedserver(Transact-SQL) 함수를 사용해서 등록 가능](https://bluesharehub.com/wp-content/uploads/2022/04/img_5-5.png)
![sp_addlinkedserver(Transact-SQL) 함수를 사용해서 등록 가능](https://bluesharehub.com/wp-content/uploads/2022/04/img_5-5.png)
3. 보안 탭
▶ 다음 보안 컨텍스트를 사용하여 연결(M) 선택
![보안 탭](https://bluesharehub.com/wp-content/uploads/2022/04/img_6-4.png)
![보안 탭](https://bluesharehub.com/wp-content/uploads/2022/04/img_6-4.png)
※ sp_addlinkedsrvlogin(Transact-SQL) 함수를 사용해서 등록 가능
![sp_addlinkedsrvlogin(Transact-SQL) 함수를 사용해서 등록 가능](https://bluesharehub.com/wp-content/uploads/2022/04/img_7-1.png)
![sp_addlinkedsrvlogin(Transact-SQL) 함수를 사용해서 등록 가능](https://bluesharehub.com/wp-content/uploads/2022/04/img_7-1.png)
4. 등록 확인 및 연결 테스트
![등록 확인 및 연결 테스트](https://bluesharehub.com/wp-content/uploads/2022/04/img_8-1.png)
![등록 확인 및 연결 테스트](https://bluesharehub.com/wp-content/uploads/2022/04/img_8-1.png)
3. 연결된 서버 사용하기
예시) 네트워크에 연결된 다른 데이터베이스 도로명 주소 테이블 사용
1. 스키마 방식 사용
[연결된 서버]…[데이터베이스. 소유자. 테이블]
-- 1) 스키마 방식 이용
-- [연결된 서버]...[데이터베이스.소유자.테이블]
SELECT TOP 10 *
FROM [ROAD_LINK]...[ROAD.DBO.ROAD_TB]
WHERE COLUMN2 = '삼일대로'
![스키마 방식 사용](https://bluesharehub.com/wp-content/uploads/2022/04/img_9-1.png)
![스키마 방식 사용](https://bluesharehub.com/wp-content/uploads/2022/04/img_9-1.png)
2. OPENQUERY 함수 사용
![OPENQUERY 함수 사용](https://bluesharehub.com/wp-content/uploads/2022/04/img_10.png)
![OPENQUERY 함수 사용](https://bluesharehub.com/wp-content/uploads/2022/04/img_10.png)
-- 2) OPENQUERY 함수 사용
SELECT *
FROM OPENQUERY(ROAD_LINK, 'SELECT TOP 10 * FROM ROAD_TB')
![OPENQUERY 함수 사용 예제](https://bluesharehub.com/wp-content/uploads/2022/04/img_11.png)
![OPENQUERY 함수 사용 예제](https://bluesharehub.com/wp-content/uploads/2022/04/img_11.png)
이 글이 도움이 되셨다면 공유를 부탁드립니다. 다음 글에서 뵙겠습니다!