access数据库转为MSSQL要注意的问题

来源:互联网 发布:excel表无法粘贴数据 编辑:程序博客网 时间:2024/05/22 18:56

access数据库转换为ms sql server转换方法:

1、开始->Microsoft SQL Server 2008->导入和导出数据(32 位)

2、选择数据源,数据源里选择Microsoft Access,浏览选mdb文件,下一步。

3、选择目标,数据库点新建,名称自定,下一步。

4、复制一个或多个表或视图的数据,下一步。

5、选择源表和源视图,全勾选,选第一个表,点编辑映射;出现列映射框,点击编辑SQL,弹出SQL语句编辑框

在[ID] int NOT NULL,中间加入IDENTITY(1,1),后显示为:[ID] int IDENTITY(1,1) NOT NULL,确定,确定,回到选择源表和源视图框,继续修改其它表,完成后,下一步。
6、立即运行,下一步。
7、完成。
最后用SQL Server Management Studio连接数据库查看刚转换的数据中的表,ID列。标识为True,标识种子为1,标识增量为1,以后添加数据就跟Access里的自动编号效果一样了。

补充:关于主键设置,可以第5步:[ID] int IDENTITY(1,1) NOT NULL, 里插入:Primary key,语句为:

[ID] int Primary key IDENTITY(1,1) NOT NULL,

最后,如果要复制来的id数据不重置(转换后id重新从1来编号),可以勾选第5步列表映射框里:启用标识插入。

access数据库转换为ms sql server转换后要修改的地方
转换后应修改数据库连接,参考:asp连接数据库:access/sqlserver/oracle/mysql各种方法汇总

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

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

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

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

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

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

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

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

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

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

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

15、对此两种数据库进行操作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:"delete * from user where id=10",而对SQL SERVER数据库进行删除是用:"delete user where id=10".

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

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

18、原来ASP里的“Delete * FROM ……”要改为“Delete FROM ……”

19、有可能rs.update失败,修改成update 表名 set 字段=‘值’ 这样通过 20、access里面除法可以使用"\"或者"/",MSSQL里面只能使用"/" 21、在SqlServer中建立主键 22、如果还有问题用:rs.open sql,conn,3,2试试

20、对于asp中的是否类型应将-1改为1

转自:http://www.51xxzl.com/asp/show-201429/20140717222238.html

0 0