在我进行架构更改时,有没有办法记录Schema
的{{1}}所做的更改?
我正在阅读一篇关于 DDL Triggers 的文章。但它没有说明表格模式中的具体变化。
答案 0 :(得分:1)
这将非常困难,因为SSMS中的表实际上经常被删除并在后台重建(取决于模式更改的复杂性以及是否启用了“阻止保存需要表格的更改”重新创建“SSMS中的选项” - 记录所有不同类型的更改将是一场噩梦。 (约束被删除,只是重新创建 - 批量重新插入,重命名等等,当你所做的一切都是在连接表中重新排列的列)
如果您认真跟踪架构更改,我强烈建议您编写架构脚本(使用MSSMS中的生成脚本选项)&检查生成的文件到SVN / SourceSafe / TFS&使用这些系统可用的许多比较工具。
或者,您可以使用第三方产品为您完成所有这些,例如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/
答案 1 :(得分:1)
对于这个问题,我可能会使用Event Notifications。虽然我认为DDL触发器确实告诉了对表的具体更改,但只是触发定义:
Create Trigger tr_DDLNotikums
On DataBase
For **DDL_DATABASE_LEVEL_EVENTS**
答案 2 :(得分:0)
以下格式使用DDL触发器
CREATE TRIGGER tr_DDL_Database ON DATABASE
FOR DDL_SCHEMA_EVENTS
AS Begin
Insert Into LogTable (XmlColumn)
SELECT EVENTDATA()
End