La regola attiva un avviso quando SQL Server non riesce a integrare una transazione distribuita nuova o esistente.
Questo messaggio viene visualizzato quando SQL Server non riesce a integrare una transazione MSDTC (Microsoft Distributed Transaction Coordinator) nuova o esistente.
Le cause principali di questo tipo di errore possono essere diverse. Lo stato dell'errore, il codice risultato specifico restituito con l'errore e gli eventuali altri errori generati quasi contemporaneamente all'errore possono aiutare a determinare le cause dell'esito negativo dell'integrazione. Un tentativo non riuscito di integrazione indica spesso un problema relativo alle comunicazioni, ad esempio un errore nella risoluzione dei nomi. È inoltre possibile che il problema sia dovuto alla modalità di progettazione dell'applicazione chiamante oppure a problemi di blocchi o di prestazioni sul lato SQL Server.
Verificare che MSDTC sia avviato in entrambi i computer coinvolti nella transazione MSDTC. Se il servizio MSDTC è inserito in un cluster, verificare che sia online in Amministrazione cluster.
Esaminare i log eventi dei server coinvolti nella transazione MSDTC per controllare se si sono verificati altri errori contemporaneamente a questo messaggio. Se sono presenti altri errori, risolvere innanzitutto questi, in quanto l'errore qui descritto è spesso un effetto secondario di altri errori.
Per impostazione predefinita, in Windows Server 2003 l'accesso MS DTC alla rete è disabilitato. Se in uno dei computer interessati è in esecuzione Windows 2003, verificare che MS DTC sia stato abilitato.
Verificare che le comunicazioni RPC tra i server coinvolti funzionino correttamente.
Riavviare i server coinvolti nella transazione MSDTC per cancellare tutte le informazioni relative agli indirizzi IP.
Verificare che le impostazioni di timeout della transazione per il componente COM+ chiamante siano sufficienti a evitare un timeout che generi il tentativo di integrazione di un componente separato in una transazione per la quale si è già verificato il timeout
Se è attivata l'opzione di configurazione "lightweight pooling" di SQL Server, nota anche come "modalità fiber", disattivarla. Controllare se l'errore continua a verificarsi.
Se è attivata l'opzione di configurazione "priority boost" di SQL Server, disattivarla. Controllare se l'errore continua a verificarsi.
Vedere l'articolo 307802 della Microsoft Knowledge Base per verificare se l'ambiente in uso corrisponde a quello descritto nell'articolo. Se corrisponde, provare a modificare uno dei fattori di ambiente per vedere se il messaggio di errore non viene più visualizzato. Se il messaggio di errore non viene più visualizzato una volta che l'ambiente non corrisponde più a quello descritto nell'articolo, può essere ignorato.
Nome | Descrizione | Valore predefinito |
Attivato | Abilita o disabilita il flusso di lavoro. | Sì |
Intervallo (secondi) | Intervallo di tempo ricorrente in secondi in cui eseguire il flusso di lavoro. | 300 |
Priorità | Definisce la priorità dell'avviso. | 1 |
Gravità | Definisce la gravità dell'avviso. | 1 |
Tempo di sincronizzazione | Tempo di sincronizzazione |
|
Timeout (secondi) | Specifica il tempo di esecuzione consentito per il flusso di lavoro prima che venga chiuso e contrassegnato come non riuscito. | 200 |
Timeout per la connessione di database (secondi) | Il flusso di lavoro avrà esito negativo e registrerà un evento se non riesce ad accedere al database durante il periodo specificato. | 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>