microsoft for ejemplos sql ms-access profiler showplan.out
http://www.mosstools.de/download/showplan_v9.zip

for - sql migration access



¿Es posible monitorear y registrar las consultas reales realizadas en un MDB de Access? (5)

La respuesta depende de la tecnología utilizada por el cliente que usa MDB. Hay diferentes configuraciones de seguimiento que puede configurar en HKEY_LOCAL_MACHINE / Software / Microsoft / Jet / 4.0 / Engines / ODBC http://office.microsoft.com/en-us/access/HP010321641033.aspx . Si usa OLEDB para acceder a MDB desde SQL Server, puede usar DBCC TRACEON (consulte http://msdn.microsoft.com/en-us/library/ms187329.aspx ). Puedo continuar, pero antes de todo debes definir exactamente qué interfaz utilizas para acceder a MDB.

MDB es un archivo sin componentes activos, por lo que el seguimiento puede no ser el propio MDB, sino solo la interfaz DB.

ACTUALIZADO : Debido a que utilice el uso de DAO (motor Jet) y OLE DB de VB, le recomiendo que cree una clave de registro JETSHOWPLAN con el valor "ENCENDIDO" en HKEY_LOCAL_MACHINE / SOFTWARE / MICROSOFT / JET / 4.0 / Engines / Debug (Debug subclave que debe crear) . Esta clave se describe, por ejemplo, en https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5064388.html , http://msdn.microsoft.com/en-us/library/aa188211%28office.10%29.aspx y corresponde a http://support.microsoft.com/kb/252883/en permitir el rastreo de consultas OLE DB. Si esta salida no es suficiente para usted, también puede usar TraceSQLMode y TraceODBCAPI de HKEY_LOCAL_MACHINE / Software / Microsoft / Jet / 4.0 / Engines / ODBC. En mi práctica, JETSHOWPLAN da información perfecta para mí. Véase también elogio de SHOWPLAN.

ACTUALIZADO 2 : Para una versión más reciente de Access (como Access 2007) use una clave como HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Office/12.0/Access Connectivity Engine/Engines . La herramienta ShowplanCapturer (consulte http://www.mosstools.de/index.php?option=com_content&view=article&id=54&Item%20%20id=57 , para descargar http://www.mosstools.de/download/showplan_v9.zip también en inglés) puede ser útil para usted.

¿Es posible monitorear lo que le está sucediendo a un MDB de Access (es decir, qué consultas de SQL se están ejecutando en su contra), de la misma manera que usaría el Analizador de SQL para el Servidor SQL?

Necesito los registros de las consultas reales que se llaman.


Si está accediendo a través de ODBC, puede activar el registro de ODBC. Sin embargo, ralentizará mucho las cosas. Y no funcionará para ninguna otra interfaz de datos.

Otra idea es usar Jet / ACE como un servidor vinculado en SQL Server y luego usar el Analizador de SQL. Pero eso le dirá el SQL que SQL Server procesó, no lo que Jet / ACE procesó. Puede ser suficiente para sus propósitos, pero no creo que sea un buen diagnóstico para Jet / ACE.

EDITAR:

En un comentario, el póster original ha proporcionado esta información bastante crucial:

La aplicación que estoy tratando de monitorear está compilada y en las instalaciones del cliente. Estoy tratando de monitorear qué consultas está intentando contra un MDB. No puedo modificar la aplicación. Estoy tratando de hacer lo que haría SQL Profiler para un servidor SQL.

En ese caso, creo que podrías hacer esto:

  1. cambiar el nombre del MDB original a otra cosa.

  2. use un servidor vinculado a SQL Server para conectarse al archivo MDB cuyo nombre ha cambiado.

  3. cree un nuevo MDB con el nombre del MDB original y vincule al servidor SQL con ODBC.

El resultado será un archivo MDB que tiene las mismas tablas que el original, pero no son locales, sino que están vinculados al servidor SQL. En ese caso, todo el acceso se realizará a través del servidor SQL y se podrá ver con el Analizador de SQL.

No tengo ni idea de qué haría esto con el rendimiento, o si rompería la recuperación de datos en la aplicación original. Si esa aplicación usa conjuntos de registros de tipo tabla o SEEK, entonces, sí, se romperá. Pero esta es la única manera que puedo ver para obtener el registro.

No debería sorprender que no haya registros para Jet / ACE, dado que no hay un solo servidor que administre el acceso al almacén de datos.


Tenga en cuenta que el archivo que se encuentra en su disco duro es simplemente un archivo de Windows. Por lo tanto, hay una gran diferencia entre un sistema basado en servidor y el de un archivo de texto simple, o un archivo de Power Point, o en este caso un archivo mdb que se encuentra en la unidad.

Sin embargo, puede hacer que el motor a reacción muestre la optimización de su consulta a través del plan de presentación.

Cómo hacer esto se explica aquí:

http://www.databasejournal.com/features/msaccess/article.php/3658041/Queries-On-Steroids--Part-IV.htm

El artículo anterior también muestra cómo acceder a las estadísticas de lectura del disco jet, que también me parecen extremadamente útiles para optimizar las cosas.

Solo recuerda apagar el sistema de registro del motor de datos cuando no lo estés utilizando, ya que crea enormes archivos de registro ...



puede escribir su propio generador de perfiles, basado en un objeto de "transacción" que centralizará todas las instrucciones enviadas a la base de datos. Terminará en algún lugar con un método "transaction.execute" y una tabla de transacciones en su base de datos de acceso. Esta tabla se puede utilizar para recopilar las instrucciones de la transacción, la hora de inicio, la hora de finalización, el usuario que envía la instrucción, etc.