Сценарий определения времени работы и остановки 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