SQL Server가 기존 또는 새 분산 트랜잭션을 등록하지 못하는 경우 규칙이 경고를 트리거합니다.
SQL Server가 기존 또는 새 MSDTC(Microsoft Distributed Transaction Coordinator) 트랜잭션을 등록하지 못한 경우 이 메시지가 발생합니다.
이러한 오류의 근본 원인은 여러 가지가 있을 수 있습니다. 오류 상태, 오류와 함께 반환된 특정 결과 코드 및 동일 시간에 발생한 다른 오류는 등록 실패 이유를 확인하는 데 도움이 될 수 있습니다. 등록 실패는 이름 확인 실패와 같은 통신 문제를 나타내는 경우도 많습니다. 또한 호출하는 응용 프로그램의 디자인 방식 또는 SQL Server 쪽의 차단 문제나 성능 문제 때문일 수 있습니다.
MS DTC 트랜잭션에 관련된 두 컴퓨터 모두에서 MS DTC가 시작되었는지 확인합니다. MS DTC 서비스가 클러스터형인 경우 클러스터 관리자에서 온라인 상태인지 확인합니다.
MS DTC 트랜잭션에 관련된 서버의 이벤트 로그를 검토하여 이 메시지와 같은 시간대에 다른 오류가 발생했는지 확인합니다. 다른 오류가 있으면 그 오류를 먼저 해결하세요. 이 경우 이 오류는 다른 오류로 인해 부수적으로 발생한 것일 수 있습니다.
기본적으로 네트워크 MS DTC 액세스는 Windows Server 2003에서 사용되지 않습니다. 관련 컴퓨터가 Windows 2003을 실행하는 경우 MS DTC가 사용 가능하도록 설정되었는지 확인합니다.
관련 서버 간의 RPC 통신이 올바르게 작동하는지 확인합니다.
MS DTC 트랜잭션에 관련된 서버를 다시 부팅하여 모든 IP 주소 정보를 플러시하세요.
호출하는 COM+ 구성 요소에 대한 트랜잭션 제한 시간 설정이 충분한지 확인하여 시간 초과로 인해 다른 구성 요소가 이미 시간이 초과된 트랜잭션에 참여하려고 시도하지 않도록 하세요.
SQL Server 구성 옵션 "경량 풀링"("파이버 모드"라고도 함)이 설정된 경우 해제하십시오. 오류가 여전히 발생하는지 테스트하십시오.
SQL Server 구성 옵션 "우선 순위 높임"이 설정된 경우 해제하십시오. 오류가 여전히 발생하는지 테스트하십시오.
Microsoft 기술 자료 문서 307802를 검토하여 사용자 환경이 문서의 환경과 정확히 일치하는지 확인합니다. 정확히 일치하는 경우 환경 요소 중 하나를 변경하여 메시지 발생이 중지되는지 확인합니다. 환경이 문서와 더 이상 일치하지 않게 되었을 때 메시지 발생이 중지하면 그 메시지는 무시해도 안전합니다.
이름 | 설명 | 기본값 |
사용 | 워크플로 사용하거나 사용하지 않도록 설정합니다. | 예 |
간격(초) | 워크플로를 실행하는 반복 시간 간격(초)입니다. | 300 |
우선 순위 | 알림 우선 순위를 정의합니다. | 1 |
심각도 | 알림 심각도를 정의합니다. | 1 |
동기화 시간 | 동기화 시간 |
|
시간 제한(초) | 여기서 지정한 시간 동안 워크플로가 실행된 후 워크플로가 닫히고 실패로 표시됩니다. | 200 |
데이터베이스 연결 시간 제한(초) | 워크플로는 지정된 기간 동안 데이터베이스에 액세스할 수 없으면 실패하며 이벤트를 등록합니다. | 15 |
Target | Microsoft.SQLServer.Windows.DBEngine | ||
Category | EventCollection | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
| ||
Comment | Mom2017ID='{7F714A4C-B7CF-4665-B1B5-4D7A3E0613D0}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74} |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ | DataSource | Microsoft.SQLServer.Windows.DataSource.EventCollectionFiltered | Default |
GenerateAlert | WriteAction | System.Health.GenerateAlert | Default |
<Rule ID="Microsoft.SQLServer.Windows.EventRule.DBEngine.Enlist_of_MSDTC_transaction_failed_1_5_Rule" Target="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2017ID='{7F714A4C-B7CF-4665-B1B5-4D7A3E0613D0}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Microsoft.SQLServer.Windows.DataSource.EventCollectionFiltered">
<MachineName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<MonitoringType>$Target/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<EventDisplayNumber>8510</EventDisplayNumber>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.Windows.EventRule.DBEngine.Enlist_of_MSDTC_transaction_failed_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter1>
<AlertParameter2>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>Event ID: $Data/Property[@Name='EventID']$. $Data/Property[@Name='Message']$</AlertParameter3>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>