2009-09-11 48 views
0

我知道自動生成SQL更改工具存在,但我想創建一個非常輕量級的工具。創建一個適度的自動生成SQL更改腳本?

目前,我手動登錄任何存儲過程或表的修改(或新的存儲過程或表),而這是發佈/釋放其佔用時間(因此,儘管這些工具存在)

我只是想在非常有效自動化SQL腳本生成部分。我知道,SQL可以設置爲記錄(或插入一個記錄),當發生某些數據庫更改(這將有效地取代記錄更改的第一個手動部分),我已經找到教程如何設置這個,所以我在那裏確定。

我想知道怎麼做的部分:

鑑於包含關於(新/改變存儲過程和新的/改變表)我怎樣才能再生成SQL腳本數據的表?

這個自動生成是否可以在SQL中完成(例如任何函數/命令?),還是我不得不求助於編寫一個程序來吐出SQL腳本?

+0

確定,稍後挖掘一些內置函數sp_HelpText'Stored_proc_name' 返回存儲過程的內容,albiet與'CREATE',但是對於更改過的存儲過程進行字符串替換會很簡單。 我現在需要能夠自動更改腳本表,例如添加/刪除/更改字段? – Darknight 2009-09-12 00:30:57

+0

也自動生成添加新表? <我想那個應該相當簡單? – Darknight 2009-09-12 00:31:40

回答

1

我認爲處理這種事情的最好方法是保持像你提到的ddl變更的審計日誌。例如,在sql server 2005中,您可以觸發一個「AFTER DDL_TABLE_EVENTS」,並使用EVENT()函數獲取ddl修改的內容(如xml)。假設你有你的ddl修改觸發器寫入一個表,其中包含訂購的修改列表,你可以在其他服務器上重播 - 比如dev來測試prod。當您準備將目標服務器與源服務器的高度相同時,請編寫腳本 - 甚至是一個sproc或函數,以將ddl changelog錶轉儲爲文本文件。