2010-03-15 37 views
26

Soy nuevo en SQL Server Management Studio y me pregunto: ¿hay alguna manera de ver qué consultas se han ejecutado en una base de datos?¿Cómo veo las consultas ejecutadas dentro de SQL Server Management Studio?

En el monitor de actividad, hay un informe de "Consultas costosas recientes" pero supongo que no son todas las consultas ya que no veo las que he ejecutado.

Estoy ejecutando SQL Server Express 2008 v 10.0.1600.22.

+0

Una respuesta ahora borrado debajo de los puntos a [esta entrada del blog] (http://blog.sqlauthority.com/2008/01/03/sql -server-2005-last-ran-query-recently-ran-query /) que muestra una consulta SQL para mostrar las consultas SQL más recientes. –

Respuesta

18

Use SQL Profiler y use un filtro para obtener las consultas más caras.

+2

Olvidé mencionar que esto es SQL Server Express. Al leer otras publicaciones, parece que Profiler no está incluido en Express. ¿Eso sigue siendo correcto? – bsh152s

+0

Sí, solo está incluido en las ediciones Enterprise, Standard y Workgroup. Puede comparar esta y otras características aquí: http://www.microsoft.com/sqlserver/2008/en/us/editions-compare.aspx –

10

Necesita un generador de perfiles SQL, que realmente se ejecuta fuera de SQL Management Studio. Si tiene una versión paga de SQL Server (como la edición de desarrollador), debe incluirse en eso como otra utilidad.

Si está utilizando una edición gratuita (SQL Express), tienen perfiles de software gratuito que puede descargar. He usado el generador de perfiles de AnjLab (disponible en http://sites.google.com/site/sqlprofiler), y parecía funcionar bien.

15

Utilice el Monitor de actividad. Es la última barra de herramientas en la barra superior. Le mostrará una lista de "Consultas costosas recientes". Puede hacer doble clic en ellos para ver el plan de ejecución, etc.

+4

+1 para decirnos dónde está esa función que de otra manera estaría oculta y cómo usarla. – cjbarth

3

Si desea que SSMS mantenga un historial de consultas, use el SSMS Tool Pack add on.

Si desea supervisar el SQL Server para las consultas actualmente en ejecución, use SQL PRofiler como ya han sugerido otros.

3

Ejecutar la siguiente consulta del estudio de la gerencia en un proceso en ejecución:

DBCC inputbuffer(spid#) 

Esto devolverá la actualidad el SQL que se ejecuta en la base de datos para el SPID siempre. Tenga en cuenta que necesita los permisos adecuados para ejecutar este comando.

Esto es mejor que ejecutar un rastro, ya que se dirige a un SPID específico. Puede ver si se ejecuta mucho en función de su CPUTime y DiskIO.

ejemplo, para obtener detalles de SPID 64:

DBCC inputbuffer(64) 
4
 SELECT * FROM sys.dm_exec_sessions es 
    INNER JOIN sys.dm_exec_connections ec 
     ON es.session_id = ec.session_id 
    CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle) where es.session_id=65 under see text contain... 
+0

obtienes solo sql ejecutándose dentro de ssms (sql management studio), pero no puedes ejecutar sql ejecutándose en cualquier aplicación de dotnet target ado.net. Solo el generador de perfiles sql puede hacerlo. –

15

Si quieres ver las consultas que ya están ejecutados no hay apoyado forma predeterminada para hacerlo. Hay algunas soluciones alternativas que puedes probar, pero no esperes encontrarlas todas.

No podrá ver las instrucciones SELECT con seguridad, pero hay una manera de ver otros comandos DML y DDL leyendo el registro de transacciones (suponiendo que la base de datos se encuentra en modo de recuperación completa).

Usted puede hacer esto mediante DBCC REGISTRO o comandos fn_dblog o tercer lector de registros de fiesta como ApexSQL Log (tenga en cuenta que la herramienta tiene un precio)

Ahora, si usted planea en las declaraciones de auditoría que se van a ejecutar en el futuro, entonces puede usar SQL Profiler para atrapar todo.

3

consulta más clara, dirigida a las consultas SQL Studio es:

SELECT text FROM sys.dm_exec_sessions es 
    INNER JOIN sys.dm_exec_connections ec 
     ON es.session_id = ec.session_id 
    CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle) 
    where program_name like '%Query' 
+0

obtienes solo sql ejecutándose en ssms (sql management studio), pero no puedes ejecutar sql ejecutándose en cualquier aplicación de dotnet target ado.net si cambias program_name. Solo el generador de perfiles sql puede hacerlo. –

Cuestiones relacionadas