none
При повторной инвентаризации данные затерлись RRS feed

  • Вопрос

  • Коллеги, добрый день. Столкнулся с проблемой в Hardware Inventory. При первичной инвентаризации данные записались в базу (проверил таблицы). К примеру, в таблице dbo.Operating_System_DATA были данные по всем клиентам. В обозревателе ресурсов можно было посмотреть информацию по клиенту. При повторной инвентаризации данные из таблицы dbo.Operating_System_DATA перешли в таблицу dbo.Operating_System_HIST, но новые данные не появились. В обозревателе ресурсов на вкладке "Оборудование" данные пропали и перешли во вкладку "Журнал оборудования". Если в параметрах клиента добавлять новые классы инвентаризации - они нормально собираются, записываются в таблице, и в обозревателе ресурсов их видно. Однако, при повторной инвентаризации, они опять переходят в журнал оборудования, а новые данные не добавляются. В чем может быть проблема?

    Среда: System Center 2012 R2 Configuration Manager SP1, 1 Primary Site.

Ответы

  • После долгих раздумий помогло вот такое решение: в дефолтной политике клиента отключил класс SMS_SoftwareInstalled, после этого клиенты получили новую политику и данные с клиентов начали поступать на MP, а оттуда в базу данных.
    22 июля 2015 г. 11:36

Все ответы

  • Скриншот по ошибке:

    10 июля 2015 г. 3:35
  • Вы не туда смотрите. Все данные инвентаризации нужно смотреть через представления v_GS_ххх, в вашем случае это v_GS_OPERATING_SYSTEM.

    В таблицы лезть не нужно, SCCM управляет данными так, как ему надо.

    • Предложено в качестве ответа PeTrProduct 15 июля 2015 г. 8:18
    • Отменено предложение в качестве ответа Алексей Гулынин 15 июля 2015 г. 11:43
    15 июля 2015 г. 8:17
  • Я с вами согласен, что данные нужно смотреть в данном представлении, но в нём почти нет данных (есть данные по небольшому количеству компьютеров), хотя раньше они были. А их в этом представлении нет (v_GS_Operating_System), потому что данные не записались в таблицы. Вот у меня и возникает вопрос: почему все данные инвентаризации стерлись, а новые не записались?
    15 июля 2015 г. 11:46
  • Видимо проблема с инвентаризацией - новые данные приходят пустые, старые срезы отправляются в историю. Что у вас не так - нужно разбираться отдельно: какие результирующие политики инвентаризации определены, как инвентаризация отрабатывает на клиентах (ошибки) и т.д. 

    Если проблемы именно с записью данных, должны быть ошибки SQL от SMS Inventory Data Loader, с ними и нужно разбираться. Если SQL-ошибок нет, то думать почему что-то "не записалось" в какую-то табличку смысла мало.

    Могу порекомендовать включать расширенное логирование и ловить ошибки на сервере:

    Но проблема скорее в поступающих данных, а не в их записи, поэтому нужно траблшутить клиентов и Hardware Inventory:

    Классический косяк - отжмакали у класса нестандартные чекрыжики, этих свойств в WMI на клиентах нет, WQL-запрос завершается с ошибкой, данные перестают поступать. Ошибку легко можно увидеть в соответствующем логе на клиенте.

    • Предложено в качестве ответа PeTrProduct 16 июля 2015 г. 9:43
    • Отменено предложение в качестве ответа Алексей Гулынин 16 июля 2015 г. 10:30
    16 июля 2015 г. 9:43
  • Немного сузил проблему. В SMS Inventory Data Loader ошибок нет, значит можно предположить, что в базу всё записывается нормально. Запустил полную инвентаризацию на клиенте и вот что увидел в InventoryAgent.log:

    Inventory: Message type is InventoryAction 
    Inventory: Temp directory = C:\Windows\CCM\Inventory\Temp\ 
    Inventory: Clearing old collected files. 
    Inventory: Opening store for action {00000000-0000-0000-0000-000000000001} ... 
    CInvState::VerifyInventoryVersionNumber: Mismatch found for '{00000000-0000-0000-0000-000000000001}': 16.1 vs. 0.0 
    Inventory: Version number mismatch; will do a Full report. 
    Inventory: Action=Hardware, ReportType=ReSync, MajorVersion=17, MinorVersion=0 
    Inventory: Initialization completed in 0.078 seconds 
    Collection: Namespace = \\.\root\ccm\invagt; Query = SELECT __CLASS, __PATH, __RELPATH, Name, SMSID, Domain, SystemRole, SystemType, LocalDateTime FROM CCM_System; Timeout = 600 secs. 
    Collection: 1/1 inventory data items successfully inventoried. 
    Inventory: Collection Task completed in 0.094 seconds 
    Inventory: Temp report = C:\Windows\CCM\Inventory\Temp\57c3b7bf-0001-411f-8290-3313997e5542.xml 
    Inventory: Starting reporting task. 
    Reporting: 1 report entries created. 
    Inventory: Reporting Task completed in 0.015 seconds 
    Inventory: Successfully sent report. Destination:mp:MP_HinvEndpoint, ID: {7C4E4921-A6CC-4C9C-97D8-19287F78DD23}, Timeout: 80640 minutes MsgMode: Signed, Not Encrypted 
    Inventory: Cycle completed in 0.281 seconds 
    Inventory: Action completed. 

    Т.е. клиент опросил всего лишь один класс при полной инвентаризации, и так со всеми клиентами. Почему такое происходит я так и не могу понять. На всех клиентах развернута политика, Hardware Inventory включена и стоят все стандартные классы. Есть идеи почему такое происходит?

    А можно поподробнее про "Классический косяк - отжмакали у класса нестандартные чекрыжики,"?
    16 июля 2015 г. 10:30
  • Следует проверить, не возникает ли на клиенте ошибок при применении политик. Такое ощущение, что политика для HW инвентаризации либо отключена, либо не применяется (ошибка) на клиенте. В результате отправляются только данные CM-клиента.

    С "чекрыжиками" все просто - в настройках интвентаризации много всяких галочек не проставлено. Каждая галочка означает, что в WQL запрос добавляется соответствующее свойство: 

    SELECT __CLASS, __PATH, __RELPATH, Name, НЕЧТО_НОВОЕ FROM WIN32_CLASS_XXX

    Проблема в том, что на большинстве клиентов в свойствах класса этого свойства может не быть (например оно было добавлено в Windows 8.1, а у вас Windows 7). В результате выполнения подобного запроса возникнет ошибка (нет такого свойства), получаем отсутствие данных, которое благополучно передается в SCCM (нет ведь формального признака, что данные для именно этого класса обязательно должны быть, запрос просто ничего не вернул, это совершенно нормально...)

    • Предложено в качестве ответа PeTrProduct 17 июля 2015 г. 9:27
    • Отменено предложение в качестве ответа Алексей Гулынин 20 июля 2015 г. 3:38
    17 июля 2015 г. 9:27
  • В логе клиент PolicyAgent.log ошибок нет. Есть ошибки в логе PolicyEvaluator.log:

    Already sent a policy rule application failure status message within the last 6 hours, not sending.
    Failed to apply policy rule {6c0238f3-a7fc-4e5b-b7c0-b7409da8b15d}.
    The policy CCM_Policy_Policy5.PolicyID="{e3dcec66-5a75-46a7-a216-2932d68b1bb5}",PolicySource="SMS:SLV",PolicyVersion="18.00" failed to compile. State has been set to 'Error' and policy will be rolled back.

    В настройках инвентаризации все галочки стоят по умолчанию. Нового ничего не добавляется:

    Однако, если поставить галочку напротив нового пункта, данное свойство инвентаризируется, но при последующей инвентаризации снова затрётся и перестанет инвентаризироваться.

    Если посмотреть итоговые параметры клиентов, то там все эти галочки стоят, т.е. политика применяется:

    20 июля 2015 г. 3:47
  • После долгих раздумий помогло вот такое решение: в дефолтной политике клиента отключил класс SMS_SoftwareInstalled, после этого клиенты получили новую политику и данные с клиентов начали поступать на MP, а оттуда в базу данных.
    22 июля 2015 г. 11:36