2022-08-25 11:33:02 版本 : server sql 查询存储过程源代码及执行日志 - CSDN
作者: 周杨 于 2022年06月20日 发布在分类 / 计算机应用 / 数据库 / SQLSERVER 下,并于 2022年08月25日 编辑
 历史版本

备注 修改日期 修改人
修改标题 2022-08-25 11:33:02[当前版本] 系统管理员
CREAT 2022-06-20 10:53:31 系统管理员


查存储过程包含的内容



SELECT obj.Name 存储过程名, sc.TEXT 存储过程内容

FROM syscomments sc

INNER JOIN sysobjects obj ON sc.Id = obj.ID

WHERE sc.TEXT LIKE '%NuctLD%'
order by 1



根据SP来检查用的那个作业

SELECT *
FROM msdb.dbo.sysjobs JOB WITH( NOLOCK)
INNER JOIN msdb. dbo.sysjobsteps STP WITH(NOLOCK )
ON STP .job_id = JOB .job_id
WHERE STP .command LIKE N'% sp_name %'



查存储过程的依赖

SELECT OBJECT_SCHEMA_NAME ( referencing_id ) AS referencing_schema_name,
OBJECT_NAME(referencing_id) AS referencing_entity_name,
o.type_desc AS referencing_desciption,
COALESCE(COL_NAME(referencing_id, referencing_minor_id), '(n/a)') AS referencing_minor_id,
referencing_class_desc, referenced_class_desc,
referenced_server_name, referenced_database_name, referenced_schema_name,
referenced_entity_name,
COALESCE(COL_NAME(referenced_id, referenced_minor_id), '(n/a)') AS referenced_column_name,
is_caller_dependent, is_ambiguous
FROM sys.sql_expression_dependencies AS sed
INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id
where OBJECT_NAME(referencing_id) =N'sp_getDeliveryBill'


查存储过程的执行情况

SELECT
a.name AS 存储过程名称,
a.create_date AS 创建日期,
a.modify_date AS 修改日期,
b.last_execution_time AS 最后执行日期,
b.execution_count AS 执行次数
FROM sys.procedures a
LEFT JOIN sys.dm_exec_procedure_stats b ON a.object_id = b.object_id AND b.database_id = DB_ID('OA')  --查询数据库OA
WHERE a.is_ms_shipped =0 --去掉系统存储过程


----------------------------------------------

sys.dm_exec_procedure_stats数据字典

列名

数据类型

说明

database_id

int

存储过程所在的数据库 ID。

object_id

int

存储过程的对象标识号。

cached_time

datetime

存储过程添加到缓存的时间。

cached_time

datetime

存储过程添加到缓存的时间。

last_execution_time

datetime

上次执行存储过程的时间。

execution_count

bigint

存储过程自上次编译以来所执行的次数。

total_worker_time

bigint

此存储过程自编译以来执行所用的 CPU 时间总量(微秒)。

last_worker_time

bigint

上次执行存储过程所用的 CPU 时间(微秒)。

total_physical_reads

bigint

此存储过程自编译后在执行期间所执行的物理读取总次数。

last_physical_reads

bigint

上次执行存储过程时所执行的物理读取次数。

min_physical_reads

bigint

该存储过程在单次执行期间所执行的最少物理读取次数。

max_physical_reads

bigint

该存储过程在单次执行期间所执行的***物理读取次数。

total_logical_writes

bigint

此存储过程自编译后在执行期间所执行的逻辑写入总次数。

last_logical_writes

bigint

上次执行存储过程时所执行的逻辑写入次数。

min_logical_writes

bigint

该存储过程在单次执行期间所执行的最少逻辑写入次数。

max_logical_writes

bigint

该存储过程在单次执行期间所执行的***逻辑写入次数。

total_logical_reads

bigint

此存储过程自编译后在执行期间所执行的逻辑读取总次数。

last_logical_reads

bigint

上次执行存储过程时所执行的逻辑读取次数。

total_elapsed_time

bigint

完成此存储过程的执行所用的总时间(微秒)。

last_elapsed_time

bigint

最近完成此存储过程的执行所用的时间(微秒)。


--可以通过下面的语句,得到按照执行时间排序的前10 的存储过程的执行信息:

SELECT TOP 10 a.object_id,
              a.database_id,
              OBJECT_NAME(object_id, database_id)         'proc name',
              a.cached_time,
              a.last_execution_time,
              a.total_elapsed_time,
              a.total_elapsed_time / a.execution_count AS [avg_elapsed_time],
              a.execution_count,
              a.total_physical_reads / a.execution_count  avg_physical_reads,
              a.total_logical_writes,
              a.total_logical_writes / a.execution_count  avg_logical_reads,
              a.last_elapsed_time,
              a.total_elapsed_time / a.execution_count    avg_elapsed_time,
              b.text,
              c.query_plan
FROM sys.dm_exec_procedure_stats AS a
         CROSS APPLY sys.dm_exec_sql_text(a.sql_handle) b
         CROSS APPLY sys.dm_exec_query_plan(a.plan_handle) c
ORDER BY [total_worker_time] DESC;
GO


历史版本-目录  [回到顶端]
    知识分享平台 -V 5.1.4 -大信谛威