Большой старый сюрприз от HP

    Присоединяясь к новому проекту, разработка и поддержание долго живущей программы, решил обновить себе ноутбук. Давно хотел приобрести себе что-то такое компактное, легкое, чтоб можно было спокойно взять с собой в кофейню, поработать часик другой вне офиса.


    Выбор пал на ноутбук HP c 14'' экраном, поддерживающим расширение 1920x1080, что и явилось решающим критерием для выбора. Железо вроде хорошее, но вот софт от HP заставляет задумываться, а надо ли оно было.


    История


    Функционал программы, с которым нужно работать, как я уже сказал, долго живущий, т.е. он пережил много итераций, смен руководителей и разработчиков и представляет из себя такой микс всего правильного, понятного и непонятного со статусом "А зачем это было надо?". В общем хороший legacy код.


    Так вот, одной из особенностью функционала является использование распределённых транзакции. Т.е. на компьютере должен работать сервис MSDTC (он же Distributed Transaction Coordinator, он же Координатор распределённых транзакций) и включены соответствующие настройки.


    Вроде всё хорошо. У других участников команды (они не используют HP) проект компилируется, запускается и отрабатываются все сценарии. Работа идёт полным ходом.


    Хорошо. Беру свой новеньки HP, настраиваю, устанавливаю, скачиваю, компилирую, запускаю, прогоняю сценарии и бац, ошибка:


    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 ...

    Хорошо. Всякое бывает. Начинаю копать.


    После потраченных часов, удаления антивируса, отключения брандмауэра (он же firewall), использования всех рекомендаций из интернета проблема остается. Ошибка упорно вылезает.


    Исследуя очередной пост Error: 8004E00F when trying to access COM+ Applications in Component Services натыкаемся на комментарий, спасибо *tsd.



    Хорошо. Отключаем сервисы начинающиеся с HP, благо их немного:



    Отключение первого же сервиса "HP Analytics service" даёт результат. Просто всё начинает работать. MSDTC отрабатывает нормально, все сценарии проходят успешно.


    Так кто ты такой HP Analytics service? Смотрим полный путь и имя исполняемого файла:


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

    В поисковике достаточно набрать Touchpoint Analytics Client, чтоб начитаться всего хорошего про эту программу и как её упорно пытаться удалить.


    Кратко, судя по записям в интернета, HP Analytics service (он же TouchpointAnalyticsClientService.exe, он же HP Touchpoint Analytics, он же TAInstaller.exe, и т.д.) это программа при помощи которой HP снимает телеметрию с вашего компьютера и отправляет в HP. Основная особенность её работы то, что она портит жизнь пользователям HP, то процессор загружает, то, вот, MSDTC ломает.


    Резюмируем


    Присутствует проблема с работой MSDTC.


    Симптомы:


    • У вас компьютер HP.
    • У вас упорно возникает ошибка "System.Data.SqlClient.SqlException (0x80131904): MSDTC on server 'имя-сервера' is unavailable."
    • Также вы получаетет ошибку "8004E00F when trying to access COM+ Applications in Component Services" при работе со Службой компанентов, (см.).
    • Наличие работающего сервиса HP Analytics service.

    Быстрое решение:


    1. Запускаем утилиту Кофигурация системы:
    2. В службах отключаем HP Analytics service:
    3. Перегружаем компьютер.
    Поделиться публикацией

    Комментарии 9

      +5

      Всегда было правило: Покупаешь комп, сносишь все, а лучше даже ставишь чистую ОС. Все драйвера ставишь по VID, любые официальные дрова (spXXXXXX.exe) разархивируешь и ставишь напрямую из диспетчера устройств. Всякие утилиты и иже с ним ставишь только если надо.


      Весь шлак от производителя надо на законодательном уровне запретить устанавливать без прямого согласия пользователя. Куда смотрит ЕС...

        0
        Согласен, я так и сделаю на серии HP probook 6560b/6570b и elitebook 8560p/8570p
        Косяк может быть если дискретное видео от АМД, но там ставлю драйвера 2013 года и все

        ps windows7
          0
          Делаю аналогично, в дополнение — обязательно чищу (заполняю нулями) и переразбиваю накопитель. После этого ставлю чистую ОС и драйвера, стандартный набор программ, убеждаюсь в корректной работе и делаю резервную копию диска…

          Ни разу не пожалел о снесенных программах от производителя и всяких разделах восстановления (уже больше 4 лет пользуюсь HP 430G3, устраивает).
          0

          Слежкой занимаются все, кому не лень )

            0
            А что за модель у вас? Kакого года? Сам использую elitebook 840 G3. Использую в формате «как дали». Ничего руками в сервисах специально не трогал. Проверил, у меня такого сервиса нет…
              0
              HP PAVILION 14-ce2010ur. Куплен 2 месяца назад.
              Проверил, у меня такого сервиса нет…

              У парней отсюда проблема была в другом сервисе. Их тесткейс проходит?
              0
              У HP тонны мусорного софта с не очевидным функционалом. Недавно чистил один такой, задолбался этот мусор удалять, который для обычного пользователя бесполезен, но висит в памяти.
                0
                … всегда сношу всё эту вендорную муть, вплоть до драйверов видюх, тач-пад контро-пенел, прочая, прочая.
                  0
                  Проще переустановить чистую ОС. Благо, у HP и аналогичных производителей всякие SLIC зашиты на мамке.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое