Analizar el rastreo predeterminado de SQL para investigar eventos de instancia

SQL Server ejecuta un seguimiento ligero en segundo plano llamado seguimiento predeterminado que registra una amplia gama de eventos a nivel de servidor: eventos de crecimiento automático de bases de datos, creación y eliminación de objetos, errores de inicio de sesión, cambios de configuración del servidor y más. Suele ser el primer lugar donde buscar cuando se investiga un incidente que no llegó al registro de errores. Este artículo muestra cómo consultarlo de forma eficaz.

Consultar el Seguimiento Predeterminado

La ruta del archivo de seguimiento predeterminado se almacena en sys.traces. La función sys.fn_trace_gettable lee el archivo o archivos de seguimiento y devuelve filas. La combinación con sys.trace_events traduce los códigos numéricos de EventClass en nombres de eventos legibles.

DECLARE @TraceFileName NVARCHAR(512)

-- Step 1: Find the active default trace file path
SELECT @TraceFileName = path
FROM sys.traces
WHERE id = 1

-- Step 2: Query the trace, translating EventClass codes to names
SELECT
    StartTime,
    TE.name         AS EventClass,
    TextData,
    HostName,
    ApplicationName,
    LoginName,
    SPID,           -- Session ID: use for follow-up inputbuffer queries
    ObjectName
FROM sys.fn_trace_gettable(@TraceFileName, DEFAULT) TG
LEFT JOIN sys.trace_events TE ON TG.EventClass = TE.trace_event_id
WHERE TE.name IS NOT NULL
ORDER BY StartTime DESC;

Encontrar la Consulta que Desencadenó un Evento

Si necesita encontrar la instrucción T-SQL que causó un evento específico — un crecimiento automático del archivo de registro, un objeto eliminado, un inicio de sesión fallido — puede usar el SPID del seguimiento para comprobar el búfer de entrada de la sesión. Advertencias importantes: los SPID se reutilizan durante la vida útil de la instancia, y el búfer de entrada se sobreescribe con las consultas posteriores.

-- Replace [SPID] with the session ID from the trace
DBCC INPUTBUFFER([SPID]);

Tipos de Eventos Disponibles

No todos los eventos de la lista siguiente son registrados por el seguimiento predeterminado — solo un subconjunto está habilitado de forma predeterminada. Si necesita capturar eventos que no están en el seguimiento predeterminado, deberá crear un seguimiento personalizado o usar Eventos Extendidos. Use esta consulta para obtener la lista completa de IDs y nombres de eventos disponibles:

SELECT trace_event_id, name
FROM sys.trace_events
ORDER BY trace_event_id;

Los tipos de eventos más útiles en el seguimiento predeterminado incluyen: eventos de crecimiento automático (92, 93), creación/eliminación de objetos (46, 47), errores de inicio de sesión (20), cambios de configuración del servidor (22) y comandos DBCC (116).