|  | Posted by Matik on 04/25/07 15:32 
Hi,
 I have a funny situation.
 Within: MSSQL 2000 SP3, everything below described is running on same
 PC.
 
 there is a program running, which sends information to two other
 programs.
 This information is a timestamp of the program in datetime format,
 which has it's own clock.
 The clock is incremented each 5 seconds of the program, which
 corespondes to aprox. one second of the real time.
 It means, each on second of real time, the computer time is updated +5
 seconds.
 
 Now, two other applications, are getting this information at the same
 moment.
 FIRST of this applications, updates local time of the computer with
 the time recieved.
 SECOND application, writes a protocol to file, with timestamp read at
 moment of writing from operating system.
 Until now, all times are equal (the differences are not biger that
 ms).
 
 Now, the SECOND application, after writing a log into file (with
 proper timestamp), calls SP in database.
 It passes as input prm. the time recieved from very first program,
 which is the same time as the current system time, which is the same
 time the SECOND application writes to the log file.
 
 
 This SP (besides other things) at the very beginning writes a log into
 table, where two times are logged:
 - getdate() to first column,
 - timestamp recieved as input parameter.
 
 Now the funny thing.
 I would expect, the times are equal.
 getdate() = '2007.04.25 10:00:00.000'
 prm_recieved = '2007.04.25 10:00:00.000'
 
 I would expect, that the time from getdate() will be shifted with
 miliseconds (because of call etc).
 getdate() = '2007.04.25 10:00:00.123'
 prm_recieved = '2007.04.25 10:00:00.000'
 
 I would even expect, that the time is shifted 5 seconds ahead:
 getdate() = '2007.04.25 10:00:05.000'
 prm_recieved = '2007.04.25 10:00:00.000'
 
 or, 5 seconds and some miliseconds:
 getdate() = '2007.04.25 10:00:05.123'
 prm_recieved = '2007.04.25 10:00:00.000'
 
 What I can not UNDERSTAND, why sometimes the time is equal, or
 sometimes is ALMOST equal (within the diff of miliseconds), and why
 sometimes the time is like this(!!!) :
 
 getdate() = '2007.04.25 10:59:55.000'
 prm_recieved = '2007.04.25 10:00:00.000'
 
 It seams to me, the getdate is getting somehow the PERVIOUS local
 system time, which was acctualy already upgraded ! Becasue all other
 app's are having the proper value.
 
 All other apps are writen in C++ and are very simple.
 I was trying to set the SQLServer running property higher - with no
 result.
 I need to mention, there is SQLServer Agent running, and one procedure
 with endless loop, with waitfor delay equal 2 seconds.
 But non of them (changing the waitfor delay to other value, disabling
 SQLAgent) fixes the problem.
 
 Can somebody then tell me, where from is the time taken, or what is
 the root problem of this issue?
 Or what can it be?
 
 Best regards,
 
 Matik
  Navigation: [Reply to this message] |