Whenever troubleshooting server uptime/downtime, I typically start by installing a simple Microsoft tool, uptime.exe which will basically parse the event log for shutdown related events and provide a simple table of the system uptime, along with reasons. You can perform a historical seach, such as the last 60 or 365 days, or whatever number you’d like; you just need to have the event logs to support that query. It will let you know if you don’t have enough event logs, and will show you whatever it can.
It typically do this when troubleshooting a server which appears to be restarting without reason. It permits you to easily see each time the system restarted, which can sometime reveal a pattern. When I see reboots at 3am, I think Windows Update (for example) or a reoccuring on the weekends. Sometimes it makes it easy to figure out like a scheduled task or other such event. Othertimes, it appear totally random.
You can find it at: http://technet.microsoft.com/en-us/library/cc751311.aspx