|
1、在ACCESS中经常使用的自动编号字段,导入到MSSQL后,他并不是自增型的INT,需要手工设置,把导入后的自动编号字段的标识的“否”改为“是”,“种子”和“递增量”都为“1”,才能成为自动编号;
2、在MSSQL SERVER中,有许多保留字,在ACCESS中是没有的,当你把数据导入到MSSQL的时候,问题就出来了。MSSQL在导入的时候,会自动给这些字段(包括数据库中的表名)加上“[字段名]”,因此,你必须修改你的脚本,把相应的字段名字(或者表名字)加上中括号,或改变字段名字为不是MSSQL的保留字。
例如user应该写为[user]
(具体是那些,请参考有关资料)
3、在用ACCESS关于时间的使用,大家喜欢使用“SELECT * FROM AAAA WHILE TIME="&NOW()”这样的SQL语句,然而,在MSSQL中没有“NOW()”这个函数,而是使用“GETDATE()”,所以,所有的SQL语句中的“NOW()”必须换成 “GETDATE()”,请吧sql语句和默认值改为getdate()。
4、在ACCESS中SQL如果用到mid(str,bengin,strlen),在MSSQL中没有这个函数,可以用这个代替left(right(str,len(str)-1),strlen),例如
Mid(''202.097.181.059'',5,3)
改为:left(right(''202.97.181.059'',len(''202.097.181.059'')-),3)
5、在ACCESS的SQL语句中的时间使用变量查询的时候,大家一般使用 “SELECT * FROM AAAA WHILE TIME=#"&变量名&"#"”,在MSSQL中是不行的,他的语法是 “SELECT * FROM AAAA WHILE TIME=''"&变量名&"''"”。(意思是让你把日期时间变量当成字符串来使用,呵呵~~~)
6、在需要用到时间计算的时候,通常大家使用 “SELECT * FROM AAAA WHERE DATEDIFF(''dd'',#"&NOW()&"#,被比较的字段名)>0”这样的语法,在使用到MSSQL的时候是绝对通不过的,即使把#"&NOW()&"# 换成了 ''"&GETDATE()&"''也没有用,因为MSSQL中的DATEDIFF()函数不认识“''计算类型''”里的单引号,你必须使用双引号,并且使用两个(ASP的语法规则)。因此这样的语句应该换成 “SELECT * FROM AAAA WHERE DATEDIFF(""dd"",''"&GETDATE()&"'',被比较的字段名)>0”。
7、在ACCESS数据表中的“是/否”类型字段,导入到MSSQL后,是BIT字段,他的值不再是“TRUE”或“FALSE”,而是“1”和“0”,并且“1”和“0”在ASP中并不绝对等同于“TRUE”或“FALSE”,因此在引用这些数据的时候,要加以注意。
8、ACCESS中备注型在MSSQL中改为TEXT或者NTEXT性,长度默认为16就可以,不影响贴子长度!
9、ACCESS中SQL语句 delete * from 表名.... 再MS SQL中改为delete from....
10、ACCESS 中的好多默认值在MSSQL中需要手工添加,特别是int型,请对照改动! |
|