utilizar tuning engine como advisor sql-server entity-framework

engine - Entity Framework y SQL Server Tuning Advisor



como utilizar database engine tuning advisor (4)

¿Cómo uso el SQL Server Tuning Advisor para producir recomendaciones basadas en consultas de Entity Framework? Entity Framework utiliza sp_executesql ''query'' en lugar de ejecutar la consulta y Tuning Advisor no reconoce estas consultas. Podría obtener el texto de la consulta manualmente, pero esto solo funcionará para casos muy simples. ¿Cómo lo hago de forma automática?

ACTUALIZAR

¿Ayudaría si guardo la información del perfil en una tabla y luego ejecuto alguna aplicación que elimine "sp_executesql" y solo guarde el texto de consulta y use estos nuevos datos para ejecutar Tuning Advisor?


Jeff Walker me señaló en la dirección correcta, pero su respuesta fue incompleta (aunque estoy seguro de que sabía la respuesta completa y simplemente no la explicó por completo)

En la Selección de Evento para Sql Server Profiler:

Elimine el registro de RPC: completado bajo procedimientos almacenados: este es el elemento que funciona mal con Entity Framework

Expanda a todos los eventos y AGREGUE SP: StmtCompleted bajo el procedimiento almacenado para obtener las consultas en la traza.

Parece funcionar para mi.

Personas de Microsoft Entity Framework (y personas de perfiles) Esto es realmente escaso. Solía ​​trabajar.


Sé que este tema es un poco frío. Pero como estaba teniendo el mismo problema y encontré una mejor solución:

Cambiar los eventos capturados es una forma de hacerlo, pero ya existe una "plantilla", que registra todo lo que necesita el asesor de optimización del servidor SQL.

Si selecciona la "sintonización" de la plantilla, eliminará y agregará de manera efectiva la captura de eventos citada por Doug, pero también otra.

Puedes encontrar más sobre la plantilla here

Para activar esta plantilla, en las ventanas "Nuevo rastreo", seleccione la plantilla correspondiente (no la creé, ya estaba allí):

Una vez que lo hizo, puede verificar la selección del evento, ya tiene lo que se necesita:

Además, deshabilité el RPCC Completado, ya que no tengo ningún procedimiento almacenado

Espero que ayude a algunas personas;)


Use el Analizador de SQL para capturar una sesión completa de consultas. Cuando haya terminado, puede guardar los resultados del generador de perfiles y ejecutar todo a través de SQL Server Tuning Advisor. En mi experiencia, esto proporciona resultados mucho mejores que el ajuste basado en consultas individuales y de muchas maneras es más fácil y más realista, ya que puede usar el generador de perfiles para capturar consultas del uso de aplicaciones reales.

EDITAR:

Gracias por llamar más la atención al problema específico que está preguntando. No me di cuenta de que estabas diciendo que Tuning Advisor no entiende sp_executesql porque eso simplemente no es cierto. Puede ejecutar tantas consultas como desee a través de sp_executesql y capturarlas en un perfil y luego ejecutar ese perfil a través de Tuning Advisor y le dará recomendaciones.

Para estar seguro, acabo de hacerlo con MS SQL Server 2008 R2. Creé una tabla sin índices, realicé un montón de consultas a través de sp_executesql , las capturé en el Analizador de SQL y luego ejecuté la traza resultante en Tuning Advisor. Tuning Advisor dio recomendaciones apropiadas para las consultas incrustadas dentro de sp_executesql .

La versión exacta de Database Engine Tuning Advisor es 10.50.1600.1, que se ejecuta contra Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (X64) 22 de abril de 2011 19:23:43 Copyright (c) Microsoft Corporation Developer Edition (64 bits) ) en Windows NT 6.1 (compilación 7601: Service Pack 1).


Parece que el problema es este. Si crea una traza utilizando el Analizador de SQL desde la plantilla "Ajuste", no incluye los eventos correctos. El Asistente para la optimización de motor de base de datos no comprende las declaraciones sp_executsql de los eventos completados por lotes. Se informa en el registro de ajuste "El evento no hace referencia a ninguna tabla" con un ID de categoría de "S008".

Al capturar la traza, debe agregar el evento "SQL: StmtCompleted" en la sección TSQL también.