我需要编写一个查询来获取自上次重启以来用户在特定数据库中执行的语句。
首先,我从 ::fn_dblog(NULL,NULL) 中提取所有事务,它返回事务日志。在此之后,我尝试使用这两个查询来获取缓存的查询:
SELECT *
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY deqs.last_execution_time DESC;
-- OR
select * from master.dbo.syscacheobjects where dbid = db_id() and objtype = 'Adhoc';
我的想法是将可以产生交易的语句与其交易结合起来,并显示其他的。问题是第一个尝试获取查询信息的查询没有提供任何信息来识别数据库,而另一个查询没有提供任何可用于将其加入事务日志的信息。
我正在尝试在不了解此特定 DBMS 的情况下构建此查询,因此请原谅我的概念错误。先感谢您。