SQL Server 2005中是否有内置方式来审计特定内容,例如删除存储过程?有没有我可以查询的历史表?我们有一个神秘的现在已经消失了几次。
答案 0 :(得分:3)
您可以使用DDL触发器构建它:
答案 1 :(得分:2)
仅当您使用DDL triggers或使用分析器跟踪文本“%DROP%PROC%procname%”
时答案 2 :(得分:1)
请注意,在SQL Server 2008中,他们现在还具有AUDIT来替换用于审核活动的Profiler跟踪。它类似,但有自己的配置UI和UI来查看结果
答案 3 :(得分:0)
您可以设置探查器跟踪以捕获审核模式对象管理事件,并根据您关注的数据库名称进行过滤。无论何时创建,删除,编辑模式中的对象,它都将在分析器中触发一个事件,该事件包括执行更改的人员和存储过程的名称。
您至少需要这些分析器列: ApplicationName - 应用程序用户的名称在进行更改时正在运行 DatabaseName - 包含对象更改的数据库 EventSubClass - 操作类型显示Alter,Modify,Drop,Create等 LoginName - 用户进行更改 ObjectName - 受影响的对象
答案 4 :(得分:0)
[已经很晚了,但是在审计系统落实到位之前,还会详细说明如何查看谁做出了改变)
其他人已经涵盖了不同的方法,您可以开始审核数据,以监控未来的变化,但如果您最初没有任何审核系统,那么很难找出谁做了什么,什么时候做了历史。
唯一的选择是尝试读取事务日志,假设数据库处于完全恢复模式。问题是默认情况下不支持此功能。选项包括:
有关详细信息,请参阅以下主题:
How to view transaction log in SQL Server 2008
答案 5 :(得分:0)
我同意。它可以是带有过滤器的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的自动审核或者apexSQL触发器。