首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MS SQL审核

MS SQL审核
EN

Stack Overflow用户
提问于 2009-01-08 18:40:24
回答 5查看 884关注 0票数 0

我在工作中遇到了一个数据库问题。目前已经有了审计,但它很笨重,需要大量的维护,而且在一些方面还不够。因此,我正在替换它。

我想以一种尽可能通用的方式来做这件事,并设计了表格,以及一切将如何链接和更新。

现在,这一切都很好,但我希望能够编写一种通用的方法来将记录插入到这些审计表中。(无需为要更改的每个表中的每一列输入命令。)

在存储过程中有没有迭代表中所有列的方法?我想以这样的方式写这篇文章,它将与多个表一起工作,并自动拾取和审计添加的列等等。

有什么想法吗?

编辑:我想我应该澄清一下。我将审计表格中的数据。但是我将使用相同的表来存储数据库中每个表的审计数据。

而且我不能使用触发器,因为通常当更新发生时,它会跨多个表发生,但我希望所有这些更新都是单个更改集的一部分。

这不是问题,因为我可以从一个存储的进程中完成所有的更新。我更喜欢像循环这样的方式,这样我就可以获得所有更新的字段,找出哪些字段发生了更改,并将这些更改的字段插入到审计表中。

我希望在不使用每个列的if语句和insert语句的情况下完成此操作。(通过在通用循环中执行此操作,它将自动处理添加的列,而不会受到删除列的干扰)

EN

回答 5

Stack Overflow用户

发布于 2009-01-08 18:51:12

通过“添加列”,我猜你是想审计DDL。如果您使用SQL2005,那么您需要this link

如果不使用SQL2005,那么您可能希望使用众多SQL模式比较工具中的一个,比如SQL Red盖茨工具集可能包含一些内容。

如果您没有$ for工具,那么您可能只想对information_schema.tables和information_schema.columns运行定期查询。通过定期在永久表中捕获这些行,您可以确定它们何时获得或丢失了行(因此发生了模式更改)

如果你正在做数据审计而不是,那么你会想要代码生成一些触发器,同样使用information_schema.tables和information_schema.columns。

票数 1
EN

Stack Overflow用户

发布于 2009-01-08 18:44:47

可能会有性能方面的考虑,但您可以将insert和update触发器添加到所有表中,并将触发器插入到审计表中。

票数 0
EN

Stack Overflow用户

发布于 2009-01-08 18:53:04

使用DDL触发器(假设您有SQL Server 2005+)!

http://www.sqlteam.com/article/using-ddl-triggers-in-sql-server-2005-to-capture-schema-changes

http://technet.microsoft.com/en-us/library/ms189871.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/425353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档