En esta clase lo que vamos a hacer es vamos a capturar un proceso que está demorando más de lo normal.
Entonces lo que vamos a hacer vamos a cerrar esta traza que teníamos anteriormente y vamos a crear una
nueva traza.
Cómo creamos una nueva traza desde este icono que está aquí que dice nutres o bien desde el menú fail
colocamos neutraliza.
Entonces vamos a conectarnos con el usuario ESEA
y aquí nos abre la ventana de la traza.
Entonces vamos a acceder a la solapa de selección de eventos y aquí nos nos muestra los eventos por
default que vienen seleccionados esos en los que vimos anteriormente si la columna data Application
Naeem NTX. Bernheim que es el nombre de usuario de Windows lo MINEM CPU riots Rights duration etc. Y
tenemos los eventos tenemos todos estos eventos que vamos a capturar si tenemos eventos de auditoría
eventos de conexión eventos de procedures y eventos de Transat SQL.
Cuál es la diferencia entre esto prosigue tranza que se cuele en este me va a capturar las ejecuciones
de los estor proseguir en los eventos de tranza que se cuelen me va a capturar también los de las sentencias
tranza que se cuele que se ejecuten por fuera de un actor prosiguiera entonces fíjense lo que hacemos
aquí vamos a seleccionar todos estas opciones si vamos a hacer clic en la opción Mostrar todos los eventos
entonces lo que vamos a elegir aquí va a ser el evento S.P. conflict.
Ese es el evento que me va a capturar los estor proceder que se hayan ejecutado completamente.
Entonces seleccionamos ese completa y le decimos mostrar todas las columnas entonces vamos a venir aquí
y vamos a elegir las columnas que nos interesan.
Vamos a ver aquí lo tenemos seleccionado las columnas que nos interesan en este caso son por ejemplo
duración de la duración que le llevó al proceso ejecutarse y vamos a ver qué vas a ver no hace falta
vamos a dejar la columna
exacta tenía que estar por aquí te estatalista aquí está ya con estas dos me alcanza suficiente y vamos
a darle la razón.
Si ahí está entonces qué vamos a hacer ahora.
Vamos a ir al sector de alta de pacientes y lo vamos a ejecutar pero antes vamos a vamos a parar si
la traza como la paramos con este ícono de Stop aquí arriba en el menú de la botonera.
Si con esto paramos la traza y por qué paramos la traza porque en realidad lo que quiero hacer es editar
la traza y para poder editar la traza tiene que estar detenida.
Entonces paradita la traza nos vamos a Propiedades se Feil Properties y aquí vamos a editar la traza
qué vamos a hacer.
Vamos a agregarle un filtro a la columna y a la columna a la columna.
Duración entonces aquí tenemos todas las columnas por default a la columna duración le vamos a agregar
un filtro o si le vamos a decir que nos flit de todos los procesos que sean mayores a estos milisegundos
entonces vamos a colocarle por ejemplo 1000 milisegundos.
Vamos a darle a OK y luego le damos clic en RAM y ahí sí se está ejecutando se está ejecutando con un
filtro con qué filtro con el filtro de duración mayor a 1000 milisegundos.
Todo proceso que dure más de 1000 milisegundos.
Va a ser capturado aquí entonces vamos a ejecutar el proceso de alta de pacientes y seleccionamos presionamos
F5 vamos a revisar el profe profesor y vemos que no tenemos nada en la traza porque no tenemos nada
porque el proceso ha demorado menos de 1000 milisegundos entonces bueno vamos a lo que vamos a hacer
es vamos a generar un retardo en el proceso para que nos aparezca en la traza así cómo generamos un
retardo bueno en muchas maneras en este caso lo que vamos a hacer es con un Weyl vamos a generar un
bucle y eso nos va a hacer un retardo en el sector prosiguió.
Vamos a declarar una variable de tipo bint si un entero grande y le vamos a asignar cero y vamos a hacer
un bucle Weyl
donde arrobada sea menor
menor o igual a 15000 si es menor igual a 15000.
Bueno vamos a hacer que incremente en una unidad la variable a le sumo una unidad.
Esto es para que no entre en un Wein infinito y no nos quede el proceso colgado entonces con esto lo
que hacemos es iterar aquí 15000 veces la variabilidad se va a ir incrementando hasta 15000 cuando llegue
a 15000 va a salir vamos a modificar el proceso con F5 y ahora lo vamos a ejecutar nuevamente ahí se
está ejecutando ya finalizó.
Nos vamos a hacer profiler y no tenemos nada por qué no tenemos nada porque el proceso demoró menos
de 1000 milisegundos.
Bueno vamos a generar que este proceso demore más.
Cómo generamos que demore más le agregamos un cero más.
En vez de 15000 le ponemos 150000 te damos F5
hoy ejecuto y tampoco tenemos nada en la traza.
Vamos a retardar un poco más para que sea superior a 1000 milisegundos.
Ahí le pusimos un cero más.
Presionamos F5 guardamos seleccionamos y presionamos F5 nuevamente.
Ahí está demorando ahí demora un poquito más hoy finalizó y nos vamos al profiler y aquí tenemos la
traza en el profiles.
Fíjense que ahora como teníamos el filtro por duración mayor a 1000 milisegundos bueno aquí nos ha capturado
el proceso y aquí en duración dice dos mil novecientos noventa y cinco dos 1995 milisegundos de casi
tres segundos duró este proceso.
Bien ya aprendimos cómo capturar un proceso que demora más de cierto tiempo.
Esto en qué nos va ayudar para qué lo podemos utilizar.
Bueno pues imagínense un usuario Seidel de un sistema que nosotros hemos desarrollado nos dicen cada
vez que grabó un paciente en el sistema.
Si no importa los datos que le ponga cada vez que intento grabar a un paciente en el sistema demora
mucho se demora aproximadamente 10 segundos y no sé por qué.
Entonces bueno nosotros le decimos al usuario bueno vamos a realizar una prueba entonces le solicitamos
al usuario que replique el caso es decir que inserte un usuario que graba un usuario en el sistema y
nosotros desde nuestro lado lo que hacemos es monitorear con.
Con esta herramienta o con el SQL Server profiler monitorear el colocándoles el filtro la duración o
no colocándole nada si simplemente en vez de colocarle un filtro por la duración le colocamos un filtro
por el tex data es decir por este campo aquí le podemos colocar por el campo texto le podemos colocar
un Lykke si encerrado entre vamos a pararlo si lo vemos bien.
Vamos a probar propiedades Eben Selection aquí le colocamos con filtros y en el campo Tex data aquí
en Lykke y colocamos por ciento por ciento si alta acidente por ejemplo al paciente.
Entonces aquí ya va a filtrar todos los procesos que se están ejecutando con ese nombre de texto.
Entonces vamos a presionar F5 y vamos a volver al SQL profiler y aquí aquí está fíjense que lo capturó
también.
Entonces lo que hacemos con esto es obtener obtener esta llamada tan valiosa no porque está llamada
tan valiosa con los parámetros tal cual los están viendo el usuario no la bandola no tenemos forma de
obtenerla si no es con el SQL Server Profiler.
Por eso consideramos que es una herramienta muy importante para hacer un debate de un proceso o de los
sistemas.
Por qué.
Porque esto es lo que nos permite visualizar cómo está insertando en el usuario cómo está ejecutando
ese proceso y qué parámetros les está pasando entonces lo que hacemos con esto es reproducirlo y ver
dónde está el problema.
Entonces cuando vamos a analizar el proceso para ver el problema bueno en este caso nosotros lo hemos
forzado con un Weyl con una numeración alta para que se demore más de la cuenta y lo podamos atrapar
en el profile.
Pero lo más probablemente es que en el proceso tengamos alguna sentencia Cele que no esté optimizada
que esté buscando por por no por todos los campos prima Ariki.
Puede ser que tengamos una consulta muy grande con muchos Villains y no esté optimizada.
Entonces vamos a tener que encontrar dónde está el problema y una vez que lo solucionemos bueno el proceso
ya va a demorar mucho menos.
Entonces lo que tenemos que tener en cuenta que el SQL Server Profiler es una herramienta indispensable
para resolver los problemas que vamos a tener cuando nuestra aplicación esté en producción se esté utilizando
ya del usuario final lo que vamos a ver en la siguiente clase cómo definir filtros personalizados para
monitoreo y vamos a aprender un poquito la interfase aquí todas las opciones que tiene disponible.