Pregunta

Alguien corría una consulta en la base de datos de SQL Server de forma remota y su sistema se bloqueó.

No tienen ninguna copia de seguridad de esa consulta y quieren ver lo que se ejecuta en el servidor.

¿Es posible encontrar esta consulta en un registro o en un algún lugar de la historia?

¿Fue útil?

Solución

Al igual subvención Fritchey tuvo el problema por el que había cerrado SSMS y perdió la consulta que había estado trabajando en blogs sobre ... aquí: Oh **********!

Editar

Para hacer esto un poco más de detalle de una respuesta, al que se hace referencia vinculado anteriormente subvención proporciona una consulta simplemente ir a la memoria caché en la instancia de sacar la consulta que solo había ejecutado (o al menos intento):

SELECT  dest.text
FROM    sys.dm_exec_query_stats AS deqs
        CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
WHERE   deqs.last_execution_time > '5/19/2011 11:00'
        AND dest.text LIKE 'WITH%';

A pocas opciones más que se observaron en los comentarios del blog de Subvención:

Otros consejos

2005+, predeterminado traza al rescate.

Los rollos de rastreo por omisión en más de 20 MB, pero SQL conserva la historia de 5 rastros. Con el acceso al servidor se podía recuperar los archivos * .trc desde el directorio MSSQL \ Log. Si no puede acceder al servidor, la siguiente información le dará el nombre del archivo de rastreo por defecto actual:

SELECT * FROM ::fn_trace_getinfo(default) 

Si el archivo actual es, por ejemplo E: \ MSSQL.1 \ MSSQL \ LOG \ log_200.trc, los archivos anteriores debe ser log_199.trc, log_198.trc etc., obtiene el contenido de la traza con:

SELECT * FROM fn_trace_gettable('E:\MSSQL.1\MSSQL\LOG\log_199.trc', default)

podría ser capaz de recuperar la información de los planes de consulta en caché, compruebe BOL para obtener información sobre sys.dm_exec_query_stats, o ejecutar este estudio de gestión conectado a la misma base de datos:

SELECT  d.plan_handle ,
        d.sql_handle ,
        e.text

FROM    sys.dm_exec_query_stats d
        CROSS APPLY sys.dm_exec_sql_text(d.plan_handle) AS e

filtrar la salida con

WHERE text like '%something%'

para acotar los resultados.

Si la base de datos estaba en modo de recuperación completa es posible que haya una oportunidad para recuperar algunos datos y obtener ideas sobre lo que se hizo mediante la lectura de registro de transacciones.

Por desgracia, este no es compatible de forma predeterminada, pero hay maneras de hacer esto.

Puedes probar a utilizar herramientas de terceros, como ApexSQL Log o SQL Entrar rescate (libre, pero SQL 2000 solamente).

Otra opción es tratar de usar funciones no documentadas DBCC LOG o fn_dblog. Esto es más complejo, pero es gratis.

Si su base de datos se establece en modelo de recuperación completa se puede investigar las copias de seguridad de registro de transacciones. Ver fn_dump_dblog para más información.

ApexSQL tiene una funcionalidad 'consultas ejecutadas' que le permite buscar y filtrar por fecha.

No estoy seguro de si se tira de la historia de la caché SSMS o en realidad no pierde de vista que por sí mismo. Se podría tratar de instalarlo y esperar lo mejor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top