MSSQL - 원격 서버(연결된 서버)에서 프로시저 실행하기 (RPC 구성)

반응형

연결된 서버(Linked Server) 관련 글 보기

[ 연결된 서버 사용 방법] 

 

[ 연결된 서버에서 오픈 쿼리 사용 방법 ]

 

[ 다른 RDBMS를 연결된 서버로 연결하기 ]

 

[ 연결된 서버로 프로시저 실행하기 ]


원격 프로시저 실행 오류

Error

연결된 서버(Linked Server)를 통해 원격 서버에 프로시저 실행 시 다음과 같은 에러가 출력됩니다.

Msg 7411, Level 16, State 1, Line 2847
서버 '~~~'이(가) RPC에 대해 구성되지 않았습니다.

에러에서의 RPC란?

Remote Procedure Call. 즉, 원격 프로시저 호출을 의미합니다.

이는 클라이언트와 서버 사이에서 프로시저(함수)를 원격으로 호출하는 것을 말합니다.

클라이언트가 서버에 있는 프로시저를 호출하면,

서버에서 해당 프로시저를 실행하고 그 결과를 클라이언트에게 반환합니다.

이를 통해 원격지에 있는 서버의 기능을 호출하고 사용할 수 있습니다.


클라이언트 RPC 구성하기

서버에 대한 RPC를 구성하여야 합니다.

우선 내 DB 서버에서 사용할 수 있는 서버를 확인해봅니다.

exec sp_helpserver

 

예시)

 

내가 사용할 연결된 서버가 목록에서 보이고 status에 rpc, rpc out 이라는 것이 없을 것입니다.

아래의 쿼리를 입력하여 연결된 서버의 status에 RPC를 추가해줍니다.

-- RPC, RPC OUT 활성화하기
EXEC sp_serveroption '연결된서버IP주소', 'RPC', TRUE
EXEC sp_serveroption '연결된서버IP주소', 'RPC OUT', TRUE

연결된 서버 RPC 구성하기

위와 마찬가지로 연결된 서버에서 내 DB 서버로의 RPC를 구성해줍니다.

 

  • 내 DB 서버가 연결된 서버에서 사용 가능한지 확인
exec sp_helpserver

 

내 DB서버를 연결된 서버에서 RPC 추가

-- RPC, RPC OUT 활성화하기
EXEC sp_serveroption '접속할DB의IP주소', 'RPC', TRUE
EXEC sp_serveroption '접속할DB의IP주소', 'RPC OUT', TRUE

원격으로 연결된 서버의 프로시저 실행

원격으로 프로시저를 실행해봅니다.

 

  • 연결된 서버에서 추가한 프로시저
CREATE PROC testProc
	@testStr nvarchar(max)
AS
BEGIN
		select @testStr
END

 

  • 원격으로 프로시저 실행
-- exec [연결된서버IP주소].데이터베이스명.소유자.프로시저명 "매개변수"

exec [~~~].testDB.dbo.testProc "123"
>>> 123

반응형