我们有一个SQL Server数据库,其中包含由代码组成的表。像
这样的东西Ticker | description
-------+-------------
USDHY | High yield
USDIG | Investment grade ...
现在我们有很多其他表格,其数据对应于这些代码(时间序列)。我们希望能够创建一个报告,该报告可以向我们展示更多查询器中的哪些以及根本不需要查询的报警器。这可以让我们有选择地为更频繁使用的代码运行一些程序,并定期忽略其他程序。
有没有办法在SQL中实现这一点,任何可以在一段时间内生成此统计数据的报告都说n个月。
非常感谢任何帮助
答案 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中的管理/扩展事件/会话)配置扩展事件。