una tutorial traza studio management hacer como sql-server database automation sqlprofiler

sql-server - traza - sql server profiler tutorial



¿Es posible automatizar el perfilador de SQL Server 2008? (4)

Hubo una publicación sobre trucos SQL útiles. Aquí iba a mencionar la herramienta SQL Server Profiler , ya que me ayudó a escribir menos SQL. Escribiría SQL que interrogaría, comprendería o adivinaría la lógica de negocio de las bases de datos.

Profiler es muy útil, especialmente cuando el código de la aplicación tiene SQL incorporado y desea resolver lo que está haciendo, en el menor tiempo posible. (También es posible que no sepa qué versión del código fuente se utiliza en el entorno de la aplicación, o incluso peor, donde no hay un código fuente disponible).

Me preguntaba si el generador de perfiles tiene una API en la que podría conectarme.

Esto sería muy útil cuando queremos verificar rápidamente cómo se llama SQL, dentro del sistema, estableciendo una variable / indicador de entorno (PROFILER_ON = TRUE, por ejemplo). Luego, el sistema puede iniciar el perfilador de SQL, configurando varias propiedades de rastreo y luego escribiendo en un registro o tabla, lo que podría ser visto por el equipo de soporte.

Quiero escribir un componente para activar Profiler y supervisar el entorno de producción (en tiempos de inactividad), así que no puedo alterar realmente la base de código (tanto el código de la aplicación como los procesos almacenados de SQL).



Lo que puede hacer es configurar su traza "perfecta" y guiarla como SQL. A continuación, ejecútelo para ejecutar el seguimiento y guardar el resultado en un archivo o tabla.

Ahora, podría envolver el SQL para crear el rastreo en otro proceso almacenado que pueda ejecutarse a través del Agente SQL / umbral inactivo, pero use fn_trace_getinfo para ver si ya se está ejecutando.

No puede automatizarlo en SSMS ni usar una variable de entorno: el código, el trabajo, las alertas, etc., todos deben existir en el servidor.

Puede colocar el rastreo con guiones en un archivo por lotes y ejecutarlo a través de osql / sqlcmd, pero debe invocarse manualmente.

No hay API de perfil: todo lo que hace es ejecutar procesos almacenados, al igual que cualquier solución deberá hacerlo.

¿Por qué no se puede agregar el código SQL de supervisión que es independiente del código de la aplicación?

No puedes usar SMO tampoco ... solo para leer rastros

Editar: un rastreo siempre requiere que SQL se ejecute en el servidor


Puede utilizar los objetos de espacio de nombres Microsoft.SqlServer.Management.Trace ; proporcionan una API contra la misma funcionalidad que ofrece SQL Profiler. Esta es una alternativa contra el scripting de su propio sql contra la base de datos. Sin embargo, al igual que SQL Profiler, lo que estos objetos hacen bajo las cubiertas es ejecutar los procesos almacenados de Rastreo de SQL (o sus variaciones) para crear, ejecutar y gestionar los rastreos.

Si usa 1 instancia de generador de perfiles para crear otro perfil (o usa un generador de perfiles para crear un perfil eliminando los criterios de filtro "NO ME GUSTA" Analizador de SQL ... "del rastro (creo que es un filtro Nombre de aplicación), verá exactamente lo que hace el perfilador es lo mismo que haría en SQL o lo que los objetos SMO harán de una API.


GBN lo tiene aquí mismo; Todo lo que hace SQL Profiler es ejecutar procedimientos almacenados en su SQL Server: estos procedimientos inician, configuran y detienen los rastros. Lo que eso significa es que en lugar de tratar de automatizar el generador de perfiles, solo ejecuta los mismos procedimientos de seguimiento y obtendrá el mismo comportamiento.

Para iniciar y detener seguimientos automáticamente, puede usar el Analizador de SQL para crear una secuencia de comandos; ese script se puede ejecutar desde un archivo por lotes. Entonces harías algo como esto;

  • Open SQL Profiler
  • Configure su traza deseada en el perfil de rastreo; seleccione los eventos que le interesan y el archivo que desea rastrear.
  • Comience la traza, luego deténgalo.
  • Ir a Archivo | Exportar | Script Trace Definition ... y guarde un archivo .sql

Este archivo .sql contiene código que puede ejecutar; si lo abres, verás este tipo de código en la parte superior;

exec @rc = sp_trace_create @TraceID output, 0, N''InsertFileNameHere'', @maxfilesize, NULL if (@rc != 0) goto error -- Client side File and Table cannot be scripted -- Set the events declare @on bit set @on = 1 exec sp_trace_setevent @TraceID, 14, 1, @on exec sp_trace_setevent @TraceID, 14, 9, @on exec sp_trace_setevent @TraceID, 14, 6, @on exec sp_trace_setevent @TraceID, 14, 10, @on exec sp_trace_setevent @TraceID, 14, 14, @on exec sp_trace_setevent @TraceID, 14, 11, @on This creates a trace that writes to a file.

Esto crea un seguimiento y adjunta eventos a la traza.

Entonces, para comenzar su rastreo, puede programar la ejecución de este archivo. El archivo por lotes se verá algo así como;

osql -E -S MACHINE/INSTANCE -i "c:/my-trace-definition.sql"