国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

將ACCESS轉化成SQL2000要注意的問題

2024-07-21 02:09:39
字體:
來源:轉載
供稿:網友

很多朋友想用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是有很多不同的.


四、相關的字段問題
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中經常使用的自動編號字段,導入到mssql后,他并不是自增型的int,需要手工設置,把導入后的自動編號字段的標識的“否”改為“是”,“種子”和“遞增量”都為“1”,才能成為自動編號


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


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


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


所有datediff('ww', time1, time2)要改成datediff(week, time1, time2)


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


在mssql server中,有許多保留字,在access中是沒有的,當你把數據導入到mssql的時候,問題就出來了。mssql在導入的時候,會自動給這些字段(包括數據庫中的表名)加上“[字段名]”,因此,你必須修改你的腳本,把相應的字段名字(或者表名字)加上中括號,或改變字段名字為不是mssql的保留字


在用access關于時間的使用,大家喜歡使用“select * from aaaa while time="&now()”這樣的sql語句,然而,在mssql中沒有“now()”這個函數,而是使用“getdate()”,所以,所有的sql語句中的“now()”必須換成“getdate()”。


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


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


isnull(rowname)要改成rowname = null


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


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


true/false類型不能使用,要變為1/0


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


在對access數據庫處理中,sql語句中直接可以用一些vb的函數,像cstr()函數,而對sql server數據庫處理中,卻不能用


在access的sql語句中的時間使用變量查詢的時候,大家一般使用"select * from aaaa while time=#"&變量名&"#",在mssql中是不行的,他的語法是“select * from aaaa while time='"&變量名&"'"”。(意思是讓你把日期時間變量當成字符串來使用,呵呵~~~)


原來asp里的“delete * from ……”要改為“delete from ……”


有可能rs.update失敗,修改成update 表名 set 字段=‘值’ 這樣通過(遇到的情況,提示為:
microsoft ole db provider for sql server 錯誤 '80040e38'

樂觀并發檢查失敗。已在此游標之外修改了該行。

/admin_classorder.asp,行 164 )


access里面除法可以使用"/"或者"/",mssql里面只能使用"/"

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 屏东县| 崇信县| 凤山县| 大庆市| 普安县| 绍兴县| 海门市| 曲沃县| 行唐县| 剑川县| 黄石市| 勃利县| 武山县| 合山市| 咸阳市| 青州市| 乃东县| 阳曲县| 青川县| 沛县| 鹿邑县| 康定县| 中宁县| 吴桥县| 翁牛特旗| 邳州市| 蚌埠市| 山阳县| 江口县| 卓尼县| 桂林市| 景洪市| 建始县| 独山县| 出国| 武陟县| 老河口市| 商洛市| 长沙县| 黑河市| 阿拉尔市|