当执行 CREATE TABLE 或 ALTER TABLE 操作时,sql server 存储什么类型的审计信息?
-
13-09-2019 - |
题
这个问题的灵感是一个存储过程对我造成了影响,因为它调用了另一个存储过程,该存储过程将数据插入到其架构完全改变的表中。
问题是您在 SQL Server 数据库中有一个表,但您不知道它是如何到达那里的。您没有任何用于自定义审核信息的 DDL 触发器,并且表 DDL 的源代码控制存储库中没有记录。仅使用 SQL Server,您可以获得有关该表的哪些取证数据。
我自己以及任何在类似情况下偶然发现这个问题的人,都不会从有关版本控制和 DDL 触发器的建议中得到帮助。这些都是很棒的前进解决方案,如果公司政治允许我们实施这些解决方案,这个博客上有大量关于这些主题的信息。我和处于我这种情况的人真正需要的是能够从 SQL Server 收集尽可能多的数据片段,以便与我们能想到的任何其他数据相结合。
解决方案
不幸的是,你无法重建发生的事情,除了:
DBA 是否有运行的跟踪和历史记录。SQL Server 2005 有默认跟踪,并且有“黑盒”跟踪,但这些跟踪用于找出崩溃之前发生的情况
如果您有完整恢复模式,那么您可以尝试日志查看器工具(免费红门一号)
根据活动和您的安全模型,您还可以检查 Windows 安全日志以查看谁使用 DDL 权限登录
SQL 事件日志也可能包含信息。例如,如果您启用了记录“权限”错误的跟踪标志,那么您可以看到它何时启动。或者进行更改的人可能生成了记录的其他异常
你可以去问那些有权利的人。这可能是一个真正的错误(例如认为他们在开发中)
其他提示
在下面的查询让我的创造和持续时间修改
SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tbTableInQuestion]') AND type in (N'U')
您应该能够找到在表的创建。交易日志我从来没有使用任何的浏览器工具在这里,我不能告诉你怎么找回来的时间,这一点,但一切都发生在一个事务中,所以它得记录 - 即使是系统表...