trc que open tabular sql-server-profiler output-formatting

tabular - que - Cómo volcar una salida de SQL Server Profiler 2008 a un archivo similar a CSV



que es sql server profiler (3)

Si lo guarda en una tabla de seguimiento; puede obtener los datos en una tabla en SQL Server que le permitirá manipularlos al contenido de su corazón; incluyendo el vertido a CSV si todavía se requiere. La columna de datos de texto está completamente representada en la tabla.

Si elige guardar-> Tabla de seguimiento. Se le pedirá el nombre de la tabla y la base de datos. Digamos que lo llamas ProfilerTemp en la base de datos.

Ingrese esos; puedes consultar la tabla usando

select * from scratch.dbo.ProfilerTemp

Verá todo en la ventana de seguimiento en la tabla. Si no se filtró hacia abajo para solo los procedimientos almacenados y solo los desea en la selección

Select textdata from [Scratch].[dbo].[ProfilerTemp] where eventclass = 10 And textdata like ''exec %'' and not cast(TextData as nvarchar(max))= ''exec sp_reset_connection''

Esto filtra las llamadas que no son de procedimiento y cualquier restablecimiento de conexión que pueda tener. Es posible que deba agregar más filtros según lo que esté intentando hacer.

Si quieres esto como un archivo de texto; elegir consulta - resultados para archivar y ejecutar la consulta. Esto solicitará el nombre del archivo y le dará el texto del parámetro como un archivo de texto.

Estoy depurando los procedimientos almacenados, y en este momento estoy interesado en qué se ejecutó en qué orden y qué parámetros en lugar de qué tan rápido corrían las cosas y en qué se podía colar y causar una desaceleración.

Entonces, capturé un par de minutos por valor de rastreo. El problema es que hay demasiadas cosas y necesito reducirlas. Si hago File -> Save As , obtengo las siguientes opciones:

  • Archivo de seguimiento ...
  • Plantilla de trazado ...
  • Tabla de seguimiento ...
  • Rastrear archivo XML ...
  • Rastrear archivo XML para reproducir ...

Ahora, estas son opciones decentes, pero lo que realmente quiero es un formato tabular, como CSV. Creo que las comas en SP trace probablemente arruinarían el formato CSV. Con mucho gusto usaría algo más, como || como delimitador

Una vez que tengo el formato tabular, puedo filtrarlo usando grep , etc. y luego procesarlo fácilmente con Python para ver exactamente lo que quiero. Comencé a analizar el archivo XML con un script, pero me encontré gastando demasiado tiempo en el XML archivo XML traza (no he usado la biblioteca lxml antes).

Entonces ... ¿hay una manera más fácil? ¿Puedo al menos copiarlo a Excel de alguna manera?


TL; DR: copie en un editor de texto, prepárelo manualmente y luego péguelo en Excel.

Tengo muy poca experiencia con SQL Server, así que no sé si esto funcionará para otros, pero lo hizo para mí:

  • Seleccione las filas deseadas en el Analizador de SQL Server. Ctrl + C para copiar.
  • Pegue en un editor de texto sin formato que pueda buscar y reemplazar expresiones regulares (por ejemplo, Notepad ++ en mi caso).
  • Regex replace (N''('''''')?[^'']*?)/r/n(([^'']*?)/r/n)?(([^'']*?)/r/n)? con $1 $4 $6
    • Esto borra todas las líneas nuevas de los scripts SQL.
    • Siga haciendo "Reemplazar todo" hasta que no se encuentren más resultados.
  • Regex replace (Batch(Starting|Completed)[^//]*?)/r/n con $1
    • Esto borra las nuevas líneas de más cosas de SQL. De nuevo, sigue reemplazando hasta que no haya resultados.
  • Regex replace /r/nset con set
    • Esto borra todas las líneas nuevas de los scripts de inicio de sesión de auditoría
  • Es posible que tenga que hacer más reemplazos, se entiende la idea.
  • Pegue en Excel usando el "Asistente de importación de texto". Use pestañas como delimitador.
  • Ordene por la primera columna y elimine las filas que no sean útiles (por ejemplo, "Inicio de sesión de auditoría" en mi caso). Es posible que también deba mover manualmente algunos datos a través de una columna (por ejemplo, datos de "EntityFramework" en mi caso)

Tenía un montón de archivos de rastreo del Analizador de SQL que contenían eventos de rastreo de punto muerto que necesitaba analizar. Terminé convirtiéndolos en un único archivo XML usando el Analizador de SQL, y luego leyendo ese archivo XML con Python, usando las bibliotecas lxml y pandas .

A medida que los datos terminan en un Dataframe pandas, puede convertirlo fácilmente a CSV, Excel, ... o analizarlo en Python (si está familiarizado con pandas).

La secuencia de comandos está disponible como una gist . Está escrito específicamente para archivos de rastreo de punto muerto, ya que no tenía otros rastros disponibles. En otras palabras, puede necesitar modificarlo un poco para cumplir su propósito. No se preocupe si el archivo XML es grande (varios 100 MB); el script usa iterparse() , lo que significa que el archivo no se leerá en la memoria y solo se capturarán los elementos relevantes. Por ejemplo, un archivo xdl de ca. 220 MB se analizaron en menos de 13 segundos.

Guardar los archivos de rastreo como XML (extensión xdl ):

Asegúrese de seleccionar la opción de todos los eventos en un solo archivo .