Запрос SCCM: Как получить последнюю регистрацию пользователя при входе в систему (если есть) и отобразить ПК, IP, пользователя, время входа в систему - PullRequest
0 голосов
/ 15 июня 2009

Я пытаюсь создать запрос SQL 2005 для извлечения и объединения записей из 3 представлений данных SCCM. Первый вид содержит записи действительных компьютеров; вторая содержит информацию для входа в систему, содержащую: идентификатор ПК, имя пользователя, метку времени и т. д .; третий содержит идентификатор ПК, IP-адрес.

1stview содержит только одну уникальную запись на ПК; 2-й вид может содержать несколько записей на ПК: по одной на каждый раз, когда пользователь входит в систему на компьютере; третий может содержать несколько записей на ПК: по одной для каждого IP-адреса, зарегистрированного в базе данных.

так что это похоже на:

view1 (v_R_System_Valid) fields (among others)
ResourceID, NetBIOS

view2 (v_GS_SYSTEM_CONSOLE_USER) fields (among others)
id,ResourceID,SystemConsoleUser0,LastConsoleUse0 

view3 (v_RA_System_IPAddresses)  fields (among others)
ResourceID,IP_Addresses0

Я ХОЧУ, чтобы запрос представил мне список всех ПК в первом представлении, а также отобразил (доступен) IP-адрес; последний раз, когда вход в систему и КОГО.

Запрос, который я создал, возвращает каждый ПК, но включает КАЖДОГО пользователя, который вошел в систему на этом ПК и когда, не только последний. Я надеюсь, что кто-нибудь может помочь мне понять это. Я не являюсь опытным сценаристом SQL и создал приведенный ниже код, используя информацию из Интернета.

Мой запрос:

Select 
SV.Netbios_Name0 AS [NetBIOS Name],
SCU.SystemConsoleUser0 AS [User Name],
CAST(ISNULL(SCU.theLastTime, 0) AS datetime ) AS [Last Console Use]

from v_R_System_Valid SV
 Left Join (Select ResourceID, SystemConsoleUser0,
                Max(LastConsoleUse0) as theLastTime 
            from v_GS_SYSTEM_CONSOLE_USER 
            group by ResourceID, SystemConsoleUser0) 
     AS SCU on SCU.ResourceID = SV.ResourceID

where (SV.Netbios_Name0 not like 'ENC-%')
and (SV.Netbios_Name0 not like 'NL%')

order by SV.Netbios_Name0

Заранее спасибо, Eric

Ответы [ 2 ]

1 голос
/ 15 июня 2009
SELECT SV.Netbios_Name0 AS [NetBIOS Name]      
       , latest_user.SystemConsoleUser0 as [User Name]
       , CAST(ISNULL(SCU.theLastTime, 0) AS datetime ) AS [Last Console Use]
       , IP.IP_Addresses0
from   v_R_System_Valid SV 
       left outer join
                 (Select  ResourceID
                          ,Max(LastConsoleUse0) as theLastTime 
                 from     v_GS_SYSTEM_CONSOLE_USER 
                 group by ResourceID
                          ,SystemConsoleUser0) AS SCU 
       on SCU.ResourceID = SV.ResourceID

       left outer join v_GS_SYSTEM_CONSOLE_USER as latest_user
       on latest_user.LastConsoleUse0 = SCU.theLastTime
   and
       latest_user.ResourceID = SCU.ResourceID
       left outer join v_RA_System_IPAddresses as IP
       on IP.ResourceID = SV.ResourceID
where  (SV.Netbios_Name0 not like 'ENC-%') 
    and 
       (SV.Netbios_Name0 not like 'NL%')
order by SV.Netbios_Name0
0 голосов
/ 16 июня 2009

С помощью Адама я пришел к следующему запросу:

select SV.Netbios_Name0 AS [NetBIOS Name]
   , latest_user.SystemConsoleUser0 as [User Name]
   , CAST(ISNULL(SCU.theLastTime, 0) AS datetime ) AS [Last Console Use]
   , IP.IP_Addresses0
from   v_R_System_Valid SV
    left outer join
        (Select ResourceID
             ,Max(LastConsoleUse0) as theLastTime
        from v_GS_SYSTEM_CONSOLE_USER
        group by ResourceID) AS SCU
        on SCU.ResourceID = SV.ResourceID
    left outer join v_GS_SYSTEM_CONSOLE_USER as latest_user
        on latest_user.LastConsoleUse0 = SCU.theLastTime
             and
           latest_user.ResourceID = SCU.ResourceID
    left outer join v_RA_System_IPAddresses as IP
        on IP.ResourceID = SV.ResourceID where (SV.Netbios_Name0 not like 'ENC-%')
            and
            (SV.Netbios_Name0 not like 'NL%')
            and
            (IP.IP_Addresses0 like '10.%')
        order by SV.Netbios_Name0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...