O Coordenador de Transações Distribuídas para de funcionar corretamente após algumas horas

1

Percebemos que o serviço DTC parou de funcionar corretamente. Log do aplicativo ASP.NET:

System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
   at System.Transactions.Oletx.IDtcProxyShimFactory.ConnectToProxy(String nodeName, Guid resourceManagerIdentifier, IntPtr managedIdentifier, Boolean& nodeNameMatches, UInt32& whereaboutsSize, CoTaskMemHandle& whereaboutsBuffer, IResourceManagerShim& resourceManagerShim)
   at System.Transactions.Oletx.DtcTransactionManager.Initialize()
   at System.Transactions.Oletx.DtcTransactionManager.get_ProxyShimFactory()

O DTC não pode ser reiniciado enquanto estiver nesse estado. Observamos algum evento no log do Windows, então tentamos soluções diferentes. Aqui está o que realmente ajuda, mas apenas por algumas horas: link . O DTC é reiniciado, mas o seguinte evento aparece e o problema volta:

Source: Microsoft-Windows-MSDTC Client
Date: 2017-03-16 09:25:19
Event ID: 4356
Task Category: MSDTC Proxy
Description:
Failed to initialize the MS DTC Communication Manager.  Error Specifics: hr = 0x80070005, com\complus\dtc\dtc\cm\src\ccm.cpp:2118, CmdLine: C:\Windows\system32\msdtc.exe, Pid: 4252

Reiniciar o DTC mais uma vez termina com erro, de modo que os seguintes eventos apareçam:

Source: Microsoft-Windows-MSDTC
Date: 2017-03-16 10:20:41
Event ID: 4441
Task Category: SVC
Description:
A MS DTC component has encountered an internal error. The process is being terminated. Error Specifics: DtcSystemShutdown (com\complus\dtc\dtc\msdtc\src\msdtc.cpp@2485): Shutting down with an error

Source: Microsoft-Windows-MSDTC
Date: 2017-03-16 10:20:41
Event ID: 4439
Task Category: Unknown
Description:
Failed to verify MS DTC service account information. Internal Information : msdtc_trace : File: com\complus\dtc\shared\util\security.cpp, Line: 818, VerifyAccountInfo: CService::Create failed, hr=0x80070005.

Source: Microsoft-Windows-MSDTC Client
Date: 2017-03-16 10:20:41
Event ID: 4356
Task Category: MSDTC Proxy
Description:
Failed to initialize the MS DTC Communication Manager.  Error Specifics: hr = 0x80070005, com\complus\dtc\dtc\cm\src\ccm.cpp:2118, CmdLine: C:\Windows\system32\msdtc.exe, Pid: 4252

A reconfiguração do DTC ajuda novamente, mas não por muito tempo. Eventos mais notados:

Log Name:      Application
Source: Microsoft-Windows-MSDTC Client
Date: 2017-03-14 12:03:27
Event ID: 4156
Task Category: CM
Description:
String message: INFORMATIONAL: Negotiate Resources returned OUT OF RESOURCES IN SSTATE_UP.

Source: Microsoft-Windows-Perflib
Date: 2017-03-15 13:58:59
Event ID: 1008
Task Category: None
Description:
The Open Procedure for service "MSDTC" in DLL "C:\Windows\system32\msdtcuiu.DLL" failed. Performance data for this service will not be available. The first four bytes (DWORD) of the Data section contains the error code.
    
por rotman 17.03.2017 / 12:44

1 resposta

2

Graças a Martin Nolte e Feroz Khan, do suporte da Microsoft, conseguimos resolver o problema.

Verifique se o problema não está relacionado ao "problema da seta vermelha". Execute o dcomcnfg open Component Services e veja se “Red Arrow” está em “My Computer”.

  1. Se você vir uma seta vermelha do MSDTC no servidor de banco de dados. Para corrigir o problema, siga as etapas mencionadas abaixo (ou de )

  2. Verifique se o serviço MSDTC foi iniciado:

  3. VerifiqueseogrupoUsuáriostempermissãoparalerassubchavesemHKEY_CLASSES_ROOT\CLSID.Seogrupodeusuáriosnãotempermissãoparalerassubchaves,oserviçodeaplicativodosistemaCOM+podeterdificuldadesparainiciarecausaromesmoproblemade“setavermelha”.ParaobterapermissãodeleituraparaogrupoUsuários,podemosseguirestasetapas(primeiro,devemosfazerbackupdeHKEY_CLASSES_ROOT\CLSID):

    • AbraRegedt32,localizeHKEY_CLASSES_ROOT\CLSID
    • SelecioneoCLSID,cliqueemSegurança->Permissãonabarrademenu
    • NaguiaSegurança,adicioneUSUÁRIOSnalistadepermissões,dêpermissãodeleitura.
    • CliquenobotãoAvançado,selecioneaopção“Substituirentradasdepermissõesemtodososobjetosfilhocomentradasmostradasaquiqueseaplicamaobjetosfilho”.CliqueemAplicar.
  4. VerifiquesetodostêmpermissãodeleituraemC:\Windows\Registrationeseussubobjetos.

  5. VerifiqueseoserviçodeAplicativodeSistemaCOM+estánostatusiniciado:
  6. OserviçoMSDTCdevepermitirqueUsuáriosAutenticadosconsultemostatusdoserviço.Paraverificarisso,podemosexecutarestecomandonajaneladecomando:

    scsdshowmsdtc
  7. SeogrupoUsuáriosautenticadosnãotiverpermissãodeconsultanoobjetodeserviçoMSDTC,issofarácomqueamaioriadosusuáriosnãotenhapermissãoparaobterostatusdoserviçoMSDTC,porexemplo:

    (A;;CR;;;AU)
  8. Precisamosexecutarestecomandoparaconcederpermissãosuficienteparaousuárioautenticadoe,emseguida,reiniciaroDLLHOST.exe(antesdefazerisso,façabackupdasinformaçõesdesaídade“scsdshowmsdtc”):

    scsdsetmsdtcD:(A;;CCLCSWRPLOCRRC;;;S-1-2-0)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)(A;;CCLCSWRPLORC;;;NS)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
  9. Seasetapasacimanãofuncionarem,vocêprecisaráseguiroutrasetapas,comoreconstruiroCatálogoCOM+eeliminaracorrupçãodaschavesdoRegistro.

  10. Reiniciarservidor

VerifiqueseoproblemacomoserviçoMSDTCaindaexiste.Emcasoafirmativo,verifiquesevocênãotempolíticasdegrupodefinidasparaoMSDTC.

  1. Restaureacontapadrão: link

  2. Se você definir a conta como "Serviço de Rede" em dcomcnfg, o seguinte valor do Registro será definido: AccountName under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security.

  3. Para verificar se esse valor do registro é afetado pela sua política de grupo, você pode executar as seguintes etapas:

    • Abra rsop.msc na máquina afetada, que exibirá as políticas de grupo aplicadas
    • Verifique a “Configuração do Computador” e vá para “Configurações do Windows” / ”Configurações de Segurança” e verifique o “Registro”
    • VocêpodeveralgumadefiniçãodeHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security?
    • Verifique"Serviços do sistema", que também está abaixo de "Configurações de segurança". Você pode ver alguma modificação para o "Coordenador de transações distribuídas"
    • Vá para "Configuração do usuário" e siga as mesmas etapas da etapa 2, 3 e 4.
  4. Para obter toda a política de grupo aplicada, você precisa fazer o download

    • Ferramentas de administração remota do servidor para o Windows 10
    • link
  5. Abra o prompt de comando do Powershell e digite estes comandos:

    Import-Module GroupPolicy Get-GPOReport -All -ReportType Html -Path AllGPOsReport.htm
    
  6. Defina a política de grupo padrão para o MSDTC

  7. Executar iisreset /restart
  8. Novamente restaure a conta padrão: link
  9. O serviço MSDTC deve funcionar corretamente
por 27.04.2017 / 17:52