2

每当我进行架构更改时,有什么方法可以记录对Schemaa所做的更改?Table

我在这里阅读了一篇关于DDL Triggers的文章。但它没有说明在表的模式中所做的具体更改。

4

3 回答 3

1

这将非常困难,因为在 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/

于 2012-05-15T12:23:48.880 回答
1

对于这个问题,我可能会使用Event Notifications。尽管我认为 DDL 触发器确实说明了对表所做的特定更改,但仅触发器定义:

Create Trigger tr_DDLNotikums
    On DataBase
For **DDL_DATABASE_LEVEL_EVENTS** 
于 2012-06-02T11:39:28.257 回答
0

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
于 2012-05-21T23:06:31.310 回答