Pregunta

Soy la depuración de procedimientos almacenados, y en este momento estoy interesado en lo que corrió en qué orden y qué parámetros, que a diferencia de cómo funcionaron las cosas rápido y lo que pueden colarse en el medio y provocar una desaceleración.

Por lo tanto, capturó un par de minutos el valor de huella. El problema es que hay demasiadas cosas, y tengo que reducirlo. Si hago File -> Save As, consigo las siguientes opciones:

  • del archivo de rastreo ...
  • curva de plantilla ...
  • Tabla de traza ...
  • Rastreo de archivo XML ...
  • del archivo de rastreo de XML para Replay ...

Ahora, estas son opciones decentes, pero lo que realmente quiero es un formato tabular, tales como CSV. Creo que las comas en rastro SP probablemente sería estropear el formato CSV. Me volvería a usar otra cosa, como por ejemplo || como delimitador.

Una vez que tienen el formato tabular, que puede filtrar abajo que usa grep, etc y luego procesar fácilmente con Python para ver las cosas exactas que quiero. Empecé a analizar el archivo XML con un guión, pero me encontré pasar demasiado tiempo en el formato de archivo de seguimiento XML (no han utilizado la biblioteca lxml antes).

Así que ... ¿hay una manera más fácil? Al menos puedo copiarlo en Excel alguna manera?

¿Fue útil?

Solución

Si lo guarda en una tabla de seguimiento; puede obtener los datos de una tabla en SQL Server que le permitirá manipular a su contenido de los corazones; incluyendo vertido hacia fuera a CSV si sigue siendo necesario. La columna de datos de texto está totalmente representado en la tabla.


Si elige Guardar ? Tabla de traza . Se le pedirá el nombre de la tabla y la base de datos. Digamos que usted le llama ProfilerTemp en el cero la base de datos.

Introduzca los; se puede consultar la tabla utilizando

select * from scratch.dbo.ProfilerTemp

Se va a ver todo en la ventana de traza en la tabla. Si usted didnt filtro hacia abajo a los procedimientos almacenados y simplemente quiere sólo en el selecto

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 improductivas, procedimiento y cualquier restablece la conexión que pueda tener. Es posible que necesite añadir más filtros dependiendo de lo que está tratando de hacer.

Si desea que esta como un archivo de texto; elija Consulta - Resultados a archivo y ejecutar la consulta. Esto le pedirá el nombre del archivo y le dará el texto parámetro como un archivo de texto.

Otros consejos

TL; DR:. Copiar en un editor de texto, manual de preparación, y luego pegar en Excel

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

  • Seleccionar desea filas en SQL Server. Ctrl + C para copiar.
  • pegar en un editor de texto plano que puede hacer búsqueda de expresiones regulares y reemplazar (por ejemplo Notepad ++ en mi caso).
  • Regex reemplazar (N'(''')?[^']*?)\r\n(([^']*?)\r\n)?(([^']*?)\r\n)? con $1 $4 $6
    • Esto borra todas las nuevas líneas de secuencias de comandos SQL.
    • Siga haciendo "Reemplazar todo" hasta que se encuentren más resultados No.
  • Regex reemplazar (Batch(Starting|Completed)[^\\]*?)\r\n con $1
    • Esto borra las nuevas líneas de más cosas de SQL. Una vez más, mantener la sustitución de hasta hay resultados.
  • Regex reemplazar \r\nset con set
    • Esto borra todas las nuevas líneas de Auditoría guiones de entrada
  • Es posible que tenga que hacer más sustitución, se entiende la idea.
  • Pegar en Excel utilizando el "Asistente para importar texto." Use las pestañas como el deliminator.
  • Ordenar por la primera columna y eliminar cualquier filas inútiles (por ejemplo "Audit Iniciar sesión" en mi caso). También es posible que tenga que mover manualmente algunos datos sobre una columna (por ejemplo, "ADO.NET Entity Framework" de datos en mi caso)

Yo tenía un montón de archivos de traza del Analizador SQL que contienen eventos de seguimiento estancamiento que necesitaba para analizar. Terminé convertirlos en un solo archivo XML utilizando SQL, y después de leer ese archivo XML con Python, utilizando las bibliotecas lxml y pandas.

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

El guión está disponible como un GIST . Ha escrito específicamente para los archivos de rastreo punto muerto, ya que no tenía ningún otro rastro disponibles. En otras palabras, es posible que tenga que ajustar un poco para servir a su propósito. No se preocupe si el archivo XML es grande (varios 100 MBs); los usos de guión iterparse() , lo que significa que el archivo no será leído en la memoria y se capturarán sólo los elementos relevantes. P.ej. un archivo de xdl ca. 220MB se ha analizado en menos de 13 segundos.

Almacenamiento de los archivos de seguimiento como (extensión xdl) XML:

Extracto

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

Guardar

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top