반응형
MSSQL에서 연결된 서버(Linked Server) 를 사용하다 보면 RPC 또는 RPC OUT 설정 때문에 프로시저 실행이 안 되는 경우를 자주 겪게 됩니다.
이 글에서는 RPC의 개념, 왜 필요한지, 어떻게 설정하는지, 그리고 실무에서 자주 겪는 오류까지 정리해보겠습니다.
1️⃣ RPC란?
RPC(Remote Procedure Call) 는 말 그대로 원격 서버에 있는 저장 프로시저(Stored Procedure)를 호출하는 기능입니다.
MSSQL에서 연결된 서버를 설정하면:
- 다른 SQL Server의 테이블 조회(SELECT) 는 기본적으로 가능
- 하지만 저장 프로시저 실행(EXEC) 은 RPC 설정이 꺼져 있으면 불가능
즉,
🔹 RPC = 연결된 서버에서 저장 프로시저를 실행하기 위한 권한/기능
2️⃣ RPC 와 RPC OUT 차이
연결된 서버 설정에는 두 가지 옵션이 있습니다.
옵션설명
| RPC | 원격 서버에서 로컬 서버의 프로시저 호출 허용 |
| RPC OUT | 로컬 서버에서 원격 서버의 프로시저 호출 허용 |
👉 우리가 보통 필요로 하는 것은 RPC OUT 입니다.
예시
EXEC LinkedServerName.Database.dbo.usp_Test
위와 같이 내 서버 → 연결된 서버 로 프로시저를 실행하려면
✔ RPC OUT = TRUE 가 반드시 필요합니다.
3️⃣ RPC 설정 안 했을 때 발생하는 오류
RPC 설정이 꺼져 있으면 다음과 같은 오류를 만날 수 있습니다.
서버 'LinkedServerName'에 대해 RPC가 구성되지 않았습니다.
또는
OLE DB 공급자 "SQLNCLI"에서 메시지 "RPC 사용이 설정되지 않았습니다"를 반환했습니다.
👉 이 오류가 보이면 100% RPC OUT 설정 문제입니다.
4️⃣ SSMS에서 RPC 설정하는 방법 (GUI)
① 연결된 서버 속성 열기
- SSMS 실행
- 서버 개체 → 연결된 서버 → 해당 서버 우클릭 → 속성
② 서버 옵션 탭
아래 옵션을 변경합니다.
| 옵션 | 값 |
| RPC | True |
| RPC Out | True |
✔ 확인 버튼 클릭
5️⃣ T-SQL로 RPC 설정하는 방법 (권장)
운영 서버나 자동화 스크립트에서는 T-SQL 방식이 더 많이 사용됩니다.
EXEC sp_serveroption
@server = 'LinkedServerName',
@optname = 'rpc',
@optvalue = 'true';
EXEC sp_serveroption
@server = 'LinkedServerName',
@optname = 'rpc out',
@optvalue = 'true';
설정 확인
EXEC sp_helpserver 'LinkedServerName';
또는
SELECT *
FROM sys.servers
WHERE name = 'LinkedServerName';
6️⃣ RPC 사용 예제
🔹 원격 저장 프로시저 실행
EXEC LinkedServerName.MyDB.dbo.usp_InsertLog
@UserId = 1,
@Message = 'Test';
🔹 OPENQUERY 사용 (RPC와 무관)
SELECT *
FROM OPENQUERY(LinkedServerName,
'SELECT * FROM MyDB.dbo.TableA'
);
⚠ OPENQUERY는 SELECT에는 사용 가능하지만, 프로시저 실행에는 한계가 있습니다.
7️⃣ 실무 주의사항 ⚠
✅ 1. 보안 문제
- RPC OUT은 원격 서버에서 임의의 프로시저 실행 가능
- 최소 권한 계정 사용 권장
✅ 2. 트랜잭션 주의
- 분산 트랜잭션(DTC) 발생 가능
- MSDTC 설정이 안 되어 있으면 오류 발생
✅ 3. 성능 이슈
- 네트워크 왕복 발생
- 대량 호출 시 성능 저하 가능
8️⃣ 언제 RPC를 사용해야 할까?
✔ 이런 경우에 사용하세요
- 공통 로그 저장
- 다른 DB의 배치/집계 프로시저 실행
- ERP, CRM 등 시스템 간 DB 연동
❌ 이런 경우는 피하세요
- 단순 조회 (→ OPENQUERY 또는 ETL 권장)
- 대량 반복 호출
9️⃣ 정리
- RPC는 연결된 서버에서 저장 프로시저를 실행하기 위한 필수 설정
- 대부분의 경우 RPC OUT = TRUE 가 핵심
- GUI보다 T-SQL 설정 방식이 실무에서 안정적
연결된 서버에서 프로시저 실행이 안 된다면, 👉 가장 먼저 RPC OUT 설정을 확인하세요.
반응형
'MS-SQL' 카테고리의 다른 글
| ODBC란 무엇인가? 데이터베이스 접근의 표준 인터페이스 (0) | 2025.12.04 |
|---|---|
| MSSQL 인덱싱된 뷰로 성능 최적화하는 방법 (1) | 2025.08.08 |
| MSSQL 뷰(View) 완벽 정리: 개념부터 실전까지 (2) | 2025.08.07 |
| 초보도 이해하는 MSSQL 트리거 사용법 (실무 예제 포함) (1) | 2025.07.24 |
| MS-SQL 연결된 서버(Linked Server) 설정방법 2 (0) | 2025.04.04 |