2009-04-02 17 views

Respuesta

0

No es fácil, pero si activa la función de registro de SQL Server, puede examinar los registros utilizando el software para descubrir cuándo fue la última consulta y de qué se trataba.

-Adam

1

Es necesario tener auditoría o una traza de SQL Server establecido de antemano.

0

SQL Server puede registrar la información del evento para los intentos de inicio de sesión y puede verlo al revisar el registro de errores. Al activar el nivel de auditoría de SQL Server.

siga estos pasos para habilitar la auditoría de todas las conexiones/exitosos con el Administrador de Empresa en SQL Server:

expandir un grupo de servidores. Haga clic con el botón derecho en un servidor y luego haga clic en Propiedades. En la pestaña Seguridad, debajo del Nivel de auditoría, haga clic en todo/éxito, etc. (se requiere la opción ).

Debe detener y reiniciar el servidor para que esta configuración surta efecto

16
SELECT 
last_user_seek = MAX(last_user_seek), 
last_user_scan = MAX(last_user_scan), 
last_user_lookup = MAX(last_user_lookup), 
last_user_update = MAX(last_user_update) 
FROM 
sys.dm_db_index_usage_stats 
WHERE 
[database_id] = DB_ID() 

Una advertencia con este método es que la información en el DMV se borrará y anula cada vez que reinicie SQL Server.

4

Encontré esto en MySQLtips - funcionó para mí.

select d.name, x1 = 
(select X1= max(bb.xx) 
from (
    select xx = max(last_user_seek) 
     where max(last_user_seek) is not null 
    union all 
    select xx = max(last_user_scan) 
     where max(last_user_scan) is not null 
    union all 
    select xx = max(last_user_lookup) 
     where max(last_user_lookup) is not null 
    union all 
     select xx = max(last_user_update) 
     where max(last_user_update) is not null) bb) 
FROM master.dbo.sysdatabases d 
left outer join 
sys.dm_db_index_usage_stats s 
on d.dbid= s.database_id 
group by d.name 
4

Para ampliar la respuesta de James Allen:

SELECT d.name, 
last_user_seek = MAX(last_user_seek), 
last_user_scan = MAX(last_user_scan), 
last_user_lookup = MAX(last_user_lookup), 
last_user_update = MAX(last_user_update) 
FROM sys.dm_db_index_usage_stats AS i 
JOIN sys.databases AS d ON i.database_id=d.database_id 
GROUP BY d.name 

Utilice esta versión modificada, si usted no quiere resultados por contexto base de datos y desea incluir el nombre de la base de datos al inicio del conjunto de resultados.

+0

También puede hacerlo sin JOIN: SELECT DB_NAME (database_id)), last_user_seek = MAX (last_user_seek), last_user_scan = MAX (last_user_scan), last_user_lookup = MAX (last_user_lookup), last_user_update = MAX (last_user_update) FROM sys.dm_db_index_usage_stats GROUP BY database_id PEDIDO POR DB_NAME (database_id) –

0

similares a los métodos anteriores, pero para obtener resultados simplemente como un único valor para un identificador de base de datos en particular (en este ejemplo es 6)

select max(LastAccess) 
from (
    SELECT last_user_seek as LastAccess FROM sys.dm_db_index_usage_stats WHERE last_user_seek is not null and [database_id]=6 
    union 
    SELECT last_user_lookup as LastAccess FROM sys.dm_db_index_usage_stats WHERE last_user_seek is not null and [database_id]=6 
    union 
    SELECT last_user_seek as LastAccess FROM sys.dm_db_index_usage_stats WHERE last_user_seek is not null and [database_id]=6 
    union 
    SELECT last_user_update as LastAccess FROM sys.dm_db_index_usage_stats WHERE last_user_seek is not null and [database_id]=6 
) UserAccess 
Cuestiones relacionadas