查询有个别时间段数据库执行的语法sql,历史SQL执行记录

    编制程序执行Sql语句难免忘记保存执行的文件,或是意外设备故障七种场合包车型地铁发出。对于写的简易的Sql语句丢了就丢了,但对于团结写的繁杂的散失就有个别慌了,

好啊,到数据库日志中去找找,通过时间、关键字批配。。能想到的全用上吗。

SELECTTOP1000
–创造时间
QS.creation_time,
–查询语句
SUBSTRING(ST.text,(QS.statement_start_offset/2)+1,
((CASEQS.statement_end_offsetWHEN-1THENDATALENGTH
ELSEQS.statement_end_offsetEND-QS.statement_start_offset)/2)+1
)ASstatement_text,
–执行文书
ST.text,
–执行铺排
QS.total_worker_time,
QS.last_worker_time,
QS.max_worker_time,
QS.min_worker_time
FROM
sys.dm_exec_query_statsQS
–关键字
CROSSAPPLY
sys.dm_exec_sql_text(QS.sql_handle)ST
WHERE

SELECT  SUBSTRING(ST.text, ( QS.statement_start_offset / 2 ) + 1,
                   ( ( CASE statement_end_offset
                         WHEN -1 THEN DATALENGTH(st.text)
                         ELSE QS.statement_end_offset
                       END – QS.statement_start_offset ) / 2 ) + 1) AS
‘执行语句’ ,
  DB_Name(DB.dbid) ‘数据库名’
       , OBJECT_ID(db.objectid) ‘对象’
       , QS.creation_查询有个别时间段数据库执行的语法sql,历史SQL执行记录。time ‘编写翻译安插的时刻’
       , QS.last_execution_time ‘上次执行布置的日子’
       , QS.execution_count ‘执行的次数’
       , QS.total_elapsed_time / 一千 ‘占用的总时间(秒)’
       , QS.total_physical_reads ‘物理读取总次数’
       , QS.total_worker_time / 1000 ‘CPU 时间总量(秒)’
       , QS.total_logical_writes ‘逻辑写入总次数’
       , QS.total_logical_reads N’逻辑读取总次数’
       , QS.total_elapsed_time / 一千 N’总耗时(秒)’
FROM    sys.dm_exec_query_stats AS QS CROSS APPLY
         sys.dm_exec_sql_text(QS.sql_handle) AS ST INNER JOIN
         ( SELECT    *
           FROM      sys.dm_exec_cached_plans cp CROSS APPLY
                     sys.dm_exec_query_plan(cp.plan_handle)
         ) DB
             ON QS.plan_handle = DB.plan_handle
 where   SUBSTRING(st.text, ( qs.statement_start_offset / 2 ) + 1,
                   ( ( CASE statement_end_offset
                         WHEN -1 THEN DATALENGTH(st.text)
                         ELSE qs.statement_end_offset
                       END – qs.statement_start_offset ) / 2 ) + 1)
not like ‘%fetch%’
and isnull(DB_Name(DB.dbid),”) != ‘AME1.0’
ORDER BY QS.total_elapsed_time / 1000 DESC

  有时候很难再一次写出来,那时候就需求用有些办法找回Sql语句,下边包车型地铁格局只适合MS
SQLServer:

先是假定你执行过它。没有?可以吗,要么它太过不难,要么你太过不简单。。

–要询问的年华段

 

    SELECT TOP 1000 

复制代码 代码如下:

QS.creation_timeBETWEEN’2018-02-0123:00:00’AND’2018-02-0212:00:00′

–by 别人

*    –成立时间
    QS.creation_time,
997755.com澳门葡京,    –查询语句
    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
    ORDER BY
    QS.creation_time DESC
    参考:*

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 ‘2011-10-20 16:00:00’ AND ‘2011-10-20
17:00:00’
AND ST.text LIKE ‘%%’
ORDER BY
QS.creation_time DESC

–关键字模糊查询
ANDST.textLIKE’%关键字%’
ORDERBY
QS.creation_timedesc

        
 

此地运用了SQL Server 二零零七 新增的 cross apply 和 outer apply 联接语句
,用于交叉联接表值函数(重回表结果集的函数),更主要的是这么些函数的参数是另一个表中的字段。

【SQL Server】CROSS APPLY和OUTEPRADO APPLY的使用详解

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website