2009-09-14 14 views
7

Hola, me preguntaba si existe la posibilidad de permitir el seguimiento/diagnóstico en una SQLConnection a través del archivo app.config de manera similar a como lo hace con WCF cuando necesita soporte de rastreo (como se muestra a continuación).Rastreo y diagnóstico para System.Data.SQLConnection

<system.diagnostics> 
    <switches> 
     <add name="DataMessagesSwitch" value="0" /> 
     <add name="TraceLevelSwitch" value="0" /> 
    </switches> 
</system.diagnostics> 

Estoy tratando de interceptar y registrar las peticiones SQL desde dentro de mi aplicación (sin necesidad de crear una cuña IDbConnection durante un SqlConnection para capturar las solicitudes de medida que se ejecutan)

¿Alguna idea?

+1

Cantidad absolutamente insana de trabajo para conseguir el seguimiento :(El equipo de ADO.NET debe haberse olvidado de 'System.Diagnostics'. –

+0

Quiero hacerte la misma pregunta. ¿Has encontrado la respuesta? –

Respuesta

2
+1

Hola, yo revisé ese artículo, requiere un poco de picar, hacer entradas de registro ect, usar WMI, configurar filtros para asegurarme de que solo rastreas tu única aplicación. Esperaba que haya algo así como la opción de WCF mencionada anteriormente que podría ser cambiada en los archivos de configuración, aparentemente no! – mrwayne

1

Enfoque estándar Microsoft sugiere que es realmente complicado y mal diseñado. Aquí está la solución temporal: Data Access Tracing in .NET (Universal approach). La idea es envolver encapsulado (proxy) todos los servicios de acceso Db (DbConnection, DbCommand, ...) mediante un rastreador. Esto funciona con cualquier proveedor de DbConnection y también con Entity Framework.

+0

"realmente complicado" es decirlo suavemente. De ninguna manera voy a tratar de poner eso en producción para llegar al fondo de un problema apremiante. Parece que es (genial y general) la solución solo rastrea en el nivel 'DbConnection' /' DbCommand', por lo que se acerca a las conexiones de red reales (que se agrupan y diferente de las instancias de 'DbConnection') supongo que fuera del alcance? –

+0

No estoy seguro de qué quiere decir con conexiones de red reales? rastreando la comunicación de red con el servidor Db? Para eso, creo que puede usar el rastreo de red estándar: https://msdn.microsoft.com/en-us/library/ty48b824(v=vs.110).aspx –

+0

Sí, las conexiones de red, para rastrear las desconexiones. Acabo de probar el seguimiento de red, fue en vano. Lamentablemente, nada de lo que hace SqlConnection se registra, pero la doble comprobación al usar directamente sockets mostró que el seguimiento se configuró correctamente. –

Cuestiones relacionadas