將ACCESS轉化成SQL2000

將ACCESS轉化成SQL2000的方法和注意事項
一,首先,我說的是在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個表導入到數據庫“的字樣,而且所有的表前面都有綠色的勾,就表示成功導入所有數據,如果中途出現問題或者表前面有紅色的叉的話,說明該表沒有成功導入,這時就要回去查看自己的操作是否正確了.

三,數據修改
1,由於SQL2000裏面沒有“自動編號“,所以你的以“自動編號“設置的字段都會變成非空的字段,這就必須手工修改這些字段,並把他的“標示“選擇“是“,種子爲“1“,增量爲“1“,
2,另外,ACCESS2000轉換成SQL2000後,原來屬性爲“是/否“的字段將被轉換成非空的“bit“,這時候你必須修改成自己想要的屬性了;
3,另外,大家要注意對時間函數的把握.ACCESS與SQL是有很多不同的.

 

ACCESS改爲SQL需要注意哪幾個地方

數據庫導入以後,自動增加字段需要重寫,所有的數字類型需要增加長度,最好用decimal。

所有的默認值都丟失了。主要是數字類型和日期類型。

所有now(),time(),date()要改成getdate()。

所有datediff(‘d‘, time1, time2)要改成datediff(day, time1, time2)

有可能一些true/false類型不能使用,要變爲1/0。

備註類型要通過cast(column as varchar)來使用。

CursorType要改成1,也就是打開數據庫時要給出第一個數字參數爲1,否則記錄可能顯示不完整。

isnull(rowname)要改成rowname = null

ACCESS的數據庫中的自動編號類型在轉化時,sql server並沒有將它設爲自動編號型,我們需在SQL創建語句中加上identity,表示自動編號!

轉化時,跟日期有關的字段,SQL SERVER默認爲smalldatetime型,我們最好將它變爲datetime型,因爲datetime型的範圍比smalldatetime型大。有時用smalldatetime型時,轉化失敗,而用datetime型時,轉化成功。

對此兩種數據庫進行操作的sql語句不全相同,例如:在對ACCESS數據庫進行刪除紀錄時用:“delete * from user where id=10“,而對SQL SERVER數據庫進行刪除是用:“delete user where id=10“.

日期函數不相同,在對ACCESS數據庫處理中,可用date()、time()等函數,但對SQL SERVER數據庫處理中,只能用datediff,dateadd等函數,而不能用date()、time()等函數。

在對ACCESS數據庫處理中,sql語句中直接可以用一些VB的函數,像cstr()函數,而對SQL SERVER數據庫處理中,卻不能用。

 


ACCESS轉SQL SERVER的數據庫的幾點經驗

1.ACCESS的數據庫中的自動編號類型在轉化時,sql server並沒有將它設爲自動編號型,我們需在SQL創建語句中加上identity,表示自動編號!
2.轉化時,跟日期有關的字段,SQL SERVER默認爲smalldatetime型,我們最好將它變爲datetime型,因爲datetime型的範圍比smalldatetime型大。我遇見這種情況,用smalldatetime型時,轉化失敗,而用datetime型時,轉化成功。
3.對此兩種數據庫進行操作的sql語句不全相同,例如:在對ACCESS數據庫進行刪除紀錄時用:“delete * from user where id=10“,而對SQL SERVER數據庫進行刪除是用:“delete user where id=10“.
4.日期函數不相同,在對ACCESS數據庫處理中,可用date()、time()等函數,但對SQL SERVER數據庫處理中,只能用datediff,dateadd等函數,而不能用date()、time()等函數。
5.在對ACCESS數據庫處理中,sql語句中直接可以用一些VB的函數,像cstr()函數,而對SQL SERVER數據庫處理中,卻不能用。

 

錯誤解決方法:

以上是其中access的日期/時間無法導入造成整個表無法導入的錯誤

原因是因爲數據類型的轉換出現了問題.

解決方法:

把時間字段在設計視圖中改爲"文本"格式,然後導入sql2000,在用sql2000還原成相應的時間類型

.boob類型錯誤

access 中“備註”類型出錯

解決方法:驅動問題,把DTS導入數據源的驅動由ODBC改爲OLE DB

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章