SQL Server 2005 表更改历史记录
SQL Server 是否维护任何历史记录来跟踪表更改,例如列添加、删除、重命名、类型/长度更改等?我发现很多建议使用存储过程来手动执行此操作。但我很好奇 SQL Server 是否在任何系统表中保留这样的历史记录?谢谢。
Does SQL Server maintains any history to track table alterations like column add, delete, rename, type/ length change etc? I found many suggest to use stored procedures to do this manually. But I'm curious if SQL Server keeps such history in any system tables? Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 SQL Server 2005 及更高版本中,您可以创建数据库级触发器来跟踪表更改。使用类似的内容:
这是日志的一些简单输出:
您可以扩展日志以包含更多列,或者像这个简单示例一样将所有内容转储到一个日志中。
in SQL Server 2005 and up you can create a database level trigger to track table changes. Use something like:
here is some simple output from the log:
you could expand the log to contain more columns, or just dump everything within a one like in this simple example.
事务日志存储所有这些信息,DBCC LOG 命令应该让您查看这些信息,但它是一个未记录的命令。
句法:
The transaction logs store all this information and the DBCC LOG command should let you view that, but it's an undocumented command.
Syntax:
默认情况下,此类信息不会保留在任何 RDBMS 中,因为它可能会使所需的存储要求增加几个数量级,并可能严重降低性能。
触发器可以为您做到这一点。触发器不被视为手动方法 - 它们是数据库设计的核心部分。
This kind of information is not retained in any RDBMS by default because it could increase the required storage requirements by orders of magnitude, and could severely decrease performance.
Triggers can do this for you. Triggers are not considered manual method - they are a core part of database design.