1. 程式人生 > >ASP網站ACCESS資料庫轉MS SQL以及遠端連線MS SQL資料庫的經驗

ASP網站ACCESS資料庫轉MS SQL以及遠端連線MS SQL資料庫的經驗

自己的一個網站,之前一直使用ASP+ACCESS的組合。但access資料庫的不足和弊端是顯而易見的。近期,隨著網站規模的擴大,對資料庫的要求提高了,打算用MS SQL替換ACCESS資料庫,上網查了一下,雖然有點小繁瑣,但總體不是很難。於是決定實施,大致經歷了本地個人電腦安裝SQL Server 2008、用第三方工具轉換ACCESS為MSSQL、ASP網站程式程式碼修改和本地除錯、本地MSSQL資料庫上傳到虛擬主機遠端資料庫、ASP網站連線虛擬主機資料庫及除錯等階段。其中,用第三方工具轉換ACCESS為MSSQL、ASP網站程式程式碼修改和本地除錯等環節比預想的要簡單,遇到的問題不是很複雜,最終都順利解決啦。

首先是SQL Server的安裝,找到了這個網址可以下載:

最後順利安裝成功並開啟主程式執行,不算前面的下載,從點選安裝到成功執行,花費大概不到一小時。

第二步是將ACCESS資料庫中的錶轉到SQL Server中。參考了下面這個網頁:

使用CooSel2.0 CreateSQL V1.05這個第三方工具將資料匯入到MSSQL中。下面是這個軟體的文件說明:

我選擇的是EXE版本,使用的是生成升遷SQL指令碼,儲存為*.sql這個功能,然後在查詢分析器進行呼叫,就會自動建立起原ACCESS中的全部表。具體細節不在贅述。在上面那個網頁中,還提到了,資料錶轉換後,有些欄位需要手工調整的問題。主要涉及自動編號、真假型、時間日期等型別的資料。不過我在轉換完成後,沒發現上述型別的欄位有問題,可能是網頁中提到的MSSQL版本比較老的緣故吧,我猜MSSQL在新版本中增強了對access資料轉換的支援力度,不相容的問題減少了。

第三步是ASP網站程式程式碼修改。主要是由於MSSQL和ACCESS所使用的SQL語句會有區別。這個就需要你在本地執行網站程式,逐個開啟那些動態ASP頁面,檢視是否報錯,出錯在第幾行,然後相應的修改。遇到問題比較多的有如下幾種SQL語句:

①ACCESS中SQL語句對真假型欄位一般會寫“aa=true”這個表示式,而在MSSQL中必須要換成“aa=1”這樣的寫法,否則會出錯。false的話就對應0;②再比如:access中SQL的刪除語句是“delete * from 表名 where……”,而在MSSQL中,需要把*去掉,直接寫“delete from 表名 where……”;③MSSQL不支援在SQL語句中使用VBscript函式,比如在where後面判斷某個欄位是否包含某個字串,我們可以用:“where instr(aa,"abcd")>0”,使用了instr這個字串包含的函式,但在MSSQL中是不允許的。可以用“where aa like ‘%abcd%’”這個語句來代替。

經過對前臺和後臺的動態網頁進行逐個測試後,排除了能夠主動發現的所有不相容的SQL語句,第三步就算完成了。

第四步是將本地MSSQL資料庫上傳到虛擬主機遠端資料庫。這個步驟對我而言,也是初次探索。因為以前的網站資料庫都是access的,直接以FTP上傳到伺服器即可。這與mysql、mssql等主流的資料庫不太一樣,access的資料庫以普通檔案(*.mdb)的形式存放在檔案系統中,不涉及到單獨進行資料庫的連線和管理。

在這個步驟,我開啟我自己的虛擬主機管理後臺,找到了購買時相配套的資料庫,主要需要資料庫的主機IP,資料庫的名稱、資料庫使用者名稱,資料庫使用者密碼等幾項。這些都是你在購買虛擬主機或資料庫的時候自己設定或預設給出的。找到這些專案後,然後在本地MSSQL中開啟需要上傳到遠端的那個資料庫(就是你的網站資料庫)。右擊資料庫名稱,選擇“任務”—“匯出資料”(下圖滑鼠位置有誤,應該是下面的匯出資料)

連線物件管理器。

然後在視窗中輸入虛擬主機後臺中找到的資料庫IP、使用者名稱和密碼。

打開向導,先選擇本地資料來源,選擇好需要匯出的資料庫

點選下一步,然後需要選擇和設定匯入的目標資料庫。伺服器名稱這裡,填寫虛擬主機後臺提供的資料庫IP地址,身份驗證這裡,選擇sql server驗證,輸入虛擬主機後臺提供的資料庫使用者名稱和密碼,然後資料庫選擇虛擬主機後臺的資料庫名稱。

然後點選下一步,提示你要匯出哪些資料表,選擇後就會開始進行資料傳輸,最終會出現結果,告訴你傳了那幾張表,每張表分別完成了多少條記錄。這時,你的資料庫已經成功上傳到IDC的資料庫中,可以用網站去連線這個資料庫了。

第五步是修改網站的資料庫連線語句。這裡有個小插曲,一開始我在本地電腦除錯時,用了下面的語句可以成功連線資料庫進行一切訪問和增刪改操作:

Set conn=server.CreateObject("adodb.connection") connstr="Driver={SQL Server};server=(local);uid=wode;pwd=454654;database=oppo;" conn.open connstr

但在遠端網站伺服器,按照這個格式修改連線語句,總是出錯,無法成功連線資料庫。一開始我以為會是伺服器埠配置的問題,後來發現不是,最後用了下面這種連線語句方式才得以成功連線。

Set conn=server.CreateObject("adodb.connection") connstr="Provider=SQLOLEDB;server=205.172.29.151;database=oppo;uid=wode;pwd=454654" conn.open connstr