从ACCESS转至SQLSERVER需要注意的几方面

1、自动增加字段需要重写。在access中经常使用的自动编号字段,在mssql中,他并不是自增型的int,需要手工设置,把导入后的自动编号字段的标识的“否”改为“是”,“种子”和“递增量”都为“1”,才能成为自动编号。


2、所有的默认值都丢失了。主要是数字类型和日期类型


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


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

最主要的还是时间函数的各种修改,这占到了工作量的90%。其一是将所有数据库操作语句中的NOW()转化成GETDATE();其二是datediff和dateadd这类函数需要将第一项中的引号去掉,即datediff('d',date1,date2)改为datediff(day,date1,date2);其三,ACCESS中时间字符串都用#括起来,而MSSQL中是用''来表示的,即等同于一般的字符串;其四有一些时间函数在MSSQL中是不能被辨认的,基本上所有的SQLSERVER中的时间日期函数如下:

day(),  month(),  year()    
dateadd(datepart,  number,  date),  datapart指定对那一部分加,number知道加多少,date指定在谁的基础上加。datepart的取值包括,year,quarter,month,dayofyear,day,week,hour,minute,second,比如明天dateadd(day,1,  getdate())    
datediff(datepart,date1,date2).  datapart和上面一样。整个函数结果是date2  -  date1    
datename(datepart,  date)  取那一部分,返回字符串。    
datepart(datepart,  date)  取一部分,返回整数。    
getdate()当前时间

5、在mssql server中,有许多保留字,在access中是没有的,当你把数据导入到mssql的时候,问题就出来了。mssql在导入的时候,会自动给这些字段(包括数据库中的表名)加上“[字段名]”,因此,你必须修改你的脚本,把相应的字段名字(或者表名字)加上中括号,或改变字段名字为不是mssql的保留字


6、在用access关于时间的使用,大家喜欢使用“select * from aaaa while time="&now()”这样的sql语句,然而,在mssql中没有“now()”这个函数,而是使用“getdate()”,所以,所有的sql语句中的“now()”必须换成“getdate()”。


7、日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对
SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。


8、转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。有时用smalldatetime型时,转化失败,而用datetime型时,转化成功


9、isnull(rowname)要改成rowname = null


10、CursorType要改成1,也就是打开数据库时要给出第一个数字参数为1,否则记录可能显示不完整


11、备注类型要通过cast(column as varchar)来使用


12、true/false类型不能使用,要变为1/0


13、在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL SERVER数据库处理中,却不能用


14、在access的sql语句中的时间使用变量查询的时候,大家一般使用"select * from aaaa while time=#"&变量名&"#",在mssql中是不行的,他的语法是“select * from aaaa while time='"&变量名&"'"”。(意思是让你把日期时间变量当成字符串来使用,呵呵~~~)



15、有可能rs.update失败,修改成update 表名 set 字段=‘值’ 这样通过(遇到的情况,提示为:
Microsoft OLE DB Provider for SQL Server 错误 '80040e38' 

乐观并发检查失败。已在此游标之外修改了该行。 

/Admin_ClassOrder.asp,行 164 )


16、access里面除法可以使用"\"或者"/",MSSQL里面只能使用"/"
 

时间:2008-05-01 | 分类:技术文摘 | 标签: access_to_sqlserver 
评论列表
暂无评论
发表评论
昵称
邮箱
内容