пятница, 27 августа 2010 г.

Как вернуть в базу данных ConfigMgr сведения об установленных клиентах

Рассмотрим следующий случай. У вас отключено обнаружение Heartbeat, но в тоже время включена задача Clear Install Flag. Что же мы увидим в консоли, когда выполнится задача? Обнаруженные компьютеры останутся на месте в коллекциях, но информация о том, что клиент установлен будет утеряна.

Почему так происходит? HeartBeat Discovery, когда включен заставляет отправлять клиента информацию о себе на managememt point. Эта информация впоследствии, заносится в БД ConfigMgr. HeartBeat Discovery - единственный метод обнаружения, обновляющий информацию в Базе Данных Config Mgr о том, что клиент установлен. Задача Clear Install Flag, если выполняется чаще, чем HeartBeat Discovery меняет запись об установленном клиенте - таким образом появляется видимость, что клиент не установлен, хотя между тем на самом деле он установлен и работает! :)

В результате, в отчетах основанных на компьютерах из представления v_R_System_Valid отсутствует информация и в консоли обнаруженные компьютеры ведут себя так, будто клиент на них не стоит.

Как решить эту проблему?



Простой способ - включить Heartbeat Discovery. Но тут надо не забывать, что для того, чтобы клиент поменял свое состояние в Базе Данных, он должен иметь доступ к Management Point.
Второй способ - обновить сведения в Базе Данных вручную. Способ хорош тем, что компьютеры с установленными клиентами даже не обязаны быть в сети :) И если нам действительно не нужен Heartbeat Discovery, то отключите задачу Clear Install Flag, иначе всё вернется на свои места :)

Для обновления вручную можно запустить следующий скрипт в SQL Server Management Studio:

USE [код_сайта]
update dbo.System_DISC
set Client0=1, Client_Type0=1
where Netbios_Name0 like 'имя_пк'

В случае, если необходимо выставить информацию у всех компьютеров, что клиент установлен, то последняя строчка в скрипте не нужна.

20 комментариев:

  1. Вообще-то очисткой флага установки занимается задача Clear Install Flag. Это во-первых.
    А во-вторых, самый простой способ - не менять по незнанию в задачах значения по умолчанию, чтобы у хертбита оставался период 7 дней, а у задач очистки - 90.

    ОтветитьУдалить
  2. Спасибо, полностью согласен. Виноват, что поспешил и не залез в консоль ConfigMgr, чтобы посмотреть правильную задачу. Сейчас исправлю статью.
    Насчет второго пункта. Я так и написал, что heartbeat должен изначально выполняться чаще задачи очистки. Пример, когда необходимо отключить способы обнаружения - виртуальный стенд(непроизводственная среда), но в то же время, легко забыть про отключение задачи Clear Install Flag.

    ОтветитьУдалить
  3. Чтобы забыть, нужно сначала Clear Install Flag включить. К тому же, переустановка клиента раз в 21 день - не особо большая проблема для тестового стенда.
    Но зачем отключать Heartbeat Discovery, включённый по умолчанию?

    ОтветитьУдалить
  4. Не факт, если суть создания стенда - работа с инвентаризационными данными(отчеты), то внезапная невозможность получить доступ к данным может стать сюрпризом. Переустанавливать клиентов тут совсем не нужно, так как они установлены и продолжают работать. В данном случае и heartbeat нам не нужен, так как вирт. машины с клиентами возможно давно выключены. Склоняюсь к мнению, что задача Delete Aged Discovery Data также причастна к удалению флага об установленном клиенте(так что возможно изначально я был прав). Эта задача удаляет данные обнаружения и по умолчанию включена.

    ОтветитьУдалить
  5. В общем, следующий пример, когда мы можем обнаружить такую ситуацию, когда клиенты есть и продолжают работать, а в базе данных и следовательно в консоли они значатся, как не установленные. Включено Active Directory System Discovery, включена задача Delete Aged Discovery Data, отключен HeartBeat. следовательно информация об обнаруженных клиентах будет удалена, но записи компьютеров появятся в базе данных при следующем цикле обнаружения AD. Но появятся без сведений об установленном клиенте, так как за этот флаг отвечает HeartBeat.

    ОтветитьУдалить
  6. Максим, "склоняться к мнению" можно в случае обсуждения "тёмных пятен", о которых нигде не сказано и можно лишь строить догадаки, как работает функционал.
    А информация по поводу тасков SCCM есть. Почитайте, что ли, на странице официальной документации, какие задачи есть, зачем они нужны и с каким периодом отрабатывают.
    Delete Inactive Client Discovery Data, Delete Aged Discovery Data и Clear Install Flag - это три разные задачи.

    ОтветитьУдалить
  7. Понятно, что мы обсуждаем задокументированные моменты. И в последнем своем комментарии я привел пример, как получить эту проблемную ситуацию. Неуверенность была по той причине, что не сразу была ясна природа данной проблемы.

    ОтветитьУдалить
  8. Короче, метод работает и иногда очень полезен. Всё остальное - от лукавого.

    ОтветитьУдалить
  9. Максим, в своём последнем Вы ошиблись, потому что Delete Aged Discovery Data не удаляет учётки из консоли.
    Вы сами себе придумали проблему, а затем предлагаете неверное решение этой проблемы.

    ОтветитьУдалить
  10. * в своём последнем комментарии

    ОтветитьУдалить
  11. Проблема вполне конкретная: агенты установлены, а в консоли упорно их статус остается "не установлено" (No).
    Собственно - быстрый способ вернуть клиентов на место, а с ними и данные по инвентаризации...

    ОтветитьУдалить
  12. Punk(простите, не знаю вашего имени), тут вы увы не правы. Delete Aged Discovery Data удаляет компьютеры из консоли.

    ОтветитьУдалить
  13. homodigitalus, во-первых, не агенты, а клиенты. Во-вторых, это проблема нахождения точки управления клиентом, если мы говорим про чистую инсталляцию.
    Если про говорим, что Heartbeat Discovery был отключён на уже работающей системе, то никто не мешает клиентам отправлять инвентаризационные данные.

    ОтветитьУдалить
  14. Максим, допустим, что Вы правы (хотя документация утверждает обратное).
    Что тогда делает Delete Inactive Client Discovery Data?

    ОтветитьУдалить
  15. PUNK, я описывал проблемы связанные с тем, если клиенты определяются в базе и консоли как неустановленные. 1) Не доступен Resource Explorer
    2) не работают отчеты, основанные на v_R_System_Valid.

    То есть, никто не утверждает, что инвентаризация продолжает собираться, но появляются трудности с получением этой информации

    ОтветитьУдалить
  16. Максим, т.е. Вы продолжаете утверждать, что:
    1. рабочий клиент, которому выключают Heartbeat, перестаёт отправлять инвентаризационные данные?
    2. Delete Aged Discovery Data удаляет данные о клиентах из консоли и базы?

    Я правильно понял?

    ОтветитьУдалить
  17. Извиняюсь, не заметил опечатки
    1)*То есть, никто не утверждает, что инвентаризация не продолжают собираться, но появляются трудности с получением этой информации.
    2)думаю, для подтверждения можно привести эту ссылку http://blogs.msdn.com/b/steverac/archive/2006/08/03/687874.aspx

    ОтветитьУдалить
  18. PUNK, эти 2 задачи очень схожи. Delete Inactive Client Discovery Data вычищает информацию о клиентах с флагам obsolete:Yes и Active:No.

    The Delete Inactive Client Discovery Data task is similar to the Delete Aged Discovery Data task. However, this task operates only on resources that are Configuration Manager 2007 clients. The Delete Aged Discovery Data task operates on all discovered resources.

    http://technet.microsoft.com/en-us/library/bb693646.aspx

    ОтветитьУдалить
  19. Получается, что для правильной очистки базы должны быть включены обе задачи. Если клиента вынесли из AD, то удаление сделает Delete Aged Discovery Data Task. А если клиента из AD не вынесли, но он выключен, то отработает Delete Inactive Client Discovery Data Task + Heartbeat Discovery.

    ОтветитьУдалить
  20. Как мне видится, то область применения Delete Aged Discovery Data Task значительно шире Delete Inactive Client Discovery Data Task. Delete Inactive Client Discovery Data Task применяется в основном в связке с client status reporting(http://sccm.com.ua/?p=6 очень понравилась ваша статья).

    ОтветитьУдалить