Rastreo predeterminado habilitado pero no activo

9

Cuando consulto la configuración de la traza predeterminada, muestra habilitado:

exec sp_configure 'default trace enabled';
-->
name                    minimum  maximum  config_value  run_value
default trace enabled         0        1             1          1

Pero cuando consulto sys.tracesla ruta, devuelve un conjunto de filas vacío:

select * from sys.traces;

¿Qué podría explicar la ausencia de la traza habilitada?

Andomar
fuente
@AaronBertrand: select * from sys.tracesdevuelve un conjunto de filas vacío
Andomar
También he oído hablar de casos en los que la traza muere porque la unidad en la que estaba escribiendo se llenó (y eso no afectará necesariamente a SQL Server a menos que sea de una manera notable / correlacionable).
Aaron Bertrand
@AaronBertrand: El administrador dice que la unidad se llenó hace unos días. ¿Un reinicio del servicio de SQL Server también reiniciaría el rastreo predeterminado?
Andomar
Sin embargo, el seguimiento que se detuvo también fue el primero, pero lo EXEC sp_trace_setstatus @traceid = 1, @status = 0devuelve, The default trace cannot be stopped or modified.así que no estoy seguro de que se pueda detener a menos que haya un error que impida que se ejecute. ¿Hay algo en los registros de errores?
Martin Smith
@Martin es cierto, no puede detener el seguimiento predeterminado manualmente.
Aaron Bertrand

Respuestas:

13

Yo diría que hay una fuerte correlación entre su evento fuera del espacio y la traza que falta. Tenga en cuenta que la sp_configureopción simplemente le dice que el rastreo predeterminado está habilitado, pero eso no significa que se esté ejecutando o que incluso exista. Tenga en cuenta que sys.tracesno es una tabla sino una vista:

create view sys.traces as select * from OpenRowset(TABLE SYSTRACES)

¿Qué TABLE SYSTRACESproporciona el conjunto de filas? ¿Como funciona? ¿Cómo se filtran sus resultados? Tu invitado es tan bueno como el mío. Es posible que la traza todavía esté allí, pero en un estado que evita que quede expuesta por esta vista. Y puede estar en un estado que todavía impide que se inicie incluso después de reiniciar el servicio.

Primero, asegúrese de que la ubicación de la traza predeterminada tenga suficiente espacio, la cuenta de servicio de SQL Server todavía tiene los permisos adecuados para escribir en ella, no está sujeto a ninguna cuota de espacio, etc. Puede obtener la ubicación desde el registro:

HKEY_LOCAL_MACHINE\Software\Microsoft\...YourInstance...\Setup\SQLDataRoot\

Una vez que esté seguro de que SQL Server debería poder escribir en esta carpeta, puede deshabilitar y volver a habilitar el rastreo predeterminado:

EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXEC sp_configure 'default trace enabled', 0;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXEC sp_configure 'default trace enabled', 1;
GO
RECONFIGURE WITH OVERRIDE;

No debería necesitar reiniciar el servicio de SQL Server en este punto, pero puede ser una patada final en los pantalones de SQL Server si aún no ve una fila sys.traces. Tenga en cuenta que trace_idno se garantiza que lo que obtenga se quede en 1.

Aaron Bertrand
fuente
Gracias, deshabilitar y volver a habilitar funcionó. No lo usé with override. Los registros de errores mostraron un evento fuera del espacio.
Andomar
1
@Andomar lo siento, with overridees costumbre.
Aaron Bertrand
1

Tuve el mismo problema después de que se llenó el disco. El rastreo predeterminado estaba habilitado pero no se estaba ejecutando. Deshabilitarlo y volver a habilitarlo funcionó de inmediato sin detener los servicios.

jclabonde
fuente