none
Registro de caidas del motor SQL Server RRS feed

  • 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

    jueves, 17 de agosto de 2017 14:15

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
    jueves, 17 de agosto de 2017 15:57

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:

    https://gallery.technet.microsoft.com/scriptcenter/Script-to-check-when-was-5d0fe4e8/view/Discussions#content

    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' 

    Saludos.


    Mariano K.

    jueves, 17 de agosto de 2017 15:11
  • 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

    jueves, 17 de agosto de 2017 15:26
  • 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

    jueves, 17 de agosto de 2017 15:53
  • 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
    jueves, 17 de agosto de 2017 15:57
  • Muchas Gracias Mariano y Guillermo, ambas respuesta me sirvieron.

    Saludos

    JOGC

    jueves, 17 de agosto de 2017 16:42