2012-05-15 64 views
1

每當我進行架構更改時,是否有任何方法記錄TableSchema中所做的更改?日誌表架構變化

我在這裏讀到一篇關於的文章DDL Triggers。但是它沒有說明表格模式中的具體變化。

+0

這是一個部署的問題,但答案顯然是DDL腳本的新版本和舊版本應在源控制,您可以輕鬆區分它們並查看有關更改的評論。如果這沒有幫助,您需要說明如何對架構進行更改,即使用哪些工具? – Pondlife

+0

喜歡,無論何時在SSMS中,我都會在表格設計中進行更改。在保存表格設計時,應該調用觸發器來記錄所做的更改。 – Nilish

+0

有關事件通知的內容? –

回答

1

這將是非常困難的,因爲在SSMS中經常出現表格被丟棄和重建(取決於模式更改的複雜程度&無論您是否啓用了「阻止保存需要表格的更改重新創建「SSMS中的選項) - 記錄所有不同類型的更改將是一場噩夢。 (約束被刪除,只能被重新創建 - 批量重新插入,重命名等,當你所有可能已經完成重新排列的列連接表)

如果你是認真的跟蹤架構的變化,我會強烈建議您使用腳本架構(使用MSSMS中的生成腳本選項)&檢查生成的文件到SVN/SourceSafe/TFS中&使用這些系統可用的許多比較工具。

或者,您可以使用該做的這一切都爲您的第三方產品,如紅蓋茨的SQL源控制:

http://www.red-gate.com/products/sql-development/sql-source-control/

編輯:您可能會發現這個有用 - 它利用了服務代理(SQL 2005+)和SSB隊列:

http://www.mssqltips.com/sqlservertip/2121/event-notifications-in-sql-server-for-tracking-changes/

0

使用DDL觸發器在以下格式

CREATE TRIGGER tr_DDL_Database ON DATABASE 
FOR DDL_SCHEMA_EVENTS 
AS Begin 
    Insert Into LogTable (XmlColumn) 
    SELECT EVENTDATA() 
End 
1

對於這個問題,我可能會使用Event Notifications。雖然DDL觸發器在我看來就告訴表提出了具體的修改,只是觸發定義:

Create Trigger tr_DDLNotikums 
    On DataBase 
For **DDL_DATABASE_LEVEL_EVENTS**