2011-05-12 12 views
9

¿Es posible obtener el plan de ejecución de un LINQ a SQL o ADO.NET Query programáticamente para mostrar en la información de depuración? ¿Si es así, cómo?Cómo obtener el plan de ejecución utilizando LINQ to SQL/ADO.NET

+0

No sé específicamente sobre LINQ pero aquí hay una solución para obtener un plan de consulta programáticamente. Para hacer lo mismo con LINQ, parece que tendrías que modificar los archivos generados en gran medida. Debe ser factible, complejo, pero factible. http://social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/aaf5e9c9-a222-414a-baed-5c0adcc329e2 – RThomas

+1

¿Lo logró? Me gustaría ver la solución si puedes volver a publicar en algún momento. – RThomas

Respuesta

3

Claro, hay 2 cosas que necesitará.

Una implementación personalizada de DbConnection, DbCommand y DbDataReader. Puede usar eso para interceptar todo el SQL enviado a la base de datos. Básicamente lo configura para que tenga una capa que registra todo el SQL que se ejecuta. (planeamos abrir algo de código fuente en esta área en los próximos meses, así que estad atentos)

Una forma de mostrar los sentidos, que es de código abierto aquí: http://data.stackexchange.com/stackoverflow/s/345/how-unsung-am-i (ver el plan de ejecución include opción)


Otro enfoque es hacer el diagnóstico después de los hechos por mirar el caché proc. sys.dm_exec_query_stats contiene identificadores de planes en caché que puede expandir.

+0

¿Tiene un enlace para la pantalla del plan ejecutivo de fuente abierta? –

+2

@Chad seguro ... http://data.stackexchange.com/about –

+0

gracias, gran ayuda. :RE –