Community technical support mailing list was retired 2010 and replaced with a professional technical support team. For assistance please contact: Pre-sales Technical support via email to sales@march-hare.com.
Bo, > I looked in the structure of my CVSNT Audit database (MSSQL) and these > columns are actually integer *numbers*: > > Sessionlog.ID > *.ID, *.SessionID All the ID columns are automatic/sequence's that generate the primary key for the table. The *.SessionID columns all are foreign keys to the primary key of SessionLog. The SessionID itself is only stored once in the SessionLog table. > > > >evs switched to guids for the session id. > > Then needs a different Audit database structure. > Yes - but it's out of scope for this discussion anyway. > > Another question: > > Is the commitid the same as the value stored into the Audit > > database sessionlog.sessionid column??? > > Yes. > Well - for commits yes - but every row (and every server session) has a session id, but only on commits are they commit id's too... The code to make the sessionid is in cvsnt/src/main.cpp: /**************************************************************/ static void make_session_id() { sprintf(global_session_id,"%x%08lx%04x",(int)getpid(),(long)time(NULL),r and()&0xFFFF); } /**************************************************************/ For the purposes of migration if you used process id zero then you'd always get a unique session id. Just looking at that code it's actually a little dangerous since the size of the getpid() is not (technically) limited in any way and yet the maximum size of a session id is 64 characters. Finally - CVSNT audit trigger was introduced after the commit id was already available in CVSNT, so if any 'commit' does not have a commit id then you can be sure that it is not already in the audit database. Regards, Arthur