利用動網提供的論壇程序創建了一個內部論壇。原來,這個論壇是發布在Windows2000的IIS5上的。他的數據庫用的是Access。可是,當我將這個論壇遷移到Windows2003上以後,發現經常死掉。到網上找了一下,並且咨詢了微軟的工程師,很多人都認為i這跟他使用Access有關。並且,我想在公司內部網站首頁增加一個跑馬燈來顯示論壇中的新帖子,可是,如果繼續用Access的話,訪問起來不是那麼方便。於是決定遷移到SQl中。
第一步:將數據導入SQL Server
進到SQL Server企業管理器,新建一個數據庫,然後,選擇導入數據,選擇Access數據庫作為導入源,導入所有的數據。
第二步:修改數據表
通過這種方式建立的數據表,是沒有主鍵和默認值的,參照原來的Access庫修改各個表。(這個比較煩,但是一定得做,因為後面的程序中會用到這些默認值)
第三步:修改程序
將站點遷移到相應的服務器,創建新的站點。首先,要改的就是數據庫聯接.由於Access中的一些函數和SqL中的一些函數不一樣,所以,程序會報錯,根據程序的報錯信息修改相關的地方。這裡主要要修改兩個地方:
SqL語句中的Now()函數:
在Access中使用Now()函數來獲取當前時間,而在SQL Server中用Getdate()函數來獲取當前時間。但是,由於原來的程序是采用vb Script寫的,VbScript中也采用Now()函數獲取當前時間,所以要小心Sql語句中的Datediff函數的第一個參數:
在Access中DateDiff的第一個參數用引號,並且只用一個字母來表示比較的部分,而在SqLServer中不需要引號,並且用全稱和或者簡稱來表示,並且簡稱也是兩個字母的。
改完後逐項測試,改正所有的錯誤(都挺簡單的)。
程序就可以正常使用了,前後時間可能花了4個多小時吧。
我想到以下幾點:
1、如果,我們要使用Access數據庫,為了以後遷移方便,我們應該盡量避免使用數據庫的函數,而是多用程序語言的函數,在SQL語句的外面解決計算問題。如果,不能避免要使用這些數據庫函數,我們也應該在代碼中設置明顯的注釋標記,以便於以後遷移。
2、我們在設計程序時候,要充分考慮數據庫的遷移的需要,在插入語句、查詢語句等語句的時候要盡量采用標准的SqL語法,並且要不厭其煩得插入默認值,而不要依賴數據庫提供默認值,這樣做,對以後的改進可能會有好處。