如何实现把库里执行过的sql语句记录下来

2025-03-31 01:01:27
推荐回答(1个)
回答1:

1、甲骨文ORACLE数据库里有几个表是专门记录SQL语句持行情况的,但是刷新速度很快,老旧的记录会被删,估计很难记录下来。怎么查真心不知道。

2、微机的SQL Server的查法如下:

SELECT TOP 1000 
--创建时间 
QS.creation_time, 
--查询语句 
SUBSTRING(ST.text,(QS.statement_start_offset/2)+1, 
((CASE QS.statement_end_offset WHEN -1 THEN DATALENGTH(st.text) 
ELSE QS.statement_end_offset END - QS.statement_start_offset)/2) + 1 
) AS statement_text, 
--执行文本 
ST.text, 
--执行计划 
QS.total_worker_time, 
QS.last_worker_time, 
QS.max_worker_time, 
QS.min_worker_time 
FROM 
sys.dm_exec_query_stats QS 
--关键字 
CROSS APPLY 
sys.dm_exec_sql_text(QS.sql_handle) ST 
--WHERE 
--QS.creation_time BETWEEN '2012-12-03 09:00:00' AND '2012-12-03 11:00:00' 
--AND ST.text LIKE '%%' 
ORDER BY 
QS.creation_time DESC

SELECT TOP 1000 
--创建时间 
QS.creation_time, 
--执行文本 
ST.text
FROM 
sys.dm_exec_query_stats QS 
--关键字 
CROSS APPLY 
sys.dm_exec_sql_text(QS.sql_handle) ST 
WHERE 
--QS.creation_time BETWEEN '2012-12-03 09:00:00' AND '2012-12-03 11:00:00' 
--AND 
ST.text NOT LIKE '%SELECT * FROM T_LOCATIONINFO WHERE STRCLIPLOGICID in(%' 
ORDER BY 
QS.creation_time DESC