|  |  | Archives of the TeradataForumMessage Posted: Wed, 06 Apr 2005 @ 07:57:20 GMT
 
 
  
| Subj: |  | Re: Question on Concurrent sessions |  |  |  | From: |  | Christie, Jon |  
 How about the DBC.SessionInfo view?  There's a row for each currently logged on session.  Then, there's the DBC.LogOnOff view.  There's a row
for each "event."  The events are logon, logoff, and various other ways a session can end.  By matching starting to ending events you can get the
beginning and ending time for each session one the session ends (there's no ending row until the session logos off). And example might help here.  This is a macro I install in DBC.  I install it in DBC because it selects from DBC tables.  If I install it
somewhere else, I have to grant some rights to the place I install to. 
     replace macro WhoWasOn2
      (D1 date  DEFAULT DATE
      ,T1 float DEFAULT TIME
      ,D2 date  DEFAULT DATE
      ,T2 float DEFAULT TIME)
      AS
     (
     sel a.Username(title'User')(format'x(12)')
        ,a.SessionNo(title'Session')(format'zzzzzz9')
        ,a.LogicalHostID(title'Host')
        ,a.IFPNo(title'IFP')
        ,a.LogDate(title'Logon')
        ,a.LogTime(title' ')
        ,cast(b.LogDate as char(8))(title'  Logoff')
        ,cast(b.LogTime as char(12))(title' ')
      from DBC.LogOnOff a, DBC.LogOnOff b
      where a.Event = 'Logon'
       and  b.Event <> 'Logon'
       and  a.SessionNo = b.SessionNo
       and  a.IFPNo = b.IFPNo
       and  a.LogonDate = b.LogonDate
       and  a.LogonTime = b.LogonTime
       and ((a.LogDate = :D2 and a.LogTime <= :T2)
            or a.LogDate < :D2)
       and ((b.LogDate = :D1 and b.LogTime >= :T1)
            or b.LogDate > :D1)
     union
     sel UserName(title'User')(format'x(12)')
        ,SessionNo(title'Session')(format'zzzzzz9')
        ,LogicalHostID mod 1024 (title'Host')
        ,IFPNo(title'IFP')
        ,LogonDate(title'Logon')
        ,LogonTime(title' ')
        ,'  Logged'(title'  Logoff')
        ,'On          '(title' ')
     from DBC.SessionInfo
     where (LogonDate = :D2 and LogonTime <= :T2)
        or  LogonDate < :D2
     order by 5,6,2;
     );
 
 |  |