2013-10-31 63 views
1

我需要審覈對數據庫所做的DDL更改。這些更改需要在以後的許多其他數據庫中進行復制。我發現here可以啓用DDL觸發器來跟蹤DDL活動,並且這對於create tabledrop table操作非常有用,因爲觸發器獲取了已執行的T-SQL,並且我可以愉快地將它存儲在某個地方,並簡單地執行它稍後的其他服務器。SQL Server DDL更改(列名,類型)

我遇到的問題是alter操作:當從Management Studio更改列名稱時,生成的事件不包含有關列的任何信息!它只是說,該表被鎖......更重要的是,如果有很多列在一次改變(比如,列 =>OOF,而且,列酒吧 =>RAB)事件被觸發只有一次!

我的窮人的解決方案是在alter操作之前和之後有一個表來存儲將要改變的表的結構。這樣,我可以比較兩種結構並找出發生在哪一列上的事情。

但之前我這樣做,我想知道是否有可能使用SQL Server的其他功能,我忽略了,或者有更好的方法。你會怎麼做呢?

+0

「http://technet.microsoft.com/en-us/library/bb522542(v=sql.105).aspx」這裏你會發現所有的ddl事件你可以跟蹤。如果從SSMS發生更改,則無法在DDL觸發器中進行控制。而是編寫服務器級別的觸發器來僅允許使用t-sql命令進行更改。 –

+0

該鏈接似乎已被破壞...我恐怕不能禁止用戶修改SSMS中的表格...... – ferc

回答

-1

SQL Server沒有關於您的需要的特殊功能。您可以使用觸發器,但它們需要大量的T-SQL編碼以實現正確的功能。快速解決方案將是一些第三方工具,但它們不是免費的。請看看第三方工具https://stackoverflow.com/a/18850705/2808398