1.링크드 서버란 ?
MSSQL에서 링크드서버는 다른 SQL Server 인스턴스나 다른 데이터베이스에 원격으로 접속하여
쿼리를 수행 할 수 있습니다.
※ Management Studio를 사용할 때는 CONTROL SERVER 권한이나 sysadmin 고정 서버 역할이 필요합니다.
2. 목록 조회
SELECT A.name, A.product, A.provider,
A.data_source, location, provider_string,
A.modify_date LinkedServerUpdateDate,
C.name, B.remote_name, B.modify_date UserUpdateDate
FROM sys.servers A JOIN sys.linked_logins B
ON A.server_id = B.server_id
LEFT OUTER JOIN sys.server_principals C
ON B.local_principal_id = C.principal_id
ORDER BY A.name
3.Linked Server 생성 및 삭제
3.1.생성 및 로그인 매핑
-- 서버 생성
EXEC master.dbo.sp_addlinkedserver
@server= 'yourservername',
@srvproduct='',
@provider='MSOLEDBSQL',
@datasrc='yourserverinstance';
GO
-- 로그인 계정 매핑
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname='yourservername'
,@useself=N'False'
,@locallogin=NULL,@rmtuser=N'yourloginname'
,@rmtpassword='yourloginpassword'
GO
3.2.삭제
sp_dropserver 'yourservername', 'droplogins'
4.OPENQUERY 사용
Linked Server 와 OPENQUERY 의 차이점
- Linked Server: 쿼리가 로컬 서버에서 실행된다.
원격 서버에서 대량의 데이터를 가져온다. + 원격서버 인덱스 미사용 - OPENQUERY: 쿼리가 원격 서버에서 직접 실행된다.
원격 서버가 데이터를 필터링하고, 필요한 데이터만 로컬 서버로 전송한다.
5.참고
Linked Server 성능 이슈:
네트워크 지연 시간
외부 데이터베이스와 통신하기 때문에 네트워크 지연 시간이 성능에 큰 영향을 미칩니다.
MSSQL에서 연결된 서버를 사용하여 원격 서버의 결과셋을 가져올 때 Cursor Fetch 동작이 발생하여
네트웍 I/O 가 과다하게 발생되어 성능이 저하 될 수 있습니다.
대량의 데이터를 가져와야 한다면, 적절하게 데이터를 필터링하여 가져오는 것이 필요합니다.
(범위 제한, 조인 순서 변경 등)
마침 😊
'♣ Learning Logs > MSSQL' 카테고리의 다른 글
[MSSQL] 시스템 스키마 (0) | 2024.10.25 |
---|---|
[MSSQL]모든 테이블 인덱스 크기 조회 (0) | 2024.10.25 |
[MSSQL] 트랜잭션 로그 시점 복원(.trn) (0) | 2024.10.03 |
[MSSQL] DB 파일 사이즈 관리하기 (0) | 2024.09.25 |
[MSSQL] 유용한 트랜잭션 롤백 옵션: SET XACT_ABORT ON (1) | 2024.09.25 |