我負責數據庫。 它有大約126個sprocs,大約20個視圖,一些UDF。有一些表格可以爲我們的各種應用程序保存固定的配置數據。如何管理SQL源代碼?
我一直在使用包含IF EXIST ... DELETE GO CREATE PROCEDURE ...的一個大文本文件...用於配置腳本的所有sprocs,udfs,視圖和所有插入/更新。
隨着時間的推移,新的sprocs被添加,或現有的sprocs被改變。
最大的錯誤(據我所知)我在創建這個BIG單個文本文件時所做的是在文本文件的開頭使用新/更改的sprocs代碼。但是,我忘了排除以前的新代碼/更改的sprocs代碼。讓我們說明這一點:
說我的大腳本(1版)包含的腳本來創建存儲過程
sp 1
sp 2
sp 3
view 1
view 2
的DATABSE的版本表獲取與版本更新1.
現在有在SP的某些變化2.因此,最大的腳本的版本2現在是:
sp2 --> (newly added)
sp1
sp2
sp3
view 1
view 2
所以,很顯然運行BIG腳本版本2將不會更新我的SP 2
我很晚才意識到這與100多個sprocs。
補救措施:
我創建了一個文件夾結構。每個sproc/view的一個子文件夾。
我已經瀏覽了bgeinning的BIG腳本的最新版本,並將所有腳本的代碼放到了相應的文件夾中。一些腳本在BIG腳本中不止一次地重複。如果有多於一個代碼塊用於創建特定的存儲過程,我會將該早期版本放入另一個稱爲「舊」的子文件夾中。幸運的是,我總是記錄了我對所有sprocs/view等所做的所有更改 - 我記下了日期,版本號以及作爲備註存儲在代碼中的更改的描述。當存在多個代碼塊時,這幫助我瞭解了sprocs的最新版本代碼。
我創建了一個DOS批處理過程來連接所有單獨的腳本來創建我的BIG腳本。我曾嘗試使用.net streamreader/writer與編碼和「£」符號混淆。所以我暫時堅持DOS批處理。
有什麼辦法可以改善整個過程嗎? 目前,我正在通過某種方式記錄BIG腳本的版本以及其各個sproc版本。例如,我喜歡有一些文件的方式
Big Script (version 1) contains
sp 1 version 1
sp 2 version 1
sp 3 version 3
view 1 version 1
view version 1
Big script (version 2) has
sp 1 version 1
sp 2 version 2
sp 3 version 3
view 1 version 1
view 2 version 1
歡迎任何反饋意見。
你爲什麼還要繼續與大腳本鬥爭?使用Big Script創建什麼價值?爲什麼大腳本如此重要?請更新您的問題,爲大腳本提供一些理由。 – 2009-02-22 19:53:03
當我開始時,我有一個BIG腳本和數據庫。該公司正在爲最新的客戶提供最新的數據庫,以及BIG腳本來讓客戶更新他們的舊數據庫。 如果有更好的方法來幫助我擺脫這個BIG腳本,我肯定會這樣做。 – ahmjt 2009-02-25 22:55:46