SQL Server 2005 中是否有内置的方式来审计特别是删除存储过程之类的事情?有我可以查询的历史记录表吗?我们有一个神秘的sproc,现在已经消失了几次。
6 回答
您可以使用 DDL 触发器构建它:
仅当您使用DDL 触发器或使用探查器跟踪文本“%DROP%PROC%procname%”时
请注意,在 SQL Server 2008 中,他们现在还具有 AUDIT 来替换 Profiler Traces 以进行审计活动。类似但有自己的配置UI和查看结果的UI
您可以设置探查器跟踪以捕获审核架构对象管理事件并根据您关心的数据库名称进行过滤。每当创建、删除、编辑模式中的对象时,它都会在分析器中触发一个事件,其中包括进行更改的人员和存储过程的名称。
您至少需要以下分析器列: ApplicationName - 应用程序用户在进行更改时正在运行的名称 DatabaseName - 包含更改的对象的数据库 EventSubClass - 操作类型显示 Alter、Modify、Drop、Create 等 LoginName - 用户进行更改 ObjectName - 对象做作的
[较晚的一个,但添加了有关如何在审计系统实施之前查看谁进行了更改的详细信息]
其他人已经介绍了您可以开始审计数据以监控未来变化的不同方式,但是如果您最初没有任何审计系统,那么很难找出历史上谁做了什么以及什么时候做了什么。
唯一的选择是尝试读取事务日志,假设数据库处于完全恢复模式。问题是默认情况下不支持此功能。选项是:
- 第三方工具,例如ApexSQL Log或Quest Toad
- 未记录的函数,例如 DBCC LOG 或 fn_dblog
有关更多详细信息,请参阅这些主题:
我同意。它可以是带有过滤器的 SQL Server 分析器。DDL 触发器存在于 SQL Server 中。你可以创建这样的东西:
CREATE TRIGGER ddl_drop_procedure
ON DATABASE
FOR DROP_PROCEDURE
AS
RAISERROR ('You deleted a stored procedure',10, 1)
GO
另一种选择是使用第三方工具,例如来自 codeplex 的 Auto Audit 或 apexSQL 触发器。