2009-09-21 19 views
8

estoy tratando de solucionar this problem utilizando el Analizador de SQL (SQL 2008)¿Hay alguna forma de filtrar un rastreo de SQL Profiler?

Después de unos días que ejecutan el rastro en la producción, por último volvió a ocurrir el error, y ahora estoy tratando de diagnosticar la causa. El problema es que la traza tiene 400k filas, 99.9% de las cuales provienen de "Servidor de informes", que ni siquiera sé por qué está activado, pero parece que está haciendo ping al SQL Server cada segundo ...

¿Hay alguna forma de filtrar algunos registros del rastreo para poder ver el resto?
¿Puedo hacer esto con el archivo .trc actual, o tendré que volver a ejecutar el rastreo?
¿Hay otras aplicaciones para mirar el archivo .trc que puede proporcionarme esta funcionalidad?

Respuesta

18

Puede cargar un rastreo capturado en el Analizador de SQL Server: Viewing and Analyzing Traces with SQL Server Profiler.

O puede cargarlo en una herramienta como ClearTrace (versión gratuita) para realizar análisis de carga de trabajo.

Puede cargar en una tabla de SQL Server, así:

SELECT * INTO TraceTable 
FROM ::fn_trace_gettable('C:\location of your trace output.trc', default) 

continuación, puede ejecutar una consulta para agregar los datos como éste:

SELECT 
    COUNT(*) AS TotalExecutions,  
    EventClass, 
    CAST(TextData as nvarchar(2000)) , 
    SUM(Duration) AS DurationTotal , 
    SUM(CPU) AS CPUTotal , 
    SUM(Reads) AS ReadsTotal , 
    SUM(Writes) AS WritesTotal 
FROM 
    TraceTable 
GROUP BY 
    EventClass, 
    CAST(TextData as nvarchar(2000)) 
ORDER BY 
    ReadsTotal DESC 

Véase también: MS SQL Server 2008 - How Can I Log and Find the Most Expensive Queries?

También es común configurar filtros para la traza capturada antes de iniciarla. Por ejemplo, un filtro comúnmente usado es limitar a solo eventos que requieren más de un cierto número de lecturas, digamos 5000.

+0

hey Mitch, donde obtuviste funciones como esta. ¿me puede sugerir la fuente para esta y otras funciones similares? –

+0

varias fuentes, incluido el primer enlace anterior, blogs y libros. Muchos de los blogs de MVPs de SQL Server contienen información útil. –

3

Cargue el .trc localmente y luego Use guarde en la base de datos en db local y luego realice una consulta al contenido de su corazón.

3

Estas sugerencias son geniales para una traza existente, si desea filtrar la traza a medida que ocurre, puede configurar filtros de eventos en el seguimiento antes de iniciarlo.

El filtro más útil en mi experiencia es nombre de la aplicación - para hacer esto usted tiene que asegurarse de que cada cadena de conexión utilizada para conectarse a la base de datos tiene un valor apropiado nombre de la aplicación en el mismo, es decir:

" .. .server = MYDB1; autenticación integrada = SSPI; Nombre de la aplicación = MyPortal; ..."

luego, en las propiedades de rastreo para una nueva traza, seleccione la ficha Selección de eventos, a continuación, haga clic en la columna Filtros ...

Seleccione el filtro ApplicationName y agregue valores a LIKE para incluir solo las conexiones que ha indicado, es decir, utilizando MyPortal en el campo LIKE solo incluirá eventos para conexiones que tengan ese nombre de aplicación.

Esto le impedirá recopilar toda la información cruda que genera Reporting Services, por ejemplo, y hacer un análisis posterior mucho más rápido.

También hay muchos otros filtros disponibles, por lo que si sabe lo que está buscando, como la ejecución larga (Duración) o IO grande (Lectura, Escritura), puede filtrar también.

2

Desde SQL Server 2005, puede filtrar un contenido de archivo .trc, directamente desde el Analizador de SQL; sin importarlo a una tabla SQL. Sólo tiene que seguir el procedimiento sugerido aquí:

http://msdn.microsoft.com/en-us/library/ms189247(v=sql.90).aspx

Un indicio adicional: se puede usar '%' como comodín filtro. Por ejemplo, si quiere filtrar por HOSTNAME como SRV, entonces puede usar SRV%.

Cuestiones relacionadas