Find Last Restart of SQL Server

By:   |   Updated: 2011-09-19   |   Comments (12)   |   Related: 1 | 2 | More > SQL Server Configurations

Please do not scroll away - stay informed.
Dear Database Professional,

Did you know that publishes new SQL Server content on a daily basis as well as offers free webinars and tutorials?

Let us help you stay informed and learn something new each day. Click here to keep informed.

Thank you,
Greg Robidoux and Jeremy Kadlec ( Co-Founders)

How can I tell when my SQL Server instance was last started?  In this tip we look at various methods of how to get the start time for a SQL Server instance.


Here are a few different ways that you can tell when SQL Server was last started.

Method 1: Find Last Start Time for SQL Server using sys.dm_os_sys_info

This DMV, sys.dm_os_sys_info, contains a column that holds the startup time for SQL Server. You can run the following command to find the start time.

SELECT sqlserver_start_time FROM sys.dm_os_sys_info

Method 2: Find Last Start Time for SQL Server using SQL Server Error Log

If you open the current SQL Server error log in SSMS under Management > SQL Server Logs and scroll to the bottom of the error log you can see when the server was started. Note the highlighted text below "SQL Server is starting".  You will want to look for this to make sure the error log was not cycled and give you a false impression of the start time.

sql server error log start up time

Here is an example of a cycled error log and note the highlighted text.   If you see this you will need to look at a previous error log until you find the log that contains the information in the image above.

sql server log initialized

Note: if you are running the Express edition of SQL Server you cannot read the error logs directly from SSMS, but you can use xp_readerrorlog or navigate to the folder where the log files are stored and use a text editor to read the SQL Server error log files.

Method 3: Find Last Start Time for SQL Server using Dashboard Reports

Another option is to use the SQL Server Dashboard Report.  Right click on the server name in SSMS and select Reports > Server Reports > Server Dashboard and you will get a report similar to the following.

sql server dashboard report

Method 4: Find Last Start Time for SQL Server using Windows Event Viewer

Another option is to use Windows Event Viewer to look for the startup time.  If you open Windows Event Viewer and filter your Event Sources (in our case MSSQL$SQL2008) for the SQL Server instance and Event ID 17162 you can find all of the startup times that are still in the Event Viewer log.

windows event viewer start time

Here is a partial listing of the startup times for this instance.

windows event viewer sql startup log
Next Steps
  • Hopefully this information comes in handy the next time you want to find out when SQL Server was started. 
  • I think the DMV is the easiest way, but this wasn't introduced until SQL Server 2008.  Also, the Dashboard Report is probably new for SQL 2008 as well.
  • The error log method can be used for pretty much any version of SQL Server.

Get Started Now - Click here to get your free 14 day trial of SolarWinds Database Insights

get scripts

next tip button

About the author
MSSQLTips author Greg Robidoux Greg Robidoux is the President of Edgewood Solutions and a co-founder of

View all my tips

Article Last Updated: 2011-09-19

Comments For This Article

Monday, September 16, 2019 - 4:37:07 PM - Danette Riviello Back To Top (82473)

Very helpful - thanks!  I was about to do something like Method 2 - and decided to check if there were a more straightforward way (Method 1).   I appreciate your sharing this!

Friday, February 1, 2019 - 4:36:45 PM - Molnar Back To Top (78941)

Rather than trying to parse the error log, you can obtain the start time indirectly via tempdb:

Select LastServerRestart = create_date
from sys.databases
where name = 'tempdb'

Tuesday, July 12, 2016 - 11:04:38 AM - Greg Robidoux Back To Top (41873)

Hi Hemant,

Not sure.  I would have suggested the things that you already looked at.


Tuesday, July 12, 2016 - 10:57:42 AM - hemant Back To Top (41872)


 If some windows user had restarted the sql server from ssms by using sql server authentication (eg. sa) then how we can find out his local windows or domain username?

Event viewer user column says : N/A and sql deafult traces says: sa , but nowhere I couldn't found that windows username or domain username


Tuesday, September 16, 2014 - 3:08:57 PM - ASHISH Back To Top (34550)

Greg , I apriciate your help.....Thanks 

Tuesday, November 12, 2013 - 1:03:53 AM - Suresh Back To Top (27462)


Wednesday, December 26, 2012 - 3:50:49 AM - Darshan Back To Top (21133)

Thanks for great this article.

Wednesday, December 28, 2011 - 2:22:10 PM - Roberto Fonseca Back To Top (15458)

Another way (I think) the easiest way (if you cannot access the SQL Server Instance or SSMS) is to check the SQL Server Log/SQL Server Agent Log files. The default location is C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log

Monday, December 19, 2011 - 10:08:51 AM - E Elhassan Back To Top (15393)


I found this article to be very useful as well. One other way to find out last time server was rebooted I was using net stats commandline:

C:\net stats Server

You will get more info about your server but on the very top of the return result you will see something like:

Statistics since mm/dd/yyyy hh:mm AM/PM



Monday, September 19, 2011 - 9:53:58 AM - Paul Kirk Back To Top (14689)

One other method...


Instances running SQL 2005 or later usually write an entry to the SQL Errorlog daily at around midnight:

"The instance of SQL server has been using process ID of xxxxx since <date in local time> <date in UTC>. This is an informational message only; no user action is required."

Monday, September 19, 2011 - 9:24:52 AM - Greg Robidoux Back To Top (14688)

Thanks Paul for these additional items. 


Monday, September 19, 2011 - 9:08:21 AM - Paul Paiva Back To Top (14687)

Greg, thanks for a great article.

Here's a few more ways to identify the start time of the SQL Server instance:

1)  SELECT create_date FROM sys.databases WHERE name = 'tempdb'

This is because tempdb is always created afresh with every start up of the instance.

2)  SELECT Min(login_time), Min(last_batch) FROM sys.sysprocesses

This works because the login_time and last_batch times of any spid under 51 have the start-up time.

3)  Executing sp_who2 will give essentially the same info as (2).



get free sql tips
agree to terms