我试图找到一种方法(可能使用sys DB)来检索用户数据库上每小时执行的所有查询的信息。 我的客户希望我每小时通过SSRS交易给他每日报告,我很乐意听到网上没有运气的建议。
编辑:我试图了解从哪里获取此信息,而不是每小时如何过滤结果 感谢
答案 0 :(得分:1)
您可以随时查看以下表格:
master.sys.dm_exec_sessions
master.sys.dm_exec_connections
master.sys.dm_exec_sql_text
答案 1 :(得分:1)
我最终找到了这个(稍作改动)
create table #execution_count
(time datetime,
onhour int,
query nvarchar(max),
dbid int,
objectid int,
number int,
encrypted int,
text nvarchar(max)
)
insert into #execution_count
SELECT deqs.last_execution_time AS [Time], (datepart(hour, deqs.last_execution_time)) as onhour, dest.text AS [Query], dest.*
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 > getdate()-1 --and cast(deqs.last_execution_time as datetime) between '%19:00:00%' and '%2018-01-16 21:00:00%'
and dest.dbid not in(1,2,3,4)
ORDER BY deqs.last_execution_time DESC
select onhour, count(*) as total_executes_per_hour from #execution_count
group by onhour
having count(*)>0
drop table #execution_count
答案 2 :(得分:0)
您可以使用Perfmon
计数器Transactions/sec
和Batch Requests/sec
或来自DMV sys.dm_os_performance_counters
的相同计数器。
您可以在此处阅读第一个计数器的更多信息:ransactions/sec performance counter
但请看一下这个视频:he Transactions/sec counter has big blind spots因为您可能应该选择Batch Requests/sec
。