본문 바로가기
IT/MSSQL

DTC(분산트랜잭션) 서비스 테스트(방화벽 포트)

by 베베야 2023. 1. 29.
728x90

네트워크 주소 변환 방화벽을 포함하여 방화벽을 통해 통신하도록 DTC를 구성할 수 있습니다.

 

DTC는 RPC(원격 프로시저 호출) 동적 포트 할당을 사용합니다. 기본적으로 RPC 동적 포트 할당은 1024 이상의 포트 번호를 임의로 선택합니다. 레지스트리를 수정하여 들어오는 통신에 RPC가 동적으로 할당하는 포트를 제어할 수 있습니다. 그런 다음 들어오는 외부 통신을 해당 포트 및 포트 135(RPC 엔드포인트 매퍼 포트)로만 제한하도록 방화벽을 구성할 수 있습니다.

 

허용포트 : 135, 1024이상포트 모두 (DTC 동적포트로 설정시)


오류내용

DTC 포트가 막혀 있으면 아래와 같은 오류가 발생한다.

오류 : 개발DB서버에서 분산트랜잭션이 작동하지 않았다. 상황에 따라 다른 에러코드가 반환됐는데, 다음과 같았다.
OLE/DB 공급자 'SQLOLEDB'이(가) 분산 트랜잭션을 시작할 수 없으므로 작업을 수행할 수 없습니다.

 

참고사항

DTC(분산트랜잭션) 서비스는 한쪽만 방화벽 막혀있으면 두쪽 디비가 모두 통신 장애가 발생한다.

 

방화벽을 통해 작동하도록 DTC(Distributed Transaction Coordinator) 구성 - Windows Server

방화벽을 통해 작동하도록 DTC를 구성하는 방법을 설명합니다.

learn.microsoft.com

연결 테스트 쿼리

분산트랜잭션 서비스 확인

BEGIN DISTRIBUTED TRANSACTION;
CREATE TABLE #temp01 (colum_name varchar(100))
INSERT #temp01 SELECT top 1 name FROM 링크서버명.master.dbo.sysobjects WITH (NOLOCK)
SELECT * FROM #temp01
DROP TABLE #temp01
COMMIT TRANSACTION;
GO

 

링크드서버 서비스확인

SET XACT_ABORT ON
BEGIN TRAN
CREATE TABLE #temp01 (colum_name varchar(100))
INSERT #temp01 SELECT top 1 name FROM 링크서버명.master.dbo.sysobjects WITH (NOLOCK)
SELECT * FROM #temp01
DROP TABLE #temp01
COMMIT;
GO

 

반응형
그리드형

댓글