Skip to content

Cómo ver un historial de consultas en SQL Server

Muchas veces has necesitado ver qué sucedió en tu servidor de base de datos. Nunca falta el error desapercibido, la lentitud circunstancial o cualquier situación que nos necesite para buscar ejecuciones pasadas de nuestras consultas. Es así que una pregunta recurrente es justamente el cómo ver un historial de consultas en SQL Server.

Bueno, primero yo me preguntaría si esto es posible. Sobretodo porque podemos entenderlo de diferentes maneras.

Me ha pasado que un auditor quiere saber qué se ha ejecutado a las 02:34:45.1433 de hace 10 días, desde qué equipo y con qué usuario, como también me ha pasado que alguien necesita evaluar un cambio en producción que pasó hace 2 meses y se necesita comparar cómo trabaja antes y cómo funciona ahora.

Estoy seguro que casos similares también los has vivido. Por eso quiero que vayamos diferenciando entre los conceptos de un sistema de monitoreo como de un sistema de auditoría cuando hablamos de un llamado historial de consultas.


¿Qué podemos ver y qué no?

Si vamos por el caso de la auditoría, debe estar claro que para ello existen sistemas especiales tanto de software como hardware que pueden realizar todo un trazado de ejecuciones pasadas. Incluso generando alertas y hasta analizando comportamientos anormales con una línea base.

SQL Server tiene sus propias herramientas ya sean de auditoría o monitoreo. Dentro de los módulos de Seguridad tú puedes configurar capturas de auditoría a través de los Audits y los Audits Specifications con diferentes opciones como las que ves en la imagen.

Puedes ver más detalles en Trabajos de Auditoría en SQL Server.

También puedes llegar a ver un monitoreo de procesos y recursos a través de herramientas como el Activity Monitor. El problema acá está en que la visualización es solo ‘en vivo’.

historial-consultas-sql-server-2

Entonces, ¿qué del historial de consultas en SQL Server?

Aquí es justamente donde tenemos el principal foco de atención. En el cómo tener un histórico. Cuando no contamos con herramientas específicas, debemos ser bastante creativos.

Una de las grandes ayudas se nos da en lo que se mantiene en el Cache de la memoria. Tremenda opción para conocer ejecuciones pasadas, pero, debes entender bien Qué es el Plan Cache de SQL Server.

Luego de haber leído el enlace anterior, puedes ver una muy útil herramienta denomiada sp_ReportCache para Generar un reporte del Cache desarrollada basada justamente en este almacenamiento de memoria que nos permite evaluar consultas pasadas y revisar su comportamiento.

La memoria es volátil, entonces si quieres mantener un historial de todo lo que has visto allí, debes almacenar esos resultados en algún lugar físico para consultarlos después.


¿No hay una manera automática de ver este historial?

Una de las más grandes innovaciones de SQL Server para cumplir con este objetivo, ha sido la liberación del Query Store. Impresionante el trabajo de Microsoft con esta característica.

El objetivo principal de Query Store es el de monitoreo y performance como lo dice su documentación oficial, sin embargo, es otra alternativa para automáticamente capturar un historial de ejecuciones y algunas estadísticas interensates.

Si nunca lo has visto, y te has preguntado qué es Query Store en SQL Server, ingresa al enlace.


Solo para cerrar el historial de consultas en SQL Server

Hay cosas que sí pueden ser obtenidas desde el mismo SQL Server como cosas que necesitan de alguna herramienta externa.

Si tienes claro qué es lo que necesitas consultar en el tiempo, puedes generar tus propios reportes y almacenarlos.

Aprovecha las vistas de sistema o características de SQL Server para obtener información que te sea útil de acuerdo a tus objetivos.

www.datoptim.com
I love working on SQL Server Performance Tuning and finding the origin of the problems. Music and SQL Server passionate.

Esta entrada tiene 2 comentarios

  1. Hola Javier buenas tardes, me puedes apoyar, necesito saber las consultas y cambios que se han realizado a unas tablas en los últimos días (Delete, insert, update) actualmente no tenemos ningún sp que nos almacene esa información, existe manera de hacerlo?, espero que de verdad me puedas apoyar, muchas gracias

    1. Hola Berenice! Está descrita en esta página el detalle de lo que se puede ver y lo que no en un lugar sin monitoreo o sin ningún mecanismo de almacenamiento. Si queremos mayores datos sobre ejecuciones en el servidor, queda programar para adelante.

Los comentarios están cerrados.

Carrito
Volver arriba