SQL Server:查看谁修改了存储过程
在使用 SQL Server 的过程中,通常需要跟踪谁对存储过程进行了修改。这不仅有助于审计和遵从性,还能够帮助开发团队理解代码的变化历史。本文将为您详细讲解如何实现这一需求,包括步骤、相关 SQL 代码和示例。
流程概述
以下是查看者存储过程被修改的整体流程概述:
| 步骤编号 | 步骤描述 |
|---|---|
| 1 | 开启审计或跟踪功能 |
| 2 | 查询系统视图以查看存储过程的修改信息 |
| 3 | 查看相关的日志和信息 |
| 4 | 分析查询结果并确定修改者 |
每一步的详细说明
步骤1:开启审计或跟踪功能
在 SQL Server 中,开启审计或跟踪功能是查看存储过程修改记录的前提。可以使用以下命令创建一个跟踪。
-- 创建一个跟踪
EXEC sp_trace_create @TraceId OUTPUT,
@options = 0,
@tracefile = N'C:\Trace\ProcedureModification.trc',
@maxsize = NULL,
@maxfiles = NULL;
-- 添加事件以监控存储过程的修改
EXEC sp_trace_setevent @TraceId, 164, 1, @columnid = 6; -- 164 是对象:存储过程事件
EXEC sp_trace_setevent @TraceId, 164, 12, @columnid = 8; -- 事件的数据库 ID
EXEC sp_trace_setevent @TraceId, 164, 14, @columnid = 9; -- 事件的用户 ID
-- 启动跟踪
EXEC sp_trace_setstatus @TraceId, 1;
注意:请确保跟踪文件的路径存在,并且 SQL Server 服务帐户有权限写入该路径。
步骤2:查询系统视图以查看存储过程的修改信息
在 SQL Server 中,我们可以使用 sys.objects 和 sys.sql_modules 系统视图来查看存储过程的修改时间和其他相关信息。
-- 查询存储过程的修改信息
SELECT
o.name AS ProcedureName,
o.modify_date AS LastModifiedDate,
s.name AS SchemaName,
u.name AS UserName
FROM
sys.objects AS o
JOIN
sys.sql_modules AS sm ON o.object_id = sm.object_id
JOIN
sys.schemas AS s ON o.schema_id = s.schema_id
JOIN
sys.database_principals AS u ON sm.definition LIKE '%' + u.name + '%'
WHERE
o.type = 'P' -- P表示存储过程
ORDER BY
o.modify_date DESC;
注释:以上查询将列出所有存储过程的名称、最后修改时间、架构名称和修改用户。这有助于定位具体是谁进行了修改。
步骤3:查看相关的日志和信息
如果您的 SQL Server 开启了审计或跟踪,您还可以查询跟踪文件以获取更多详细信息。
-- 使用 fn_trace_gettable 函数读取跟踪文件
SELECT
EventClass,
TextData,
LoginName,
HostName,
ApplicationName,
StartTime
FROM
fn_trace_gettable('C:\Trace\ProcedureModification.trc', DEFAULT)
WHERE
EventClass = 164 -- 存储过程事件
ORDER BY
StartTime DESC;
提示:需要根据实际的跟踪文件路径进行调整。
步骤4:分析查询结果并确定修改者
最后,您可以分析查询结果并确认修改者。当找到相关的修改记录后,可以与团队沟通以获取更多信息。
-- 返回修改人和其它相关信息
SELECT LoginName, TextData, StartTime
FROM fn_trace_gettable('C:\Trace\ProcedureModification.trc', DEFAULT)
WHERE EventClass = 164
ORDER BY StartTime DESC;
建议:注意分析信息的上下文,以便更合理地解释结果。
旅行图:SQL Server 存储过程修改跟踪流程
journey
title 跟踪 SQL Server 存储过程修改流程
section 步骤1: 开启审计或跟踪功能
创建跟踪: 5: 开启审计
section 步骤2: 查看存储过程的修改信息
查询系统视图: 4: 查看修改信息
section 步骤3: 查看日志和信息
查询跟踪文件: 3: 查看详细日志
section 步骤4: 分析结果
确定修改者: 4: 确认修改
总结
通过以上步骤,我们可以有效地查看 SQL Server 中存储过程的修改记录,从而理解代码的演变过程,确保代码质量和安全性。在实际应用中,可以根据团队的情况灵活调整审计与记录的策略,以便带来最佳的开发体验和一致性。
希望本文能够帮助到刚入行的小白们,掌握 SQL Server 的存储过程修改跟踪。随着实践的深入,您将能够更游刃有余地处理这类问题!

















