반응형
(MSSQL DCT 설정하기)
MSSQL에서 분산 트랜잭션이 처리되지 않는 경우 DCT 설정을 다시 확인해 보아야 한다.
에러메세지)
OLE/DB 공급자 'SQLOLEDB'이(가) 분산 트랜잭션을 시작할 수 없으므로 작업을 수행할 수 없습니다.
[OLE/DB provider returned message: 지정한 트랜잭션 코디네이터에 새 트랜잭션을 기록할 수 없습니다. ]
OLE DB 오류 추적 [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]
서버: 메시지 7391, 수준 16, 상태 2, 프로시저 xxxxxxxx, 줄 1
OLE/DB 공급자 'SQLOLEDB'이(가) 분산 트랜잭션을 시작할 수 없으므로 작업을 수행할 수 없습니다.
[OLE/DB provider returned message: 지정한 트랜잭션 코디네이터에 새 트랜잭션을 기록할 수 없습니다. ]
OLE DB provider "SQLNCLI10" for linked server "ERPTESTSQL" returned message "No transaction is active.".
Msg 7391, Level 16, State 2, Line 1
The operation could not be performed because OLE DB provider "SQLNCLI10" for linked server "ERPTESTSQL" was unable to begin a distributed transaction.
1. DCT Ping 프로그램을 통해서 확인
* DCP Ping 확인 프로그램
Main, Sub Server에 해당 프로그램을 설치한 후,
- Main : 압축 풀고 프로그램 실행 후, 대기
- Sub : Main에서 프로그램 실행 후에 두번째 서버에서 압축 풀고 프로그램 실행
위 단계를 거치고 나면 양쪽 서버에 로그가 남음.
양쪽 로그 메세지 확인하여 DCT Ping 이 전송되는지 확인한다.
2. 분산 트랜잭션 쿼리문을 통해 이상이 없는지 확인.
SET XACT_ABORT ON
BEGIN DISTRIBUTED TRAN
UPDATE X_linked_server.db명.소유자명.SA_PROJECTH
SET DC_RMK2 = NULL
WHERE NO_PROJECT = 'zzzzzzzzzzzZ'
COMMIT TRAN
SET XACT_ABORT OFF
3. 레지스트리 구성정보 확인
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security에 NetworkDtcAccess => 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security에 NetworkDtcAccessTransactions => 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC에 TurnOffRpcSecurity => 1
** 모든 DCT 설정이나 수정 후에는 SQL서비스를 재시작 하지 않으면 위와 같은 에러메세지를 반환 **
반응형
'[DB] SQL SERVER' 카테고리의 다른 글
[MSSQL] disk usage (데이터베이스 디스크 사용량 조회) (1) | 2023.05.24 |
---|---|
[MSSQL] commit/rollback - begin tran (0) | 2023.05.22 |
[MSSQL] 단어자동완성(IntelliSense) 설정 (0) | 2023.05.17 |
[MSSQL] DTC, 분산 트랜잭션 처리를 위한 설정 (1) | 2023.05.17 |
[MySQL] #mysql50#.local (0) | 2023.04.14 |