La grande vieille surprise de HP

Rejoignant un nouveau projet, le développement et la maintenance d'un programme de longue durée, j'ai décidé de mettre à jour mon ordinateur portable. Je veux depuis longtemps me procurer quelque chose de si compact, si léger, pour pouvoir l'emmener en toute sécurité dans un café, travailler pendant une heure ou deux à l'extérieur du bureau.


Le choix s'est porté sur l'ordinateur portable HP avec un écran de 14 pouces qui prend en charge l'extension 1920x1080, qui a été le critère décisif pour le choix. Le matériel semble être bon, mais le logiciel HP vous fait vous demander s'il était nécessaire.


L'histoire


La fonctionnalité du programme avec lequel vous devez travailler, comme je l'ai dit, est de longue durée, c'est-à-dire Il a connu de nombreuses itérations, des changements de gestionnaires et de développeurs, et est un tel mélange de tout ce qui est correct, compréhensible et incompréhensible avec le statut "Pourquoi était-ce nécessaire?". Dans l'ensemble, un bon code hérité.


Ainsi, l'une des caractéristiques de la fonctionnalité est l'utilisation de transactions distribuées. C'est-à-dire l'ordinateur doit exécuter le service MSDTC (aka Distributed Transaction Coordinator, aka Distributed Transaction Coordinator) et les paramètres correspondants sont activés.


Tout semble aller bien. Pour les autres membres de l'équipe (ils n'utilisent pas HP), le projet est compilé, lancé et tous les scénarios sont élaborés. Le travail bat son plein.


Bon. Je prends mon tout nouveau HP, configure, installe, télécharge, compile, exécute, exécute des scripts et bam, erreur:


System.Data.SqlClient.SqlException (0x80131904): MSDTC on server 'MALS-K9CA69NU' is unavailable. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() at System.Data.SqlClient.SqlDataReader.get_MetaData() at System.Data.SqlClient.TdsParser.TdsExecuteTransactionManagerRequest(Byte[] buffer, TransactionManagerRequestType request, String transactionName, TransactionManagerIsolationLevel isoLevel, Int32 timeout, SqlInternalTransaction transaction, TdsParserStateObject stateObj, Boolean isDelegateControlRequest) at System.Data.SqlClient.TdsParser.GetDTCAddress(Int32 timeout, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlInternalConnectionTds.GetDTCAddress() at System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx) at System.Data.SqlClient.SqlInternalConnection.Enlist(Transaction tx) at System.Data.SqlClient.SqlInternalConnectionTds.Activate(Transaction transaction) at System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction transaction) at System.Data.ProviderBase.DbConnectionPool.PrepareConnection(DbConnection owningObject, DbConnectionInternal obj, Transaction transaction) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at ... 

Bon. Tout peut arriver. Je commence à creuser.


Après des heures passées à supprimer l'antivirus, à désactiver le pare-feu (alias pare-feu), en utilisant toutes les recommandations d'Internet, le problème persiste. L'erreur persiste obstinément.


En examinant le message suivant Erreur: 8004E00F lors de la tentative d'accès aux applications COM + dans les services de composants, nous rencontrons un commentaire, merci tsd.



Bon. Désactivez les services commençant par HP, car ils sont peu nombreux:



La désactivation du tout premier service "Service HP Analytics" donne le résultat. Tout commence juste à fonctionner. MSDTC fonctionne bien, tous les scripts réussissent.


Alors, qui êtes-vous, service HP Analytics? Nous regardons le chemin complet et le nom du fichier exécutable:


 C:\windows\System32\DriverStore\FileRepository\hpanalyticscomp.inf_amd64_19ec9c352a1b5135\x64\TouchpointAnalyticsClientService.exe 

Dans le moteur de recherche, tapez simplement Touchpoint Analytics Client pour tout lire bon à propos de ce programme et à quel point ils essaient de le supprimer.


En bref, à en juger par les enregistrements sur Internet, le service HP Analytics (alias TouchpointAnalyticsClientService.exe, alias HP Touchpoint Analytics, alias TAInstaller.exe, etc.) est un programme par lequel HP supprime la télémétrie de votre ordinateur et envoie chez HP. La principale caractéristique de son travail est qu'il gâche la vie des utilisateurs HP, puis le processeur se charge, puis, maintenant, MSDTC se casse.


Résumer


Il y a un problème avec MSDTC.


Symptômes


  • Vous avez un ordinateur HP.
  • Vous obtenez de manière persistante l'erreur "System.Data.SqlClient.SqlException (0x80131904): MSDTC sur le serveur 'nom_serveur' n'est pas disponible."
  • Vous obtenez également l'erreur «8004E00F lorsque vous essayez d'accéder aux applications COM + dans les services de composants» lorsque vous travaillez avec le service de composants, ( voir ).
  • Disponibilité d'un service HP Analytics fonctionnel.

Solution rapide:


  1. Exécutez l'utilitaire de du :
  2. Dans les services, désactivez le HP Analytics service :
  3. Nous redémarrons l'ordinateur.

Source: https://habr.com/ru/post/fr463787/


All Articles