SCCM 2007 R2 — Некорректное отображение информации об установленном ПО в отчётах Asset Intelligence

imageТе кто пользуется отчетами в SCCM 2007 для анализа ситуации по установленному на компьютерах ПО, вероятно могли столкнуться с ситуацией когда стандартные отчеты типа Count of all instances of software registered with Add or Remove Programs из категории Software — Companies and Products отображают ситуацию близкую к реальности, а отчеты по тем же коллекциям компьютеров из категории Asset Intelligence (AI) отображают неактуальные устаревшие данные. То есть, если например на компьютер была установлена более новая версия какого-то существующего ранее программного продукта, то отчеты AI продолжают отображать данные о старой версии. По этому поводу было открыто обращение в техподдержку Microsoft, результатом чего стало найденное обходное решение этой проблемы.

Суть решения сводится к замене содержимого запроса Представления с именем v_GS_INSTALLED_SOFTWARE_CATEGORIZED в базе данных SCCM

На основании этого Представления строятся интересующие нас отчеты AI, в частности:

  • Software 01A — Summary of installed software in a specific collection
  • Software 02D — Computers with a specific software product
  • Software 02E — Installed software on a specific computer

Итак, подключаемся к базе данных нашего SCCM сайта, находим там соответствующее Представление и переименовываем его например в  v_GS_INSTALLED_SOFTWARE_CATEGORIZED_OLD

image

Затем выполняем скрипт создания нового Представления с именем v_GS_INSTALLED_SOFTWARE_CATEGORIZED. В первой строчке в фигурных скобках должно быть указано имя БД нашего сайта SCCM

 

USE [SMS_KOM]

GO

 

SET ANSI_NULLS ON

GO

 

SET QUOTED_IDENTIFIER ON

GO

 

CREATE VIEW [dbo].[v_GS_INSTALLED_SOFTWARE_CATEGORIZED]

AS

 

SELECT instsw.MachineID AS ResourceID,

instsw.TimeKey AS TimeStamp,

instsw.RevisionID,

instsw.AgentID,

instsw.SoftwareCode00 AS SoftwareCode0,

instsw.ProductCode00 AS ProductCode0,

instsw.CM_DSLID00 AS CM_DSLID0,

instsw.ProductName00 AS ProductName0,

instsw.ARPDisplayName00 AS ARPDisplayName0,

instsw.ProductVersion00 AS ProductVersion0,

instsw.Publisher00 AS Publisher0,

instsw.VersionMajor00 AS VersionMajor0,

instsw.VersionMinor00 AS VersionMinor0,

instsw.ServicePack00 AS ServicePack0,

instsw.Language00 AS Language0,

instsw.ProductID00 AS ProductID0,

instsw.InstalledLocation00 AS InstalledLocation0,

instsw.InstallSource00 AS InstallSource0,

instsw.UninstallString00 AS UninstallString0,

instsw.LocalPackage00 AS LocalPackage0,

instsw.UpgradeCode00 AS UpgradeCode0,

instsw.InstallDate00 AS InstallDate0,

instsw.RegisteredUser00 AS RegisteredUser0,

instsw.SoftwarePropertiesHash00 AS SoftwarePropertiesHash0,

instsw.SoftwarePropertiesHashEx00 AS SoftwarePropertiesHashEx0,

instsw.InstallDirectoryValidatio0 AS InstallDirectoryValidation0,

instsw.EvidenceSource00 AS EvidenceSource0,

instsw.InstallType00 AS InstallType0,

COALESCE (instsw.ProductName00,sl.CommonName) AS NormalizedName,

COALESCE (sl.CommonPublisher, instsw.Publisher00) AS NormalizedPublisher,

COALESCE (instsw.ProductVersion00, sl.CommonVersion) AS NormalizedVersion,

Fam.FamilyName,

Fam.FamilyID,

Cat.CategoryName,

Cat.CategoryID,

sl.SoftwareID

 

FROM dbo.INSTALLED_SOFTWARE_DATA AS instsw LEFT OUTER JOIN

dbo.LU_SoftwareCode AS sc ON sc.SoftwareCode = instsw.SoftwareCode00 AND sc.IsDeleted = 0 LEFT OUTER JOIN

dbo.LU_SoftwareHash AS sh ON sh.SoftwarePropertiesHash = instsw.SoftwarePropertiesHash00 AND sh.IsDeleted = 0 LEFT OUTER JOIN

dbo.v_LU_SoftwareList AS sl ON sl.SoftwareID = COALESCE (sh.SoftwareID, sc.SoftwareID) INNER JOIN

dbo.v_LU_Category AS Cat ON Cat.CategoryID = COALESCE (sl.CategoryID, 4892) INNER JOIN

dbo.v_LU_Family AS Fam ON Fam.FamilyID = COALESCE (sl.FamilyID, 4891)

GO

 


На вновь созданное Представление выставляем разрешения так же как они
выставлены на оригинальном переименованном Представлении, а именно для ролей smsschm_users  и webreport_approle должны быть дано право выполнять выборки (Select)

image

 

После этого проверяем результат. Данные в указанных отчётах Asset Intelligence должны стать сопоставимы с данными отчетов категории Software — Companies and Products

Мои коллеги, занимающиеся этим вопросом, заметили что данный баг благополучно попал и в Beta SCCM 2012 и на это ими было обращено внимание при общении с инженером MS. Поэтому остается вялая надежда на то, что в релиз новой версии эта "какашка" не попадёт.

Всего комментариев: 4 Комментировать

  1. Денис /

    При выполнении скрипта, выходит ошибка: «Сообщение 207, уровень 16, состояние 1, процедура v_GS_INSTALLED_SOFTWARE_CATEGORIZED, строка 21
    Недопустимое имя столбца «ProductCode00».
    Сообщение 207, уровень 16, состояние 1, процедура v_GS_INSTALLED_SOFTWARE_CATEGORIZED, строка 61
    Недопустимое имя столбца «InstallDirectoryValidatio0″.»

    Может конечно я неправильно выполняю скрипт? Я нажимаю кнопку «создать запрос» и вставляю туда код, изменив базу в нем. SCCM 2012 R2 Sp1, SQL 2008.

    1. Алексей Максимов / Автор записи

      А Вы не видите о какой версии SCCM в заметке идёт речь?

      1. Денис /

        А решение для SCCM 2012 вы не знаете?

        1. Алексей Максимов / Автор записи

          По поводу SCCM 2012 R2 сходу не отвечу. Попрошу коллег проверить.

Добавить комментарий