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里面只能使用"/"
评论