在SQL Server中查找表中查询最多的项目

时间:2016-08-05 17:57:24

标签: sql-server

我们有一个SQL Server数据库,其中包含由代码组成的表。像

这样的东西
Ticker | description
-------+-------------
USDHY  | High yield 
USDIG  | Investment grade  ...

现在我们有很多其他表格,其数据对应于这些代码(时间序列)。我们希望能够创建一个报告,该报告可以向我们展示更多查询器中的哪些以及根本不需要查询的报警器。这可以让我们有选择地为更频繁使用的代码运行一些程序,并定期忽略其他程序。

有没有办法在SQL中实现这一点,任何可以在一段时间内生成此统计数据的报告都说n个月。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:2)

到目前为止似乎没有答案。正如我所提到的,一种可能性是使用如下的扩展事件:

CREATE EVENT SESSION [TestTableSelectLog]
ON SERVER
ADD EVENT sqlserver.sp_statement_completed (
WHERE [statement] LIKE '%SELECT%TestTable%' --Capure all selects from TestTable
  AND [statement] NOT LIKE '%XEStore%' --filter extended event queries
  AND [statement] NOT LIKE '%fn_xe_file_target_read_file%'),
ADD EVENT sqlserver.sql_statement_completed (
WHERE [statement] LIKE '%SELECT%TestTable%'
  AND [statement] NOT LIKE '%XEStore%'
  AND [statement] NOT LIKE '%fn_xe_file_target_read_file%')
ADD TARGET package0.event_file (SET FILENAME=N'C:\Temp\TestTableSelectLog.xel');--log to file

ALTER EVENT SESSION [TestTableSelectLog] ON SERVER STATE=START;--start capture

然后,您可以使用sys.fn_xe_file_target_read_file

从文件中进行选择
CREATE TABLE TestTable
(
    Ticker varchar(10),
    [Description] nvarchar(100)
)

SELECT * FROM TestTable

SELECT *, CAST(event_data AS XML) AS 'event_data_XML'  
FROM sys.fn_xe_file_target_read_file('C:\Temp\TestTableSelectLog*.xel', NULL, NULL, NULL)

应捕获SELECT语句。

也可以从GUI(Management Studio中的管理/扩展事件/会话)配置扩展事件。