乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Access轉(zhuǎn)SqlServer的注意事項(相對完整版)

       悟靜 2009-07-16
      1.         自動增加字段需要重寫。在access中經(jīng)常使用的自動編號字段,導入到mssql后,他并不是自增型的int,需要手工設置,把導入后的自動編號字段的標識的“否”改為“是”,“種子”和“遞增量”都為“1,才能成為自動編號。

      2.         所有的默認值都丟失了。主要是數(shù)字類型和日期類型。以前添加記錄的時候,有些字段是不需要手動用程序賦值的,像日期等,現(xiàn)在則需要再添加多一句rs("newsDate")=now()的。

      3.         所有now(),time(),date()要改成getdate(),網(wǎng)上有這么說的,但是我改了之后程序反而運行不正常。不改倒還可以。

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

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

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

      7.         mssql server中,有許多保留字,在access中是沒有的,當你把數(shù)據(jù)導入到mssql的時候,問題就出來了。mssql在導入的時候,會自動給這些字段(包括數(shù)據(jù)庫中的表名)加上“[字段名]”,如果想去掉[],那么改字段名字為不是mssql的保留字。

      8.         有些地方用conn.execute只能讀取到部分字段的數(shù)據(jù),有些字段的數(shù)據(jù)就讀不到。非常奇怪,查看了很多關(guān)于asp中的rs.openconn.execute的區(qū)別,也沒有找到本質(zhì)的答案。真是奇怪。

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

      10.     轉(zhuǎn)化時,跟日期有關(guān)的字段,SQL SERVER默認為smalldatetime型,我們最好將它變?yōu)?/span>datetime型,因為datetime型的范圍比smalldatetime型大。有時用smalldatetime型時,轉(zhuǎn)化失敗,而用datetime型時,轉(zhuǎn)化成功

      11.     isnull(rowname)要改成rowname = null

      12.     CursorType要改成1,也就是打開數(shù)據(jù)庫時要給出第一個數(shù)字參數(shù)為1,否則記錄可能顯示不完整

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

      14.     true/false類型不能使用,要變?yōu)?/span>1/0

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

      16.     原來ASP里的“DELETE * FROM ……”要改為“DELETE FROM ……”,有部分運作正常,有部分會無效。

      17.     access里面除法可以使用”"”或者”/”,MSSQL里面只能使用”/

      18.     首先如果一開始就需要制作SQLSERVER的網(wǎng)站,那么最好將你的愛機裝上WINDOWS2000或者2003這樣的SERVER版,這樣的版本是支持SQLSERVER正式版的安裝的,而XP只能支持個人版或者開發(fā)版,我沒有裝過,但對于調(diào)試網(wǎng)站而言最好還是在正式版下工作,轉(zhuǎn)化的整個過程不算太復雜,但至少可以省下一些精力。我的愛機是XP,所以只好先用ACCESS調(diào)試。

      19.     好了,當你找到一臺裝有SQLSERVER的機器時,你便可以開始轉(zhuǎn)換并調(diào)試了。

      a)         先利用轉(zhuǎn)化軟件:CooSel2.0 CreateSQL V1.05,我用的這個,非常好用。具體操作的話,我用的是生成升遷SQL腳本,保存為 *.sql文件后,在SQL2000的查詢分析器里調(diào)入執(zhí)行。而SQLSERVER的具體操作在此不便贅述。這樣,你的數(shù)據(jù)庫就轉(zhuǎn)化成了MSSQL數(shù)據(jù)庫

      b)        asp而言,首先是數(shù)據(jù)庫連接文件的修改:這點可以參考動網(wǎng)論壇的conn.asp

      20.     Dim ConnStr

      21.     'sql數(shù)據(jù)庫連接參數(shù):數(shù)據(jù)庫名、用戶密碼、用戶名、連接名(本地用local,外地用IP

      Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName

      SqlDatabaseName = "dvbbs7" '數(shù)據(jù)庫名稱

      SqlPassword = "" '數(shù)據(jù)庫密碼

      SqlUsername = "dvbbs" '數(shù)據(jù)庫用戶名

      SqlLocalName = "(local)"

      ConnStr = "Provider = Sqloledb; User ID = " & SqlUsername & "; Password = " & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source = " & SqlLocalName & ";"

      On Error Resume Next

      Set conn = Server.CreateObject("ADODB.Connection")

      conn.open ConnStr

      a)         這時候你可以先瀏覽一下新的網(wǎng)站了,如果出錯了,也不用擔心,但是有很多頁面已經(jīng)是可以正常顯示了。接著就是對整站程序的修改了。尤其要注意的是:所有的修改都只針對對數(shù)據(jù)庫進行操作的語句,幾乎全是對SQL語句的修改。而在一般的代碼中是絕對不需要修改的!否則會出錯!!

      b)        真假值的判斷。ACCESS提供了布爾值這一數(shù)據(jù)類型,但是在SQLSERVER中,如果你在SQL語句中填寫Where AA=True則是錯誤的,因為MSSQL不支持在數(shù)據(jù)庫中TrueFalse的判斷。這時候你需要將所有SQL語句中的TrueFalse改為10。而在一般的程序中,例如rs("aa")=True則不需要修改!因為這句話并不是對數(shù)據(jù)庫的操作??赡苣銜f這樣改起來,對于大網(wǎng)站而言,是非常麻煩的,的確,但有一些比較簡便的方法。比如在dreamweaver中,你可以利用整個文件夾的查找,找出所有的TrueFalse,然后篩選出對數(shù)據(jù)庫進行操作的TrueFalse并將他們改成10。另外還有一點:在SQLSERVER中也需要更改一下,ACCESS轉(zhuǎn)化后布爾值變成了Bit值,最好將默認值設為0,即與ACCESS一樣設置默認值為False。

      c)        有一些網(wǎng)站中提到:sql數(shù)據(jù)庫表是沒有自動字段的,因此原來access中的自動字段被轉(zhuǎn)換成了普通字段,需要手工改成標識類型,增量為1。這點其實軟件在轉(zhuǎn)化的過程中已經(jīng)幫你完成了,如果你是手工轉(zhuǎn)化的話,確實需要修改標識類型。還有一點我沒有遇到過,但是有的網(wǎng)站也提到了:空值的表示:在access中,判斷空值一般用是否=""來表示,但是這在SQL中往往出錯,如果遇到出錯的問題或者程序運行不正常,可以改成如這樣判斷:where (name is null)。

      d)        如果你在SQL語句中同時使用了VB函數(shù),很遺憾,這在MSSQL中是不能被辨認的,最好的方法是先將他在SQL之外處理,然后存入變量中導入到SQL語句中。

      e)         最主要的還是時間函數(shù)的各種修改,這占到了工作量的90%。其一是將所有數(shù)據(jù)庫操作語句中的NOW()轉(zhuǎn)化成GETDATE();其二是datediffdateadd這類函數(shù)需要將第一項中的引號去掉,即datediff("s",date1,date2)改為datediff(s,date1,date2);其三,ACCESS中時間字符串都用#括起來,而MSSQL中是用''來表示的,即等同于一般的字符串;在accesssql語句中的時間使用變量查詢的時候,大家一般使用”select * from aaaa while time=#&變量名&#”,在mssql中是不行的,他的語法是“select * from aaaa while time=’”&變量名&”‘””。(意思是讓你把日期時間變量當成字符串來使用,呵呵~~~

      22.     其四有一些時間函數(shù)在MSSQL中是不能被辨認的,基本上所有的SQLSERVER中的時間日期函數(shù)如下:

      23.     day(), month(), year()

      24.     dateadd(datepart, number, date), datapart指定對那一部分加,number知道加多少,date指定在誰的基礎上加。datepart的取值包括,year,quarter,month,dayofyear,day,week,hour,minute,second,比如明天dateadd(day,1, getdate())

      25.     datediff(datepart,date1,date2). datapart和上面一樣。整個函數(shù)結(jié)果是date2 - date1

      26.     datename(datepart, date) 取那一部分,返回字符串。

      27.     datepart(datepart, date) 取一部分,返回整數(shù)。

      28.     getdate()當前時間

      最后一個,排序問題:

      我測試程序的時候,發(fā)現(xiàn)剛開始中文的顯示是正常的,后來我更新的時候,讀取出來的正常的中文馬上就變成問號了,而且是數(shù)據(jù)庫記錄里邊的填充的數(shù)據(jù)直接變成問題那種類型。這種現(xiàn)象是由于數(shù)據(jù)庫排序規(guī)則(Collation)指定錯誤造成的,要正確的將中文寫入NVARCHAR字段,要么在SQL語句中文值前加NN'中文值'),要么要確定數(shù)據(jù)庫排序規(guī)則為Chinese_PRC。于是我再新建一個數(shù)據(jù)庫,將排序規(guī)則定為chinses_ci_ai這個,然后再導入數(shù)據(jù)。這樣問題就解決了。

      PS:什么叫排序規(guī)則呢?MS是這樣描述的:" Microsoft SQL Server 2000 中,

      字符串的物理存儲由排序規(guī)則控制。排序規(guī)則指定表示每個字符的位模式以及存

      儲和比較字符所使用的規(guī)則。"

        在查詢分析器內(nèi)執(zhí)行下面語句,可以得到SQL SERVER支持的所有排序規(guī)則。

          select * from ::fn_helpcollations()

      排序規(guī)則名稱由兩部份構(gòu)成,前半部份是指本排序規(guī)則所支持的字符集。

      如:

        Chinese_PRC_CS_AI_WS

      前半部份:指UNICODE字符集,Chinese_PRC_指針對大陸簡體字UNICODE的排序規(guī)則。

      排序規(guī)則的后半部份即后綴 含義:

        _BIN 二進制排序

        _CI(CS) 是否區(qū)分大小寫,CI不區(qū)分,CS區(qū)分

        _AI(AS) 是否區(qū)分重音,AI不區(qū)分,AS區(qū)分   

        _KI(KS) 是否區(qū)分假名類型,KI不區(qū)分,KS區(qū)分 

          _WI(WS) 是否區(qū)分寬度 WI不區(qū)分,WS區(qū)分 

      區(qū)分大小寫:如果想讓比較將大寫字母和小寫字母視為不等,請選擇該選項。

      區(qū)分重音:如果想讓比較將重音和非重音字母視為不等,請選擇該選項。如果選擇該選項,

               比較還將重音不同的字母視為不等。

      區(qū)分假名:如果想讓比較將片假名和平假名日語音節(jié)視為不等,請選擇該選項。

      區(qū)分寬度:如果想讓比較將半角字符和全角字符視為不等,請選擇該選項

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多