1

SQL Server 2005 中是否有内置的方式来审计特别是删除存储过程之类的事情?有我可以查询的历史记录表吗?我们有一个神秘的sproc,现在已经消失了几次。

4

6 回答 6

3

您可以使用 DDL 触发器构建它:

http://msdn.microsoft.com/en-us/library/ms190989.aspx

于 2008-12-11T17:59:50.943 回答
2

仅当您使用DDL 触发器或使用探查器跟踪文本“%DROP%PROC%procname%”时

于 2008-12-11T18:00:16.403 回答
1

请注意,在 SQL Server 2008 中,他们现在还具有 AUDIT 来替换 Profiler Traces 以进行审计活动。类似但有自己的配置UI和查看结果的UI

于 2008-12-12T16:27:45.080 回答
0

您可以设置探查器跟踪以捕获审核架构对象管理事件并根据您关心的数据库名称进行过滤。每当创建、删除、编辑模式中的对象时,它都会在分析器中触发一个事件,其中包括进行更改的人员和存储过程的名称。

您至少需要以下分析器列: ApplicationName - 应用程序用户在进行更改时正在运行的名称 DatabaseName - 包含更改的对象的数据库 EventSubClass - 操作类型显示 Alter、Modify、Drop、Create 等 LoginName - 用户进行更改 ObjectName - 对象做作的

于 2008-12-12T16:26:40.153 回答
0

[较晚的一个,但添加了有关如何在审计系统实施之前查看谁进行了更改的详细信息]

其他人已经介绍了您可以开始审计数据以监控未来变化的不同方式,但是如果您最初没有任何审计系统,那么很难找出历史上谁做了什么以及什么时候做了什么。

唯一的选择是尝试读取事务日志,假设数据库处于完全恢复模式。问题是默认情况下不支持此功能。选项是:

有关更多详细信息,请参阅这些主题:

如何在 SQL Server 2008 中查看事务日志

SQL Server 事务日志浏览器/分析器

如何在 SQL Server Management Studio 中查看查询历史记录

于 2013-07-23T20:56:09.840 回答
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 的 Auto Audit 或 apexSQL 触发器。

于 2015-01-29T03:36:57.277 回答