Сценарий определения времени работы и остановки SQL Server.
set nocount on.
— создание временной таблицы для списка журналов create table #EnumErrorLogs (
			Number tinyint, — номер журнала
			LastEvent datetime, — дата и время последнего события
			LogSize integer — размер журнала в байтах
)
— заполнение списка журналов
insert #EnumErrorLogs exec sp_enumerrorlogs
— подсчет количества журналов 
declare @CountLog tinyint
select @CountLog=count(*) from #EnumErrorLogs
— создание временной таблицы для считывания содержимого журнала 
	 create table #ReadErrorLog (
	 id integer identity,
	 TextStr varchar(255), — текст сообщения
	 ContinuationRow tinyint-признак продолжения сообщения
)
declare @i smallint,@s varchar(250)
declare @start datetime,@finish datetime,@duration datetime
print ?Работа SQL Server ?+@@SERVERNAME
print ?:===:=====================:=====================:?+
	 ?================================:=====================================?
print ?: N : Старт : Финиш :?+
 	? Продолжительность : Текст последнего сообщения в журнале :? 
print ?:===:=====================:=====================:?+
	 ?================================:=====================================?
	— перебор журналов, начиная с самых старых
	set @i=@CountLog-1 
	while @i >= 0 begin
		— считывание i-журнала во временную таблицу
		exec(?insert #ReadErrorLog exec sp_readerrorlog ?+@i)
	— получение даты и времени запуска SQL Server 
	select top 1 @start=cast(left(TextStr,19) as datetime) from #ReadErrorLog order by id
	— получение даты и времени остановки SQL Server
	select top 1 
								else cast(left(TextStr,19) as datetime)
					end,
			from #ReadErrorLog where ContinuationRow  1 order by id desc
	— получение продолжительности работы
		set @duration=@finish-@start
	— вывод результатов
	print ? ?+cast(@i as char(2))+? ?+
			convert(char(20),@start,113)+? ?+convert(char(20),@finish,113)+? ?+
			?лет-?+cast(Datepart(yy,@duration)-1900 as char(1))+? ?+
 				?дней-?+cast(Datepart(dy,@duration)-1 as char(3))+? ?+
 				?часов-?+cast(Datepart(hh,@duration) as char(2))+? ?+
				 ?минут-?+cast(Datepart(mi,@duration) as char(2))+? ?+@s
	set @i=@i-1
	truncate table #ReadErrorLog
end
drop table #EnumErrorLogs
drop table #ReadErrorLog