Puede identificar las consultas costosas (y las bases de datos que están asociados con las DMV) usando , p.ej from this TechNet article:
SELECT TOP 50
[Average CPU used] = total_worker_time/qs.execution_count,
[Total CPU used] = total_worker_time,
[Execution count] = qs.execution_count,
[Individual Query] = SUBSTRING (qt.text,qs.statement_start_offset/2,
(CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE qs.statement_end_offset END -
qs.statement_start_offset)/2)
,[Parent Query] = qt.text
,DatabaseName = DB_NAME(qt.dbid)
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
ORDER BY [Average CPU used] DESC;
Estos le dirá sobre las consultas de peso pesado, pero por desgracia no será localizar una base de datos que podría tener un volumen muy alto de pequeñas consultas que utilizan pequeños trozos de la CPU de forma individual sino trozos grandes en su conjunto. Usted puede hacer eso con esta consulta from Glenn Allan Berry's DMV queries:
WITH DB_CPU_Stats
AS
(SELECT DatabaseID, DB_Name(DatabaseID) AS [DatabaseName],
SUM(total_worker_time) AS [CPU_Time_Ms]
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY (SELECT CONVERT(int, value) AS [DatabaseID]
FROM sys.dm_exec_plan_attributes(qs.plan_handle)
WHERE attribute = N'dbid') AS F_DB
GROUP BY DatabaseID)
SELECT ROW_NUMBER() OVER(ORDER BY [CPU_Time_Ms] DESC) AS [row_num],
DatabaseName, [CPU_Time_Ms],
CAST([CPU_Time_Ms] * 1.0/SUM([CPU_Time_Ms])
OVER() * 100.0 AS DECIMAL(5, 2)) AS [CPUPercent]
FROM DB_CPU_Stats
WHERE DatabaseID > 4 -- system databases
AND DatabaseID <> 32767 -- ResourceDB
ORDER BY row_num OPTION (RECOMPILE);
Ninguna de estas consultas identifica la aplicación que los corrió, y los DMV utiliza No almacenar esa información (que tendría que coger las consultas en el acto y la nota el nombre de la aplicación en sys.dm_exec_sessions, o revisar un seguimiento).
Por supuesto, puede automatizar este trabajo con una variedad de herramientas de rendimiento de terceros en el mercado (descargo de responsabilidad: yo trabajo para uno de ellos, SQL Sentry, que produce Performance Advisor, que hace todo lo anterior, incluyendo el seguimiento de consultas de alto costo y mantenimiento de la información sobre la base de datos en la que se ejecutaron y qué aplicación las llamó).