SQL Server Profiler: ¿cómo filtrar el seguimiento para mostrar solo eventos de una base de datos?

381

¿Cómo limito el rastreo de SQL Server Profiler a una base de datos específica? No puedo ver cómo filtrar el seguimiento para no ver eventos para todas las bases de datos en la instancia a la que me conecto.

Preocupado por TunbridgeWells
fuente

Respuestas:

574

En Propiedades de rastreo> pestaña Selección de eventos> seleccione mostrar todas las columnas. Ahora bajo filtros de columna, debería ver el nombre de la base de datos. Ingrese el nombre de la base de datos para la sección Me gusta y debería ver trazas solo para esa base de datos.

Gulzar Nazim
fuente
8
No sé si este es un problema común, pero cuando ejecuto el generador de perfiles, el nombre de la base de datos está en blanco para muchos de los valores que trazo. Tengo que usar la columna DatabaseID y encontrar los valores correctos para ingresar consultando la tabla sysdatabases en la base de datos maestra
Jim Birchall
34
Para encontrar el DatabaseID: SELECT [nombre], [dbid] FROM [maestro]. [Dbo]. [Sysdatabases] ORDER BY [nombre]
Simon
1
También depende de la plantilla que seleccione, si la hay. +1
beaudetious
2
Y tienes que hacerlo beforecomenzando la traza. Si lo haces después, ¡el campo no será editable!
DarkWalker
2
No olvide detener el rastreo o comenzar antes de ejecutarlo.
Fery
42

En SQL 2005, primero debe mostrar la columna Nombre de la base de datos en su rastreo. Lo más fácil es elegir la plantilla Tuning, que ya tiene esa columna agregada.

Suponiendo que tiene seleccionada la plantilla de ajuste, para filtrar:

  • Haga clic en la pestaña "Selección de eventos"
  • Haga clic en el botón "Filtros de columna"
  • Marcar Mostrar todas las columnas (lado derecho hacia abajo)
  • Seleccione "DatabaseName", haga clic en el signo más junto a Me gusta en el panel de la derecha y escriba el nombre de su base de datos.

Siempre guardo el seguimiento en una tabla también para poder hacer consultas ME GUSTA en los datos de seguimiento después del hecho.

Precio de Todd
fuente
8

Por experimento pude observar esto:

Cuando se utiliza SQL Profiler 2005 o SQL Profiler 2000 con la base de datos que reside en SQLServer 2000, el problema mencionado persiste, pero cuando se utiliza SQL Profiler 2005 con la base de datos SQLServer 2005, ¡funciona perfecto!

En resumen, el problema parece ser frecuente en SQLServer 2000 y rectificado en SQLServer 2005.

La solución para el problema cuando se trata con SQLServer 2000 es (como explica wearejimbo)

  1. Identifique el DatabaseID de la base de datos que desea filtrar consultando la tabla sysdatabases como se muestra a continuación

    SELECT * 
    FROM master..sysdatabases 
    WHERE name like '%your_db_name%'   -- Remove this line to see all databases
    ORDER BY dbid
  2. Utilice el filtro de ID de base de datos (en lugar de Nombre de base de datos) en la ventana Nuevo seguimiento de SQL Profiler 2000

Praveen
fuente
4

En las propiedades de seguimiento, haga clic en la pestaña Selección de eventos en la parte superior junto a General . Luego haga clic en Filtros de columna ... en la parte inferior derecha. Luego puede seleccionar qué filtrar, como TextDatao DatabaseName.

Expanda el nodo Me gusta e ingrese su filtro con los %signos de porcentaje como %MyDatabaseName%o %TextDataToFilter%. Sin los %%signos, el filtro no funcionará.

Además, asegúrese de marcar la casilla de verificación Excluir filas que no contienen valores ' Si no puede encontrar el campo que desea filtrar, como DatabaseNameir a la pestaña General y cambiar su Plantilla , una en blanco debe contener todos los campos.

6dev6il6
fuente
1

Cree una nueva plantilla y verifique DBname. Use esa plantilla para su archivo de rastreo.


fuente