每当我进行架构更改时,有什么方法可以记录对Schema
a所做的更改?Table
我在这里阅读了一篇关于DDL Triggers的文章。但它没有说明在表的模式中所做的具体更改。
每当我进行架构更改时,有什么方法可以记录对Schema
a所做的更改?Table
我在这里阅读了一篇关于DDL Triggers的文章。但它没有说明在表的模式中所做的具体更改。
这将非常困难,因为在 SSMS 中,表实际上会在后台被删除并重建(取决于架构更改的复杂性以及您是否启用了“防止保存需要重新创建表的更改” SSMS 中的选项) - 记录所有不同类型的更改将是一场噩梦。(约束被删除,只能重新创建 - 当您可能所做的只是重新排列连接表中的列时,批量重新插入、重命名等)
如果您认真对待跟踪架构更改,我强烈建议您编写架构脚本(使用 MSSMS 中的生成脚本选项)并将生成的文件检查到 SVN / SourceSafe / TFS 并使用可用于这些系统的许多比较工具。
或者,您可以使用为您完成所有这些工作的 3rd 方产品,例如 Red Gates SQL Source Control:
http://www.red-gate.com/products/sql-development/sql-source-control/
编辑:您可能会发现这很有用 - 它利用了 Service Broker (SQL 2005+) 和 SSB 队列:
http://www.mssqltips.com/sqlservertip/2121/event-notifications-in-sql-server-for-tracking-changes/
对于这个问题,我可能会使用Event Notifications。尽管我认为 DDL 触发器确实说明了对表所做的特定更改,但仅触发器定义:
Create Trigger tr_DDLNotikums
On DataBase
For **DDL_DATABASE_LEVEL_EVENTS**
Use DDL Trigger In Below Format
CREATE TRIGGER tr_DDL_Database ON DATABASE
FOR DDL_SCHEMA_EVENTS
AS Begin
Insert Into LogTable (XmlColumn)
SELECT EVENTDATA()
End