longitud length len ejemplos descargar cadena sql-server sql-server-2008 sql-server-profiler

sql-server - length - sql longitud cadena



¿Cómo obtengo valores de parámetros para consultas de SQL Server en el Analizador de SQL Server? (4)

Estoy tratando de analizar un punto muerto en el perfilador de SQL Server 2008. Sé cómo encontrar las consultas sql ofensivas, pero las consultas recopiladas no incluyen valores de parámetros.

En otras palabras puedo ver algo como esto:

DELETE FROM users WHERE id = @id

Pero lo que me gustaría ver es esto:

DELETE FROM users WHERE id = 12345

Supongo que hay algunos eventos o columnas adicionales que debo recopilar en el generador de perfiles, pero no sé cuál. Actualmente estoy usando la plantilla "TSQL_LOCKS".

Cualquier consejo sería muy apreciado.

Gracias,

Adrián

Descargo de responsabilidad: he hecho una pregunta similar antes, pero creo que era demasiado específica, razón por la cual no recibí respuestas. Estoy empezando otro intento con este.


Comience una traza con los siguientes eventos que tengan todas las casillas marcadas:

SQL: BatchCompleted SQL: BatchStarting Deadlock graph Lock:Deadlock Lock:Deadlock chain

Una vez que se produce el interbloqueo, detenga la traza y luego haga clic en la clase de evento de gráfico de interbloqueo.

Esto debería darle una buena idea de lo que está mal.



El Perfilador contendrá los valores de los parámetros en los eventos http://msdn.microsoft.com/en-us/library/ms175543.aspx / RPC:Starting . Pero ya tienes respuestas diciéndote esto.

Lo que quiero agregar es que es muy poco necesario conocer los valores de tiempo de ejecución del parámetro para analizar un gráfico de interbloqueo. Primero, porque si los ''usuarios'' están involucrados en el interbloqueo, el gráfico del interbloqueo en sí mismo dará a conocer lo que @id es el conflicto, si el conflicto está en una clave. En segundo lugar, lo que es más importante, para un escenario de interbloqueo es irrelevante las claves exactas involucradas. No es como que se produce un interbloqueo porque uno elimina al usuario con el id 123, pero no ocurrirá cuando elimina el usuario 321.

Si en primer lugar decidiste preguntar en SO, creo que lo mejor sería publicar el gráfico de punto muerto real y dejar que la comunidad lo vea. Hay muchos aquí que pueden responder bastantes preguntas solo desde el XML del gráfico de interbloqueo.


Si está utilizando un procedimiento almacenado (que parece que está) o Hibernate / NHibernate, es posible que deba activar el evento de inicio de Procedimientos almacenados (SP: StmtStarting) y RPC: evento de inicio. Esto mostrará los parámetros en su propia línea después de la consulta.

Algo como:

SP: StmtStarting DELETE FROM users WHERE id = @id

RPC: Iniciando exec sp_execute 12345