Access轉成SQL資料庫的方法,access轉sql資料庫
首先,我說的是在ACCESS2000,SQL2000之間轉換,其他的我也還沒有嘗試過,希望大家多多實驗,肯定是有辦法的。
轉換的方法
1、開啟“控制台”下“管理工具”中的“資料庫源”。
2、按”添加“添加一個新的資料來源,在選擇欄裡選“Driver do microsoft Access (*.mdb)”,完成後將出現一個框,在“資料庫源”裡面輸入你想寫的名稱,我取名叫“ABC”,說明不需要填,接著,按下面的選擇,尋找你的資料庫地址和選中(注意,請先備份自己的ACCESS資料庫),然後確定。資料來源在這裡建好了,剩下轉換了。
3、開啟SQL2000企業管理器,進入資料庫,建立一個空的資料庫“ABC”。
4、選擇建立立的資料庫,按滑鼠右鍵,選擇“所有任務”下“匯入資料”,按“下一步”繼續。
5、在資料庫源下拉但中選擇”Driver do microsoft Access(*.mdb)“,在”使用者/系統DSN“中,選種你剛才添加的”ABC“,按 ”下一步“。
6、“目的”不需要修改,選擇伺服器(一般下為自己的本機local,也可以選擇伺服器位址或者區域網路地址,確定你的許可權是否可以操作,),使用WINDOWS 身分識別驗證指用自己的系統管理員身份操作,使用SQL身份操作驗證可以用於網站的操作,推薦用後者。
7、選上使用SQL身份操作驗證後,填寫你的使用者名稱和密碼,我自己選擇的是系統預設號碼sa,****,資料庫選擇剛建立的ABC,按下一步。
8、這一步的兩個單項選擇,從資料來源複製表和視圖與用一條查詢指令指定要傳輸的資料,選擇前者,按下一步繼續。
9、這裡將出現你自己ACCESS資料庫的表,按全選後,下一步。
10、DTS匯入/匯出嚮導,看立即運行被選中按下一步。
11、按完成繼續。
12、這個步驟你將看到你的資料被匯入SQL2000裡面,當出現已經成功把XXX個表匯入到資料庫的字樣,而且所有的表前面都有綠色的勾,就表示成功匯入所有資料,如果中途出現問題或者表前面有紅色的叉的話,說明該表沒有成功匯入,這時就要回去查看自己的操作是否正確了。
最近又在升級一個程式,使其支援多資料庫。
原來的程式資料庫為SQL Server,所以使用SQL Server 的“匯入和匯出資料”功能將一個 SQL Server 資料庫轉換成了Access資料庫,但其中發現了一些問題,但也找到瞭解決方案,一併記錄於此:
1、轉換程式會將SQL Server的視圖轉換成表,而不是Access的查詢;
2、在為欄位設定預設值為空白字元的時候,SQL Server用”,而Access用”";
3、Access中沒有GetDate()函數,應該使用Now()函數代替;
4、Access沒有SQL Server用來擷取用戶端機器名的host_name()函數;
5、Access中沒有Case When Then語句,但可以用IIF()函數類比實現功能;
6、發現:Access使用的是Visual Basic的語言結構和函數;
7、轉換程式會正確轉換SQL Server欄位的 IS NULL 屬性;
8、Access也支援多欄位的索引,只是設定方法有點特別(參見協助);
9、SQL Server中bit型的1、0值,在Access中為True和False;
10、在Access中使用多個LEFT JOIN這樣的語句時,必須用括弧做相關的界定;
11、Access的SQL沒有備註陳述式,SQL Server的/**/無法通用;
12、一條Insert語句在Access查詢中正常運行,但在程式中出現“Insert Into 語句的語法錯誤”,後來發現原來是語句中的一個列名是Access的關鍵字(用[]界定可解決問題),但奇怪的是將該語句放置到Access的查詢中執行卻不會出錯。
需要對轉換後的Access資料庫進行以下項目的檢查,以確保與SQL Server一致:
1、主鍵。轉換後的Access資料庫都沒有主鍵,需自己設定;
2、自增欄位。轉換程式會將SQL Server的自增欄位轉換為數字型,需手動修改為Access的“自動編號”類型;
3、預設值。轉換程式不會轉換SQL Server中設定的預設值,需手動設定;
4、bigint型欄位。轉換程式會將SQL Server的bigint轉換為小數,須手動調整為Access的整型或長整型;
5、索引。轉換程式不會轉換索引,需手動在Access中建立索引。
在Delphi下,想讓程式同時支援Access及SQL Server,需注意以下方面:
1、在Access中使用 SELECT * FROM Books WHERE RegDate = ‘2007-5-1′ 是會出現“標準運算式中資料類型不匹配”這樣的錯誤的(RegDate是日期型),必須使用SELECT * FROM Books WHERE RegDate = #2007-5-1# 或 SELECT * FROM Books WHERE RegDate = CDate('2007-5-1′);
但在Access中,Insert、delete和update中使用單引號界定日期卻是可以正常執行的。
2、盡量不要使用SQL Server的bigint類型,尤其該欄位是自增的情況下;
3、Access的varchar(文本)型最大隻有255,所以如果一個文本型欄位大於255時,最好定義成備忘型(Access中)或text型(SQL Server中);
4、在Access中一般會出現如下錯誤:不正常地定義參數對象。提供了不一致或不完整的資訊。將相應Query的ParamCheck設為False即可;
5、Access中的邏輯值在庫中為-1和0,而SQL Server中為1和0,所以寫BoolField = 1這樣的語句有相容性問題,應該改為BoolField <> 0;
6、在Access中有主鍵的Query才可更新,而SQL Server無此要求。
以上就是Access和SQL資料庫相互轉換的方法及注意事項。