Principales respuestas
Registro de caidas del motor SQL Server

Pregunta
-
Hola Grupo,
Me han solicitado en mi Institución saber cuántas veces ha estado sin servicio el motor sql en un período de tiempo. Si viene cierto habría que recorrer cada archivo de log, pero es muy laborioso. Existe alguna otra forma o script de obtener ésta información. Desde ya se agradece vuestra ayuda.
Saludos Cordiales
JOGC
Respuestas
-
Ok, tal vez entendí mal la consulta.
El reinicio que intentas ver, es de SQL Server o el reinicio a nivel de Windows?
Para ver el de SQL Server, una alternativa es cargar los Errorlogs en una tabla auxiliar y luego filtrar
Una ejemplo podría ser:
declare @table table(PK int identity primary key, LogDate datetime, process varchar(50), text varchar(max)) insert into @table exec xp_readerrorlog insert into @table exec xp_readerrorlog 1 insert into @table exec xp_readerrorlog 2 insert into @table exec xp_readerrorlog 3 insert into @table exec xp_readerrorlog 4 insert into @table exec xp_readerrorlog 5 insert into @table exec xp_readerrorlog 6 select count(*) from @table where text like 'Logging SQL Server messages in file %' and logdate> DATEADD(m, -6, getdate())
Y si por lado de Windows podrías filtrar el Event Log y buscar por ejemplo el Event ID : 17115
O consultar por PowerShell:
Get-EventLog -LogName system -After (Get-Date).AddDays(-90) -Source "EventLog" -Message "The Event log Service was started*"
Saludos.
Mariano K.
- Marcado como respuesta jogc jueves, 17 de agosto de 2017 16:41
Todas las respuestas
-
Hola que tal.
Puedes usar los siguientes scripts, que dependerán también de que versión de SQL Server estés utilizando:
1) SELECT sqlserver_start_time FROM sys.dm_os_sys_info; 2) SELECT login_time FROM sys.dm_exec_sessions WHERE session_id = 1; 3) select start_time from sys.traces where is_default = 1 4) SELECT crdate FROM sysdatabases WHERE name='tempdb' 5) SELECT create_date FROM sys.databases WHERE name = 'tempdb'
Mariano K.
-
Hola Mariano,
Gracias por la pronta respuesta, pero esos script me indica el tiempo que está arriba el servicio desde el último reinicio. Lo que busco es lo contrario es saber cuántas veces ha caído el servicio de sql server indicando fecha y duración de dichos eventos.
A lo mejor no se puede y deba hacerse con herramientas de terceros.
Saludos
JOGC
-
Hola.
Como líder de un equipo de DBA, alguna vez usamos los scripts que se relacionan en Find SQL Server Downtime Window After Reboot, asociados a un reinicio.
Después, en el servidor de Gestión & Operación, terminamos recopilando esta información para las diferentes instancias, versiones y ediciones de SQL Server.
Indícanos si es lo que estás buscando.
Saludos,
Guillermo Taylor F.
MVP Data Platform & IT Pro
Mi Blog -
Ok, tal vez entendí mal la consulta.
El reinicio que intentas ver, es de SQL Server o el reinicio a nivel de Windows?
Para ver el de SQL Server, una alternativa es cargar los Errorlogs en una tabla auxiliar y luego filtrar
Una ejemplo podría ser:
declare @table table(PK int identity primary key, LogDate datetime, process varchar(50), text varchar(max)) insert into @table exec xp_readerrorlog insert into @table exec xp_readerrorlog 1 insert into @table exec xp_readerrorlog 2 insert into @table exec xp_readerrorlog 3 insert into @table exec xp_readerrorlog 4 insert into @table exec xp_readerrorlog 5 insert into @table exec xp_readerrorlog 6 select count(*) from @table where text like 'Logging SQL Server messages in file %' and logdate> DATEADD(m, -6, getdate())
Y si por lado de Windows podrías filtrar el Event Log y buscar por ejemplo el Event ID : 17115
O consultar por PowerShell:
Get-EventLog -LogName system -After (Get-Date).AddDays(-90) -Source "EventLog" -Message "The Event log Service was started*"
Saludos.
Mariano K.
- Marcado como respuesta jogc jueves, 17 de agosto de 2017 16:41
-