怎樣把access轉到SQL SERVER

來源:互聯網
上載者:User

 直接ACCESS裡 工具-資料庫工具 + 生產力-升遷嚮導 資料庫轉過去沒什麼問題。
需要注意2點:
1、由於SQL2000裡面沒有"自動編號",所以你的以"自動編號"設定的欄位都會變成非空的欄位,這就必須手工修改這些欄位,並把他的"標示"選擇"是",種子為"1",增量為"1"。
2,ACCESS轉換成SQL後,原來屬性為"是/否"的欄位將被轉換成非空的"bit",就是0和1,這個你程式裡需要改動進行判斷。

這樣轉了之後 你的程式有好些地方需要調整,因為2個資料庫有些函數用法並不相同,程式不改動就改資料庫可能會出錯,尤其是時間函數。

 

 

 

 

 

 

 

很多朋友想用SQL2000資料庫的編程方法,但是卻又苦於自己是學ACCESS的,對SQL只是一點點的瞭解而已,這裡我給大家提供以下參考---將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資料庫處理中,卻不能用。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.