您当前的位置是:首页-ASP教程

Access转SQL Server需要注意的几个转换

【发表于】:2011/3/6 10:51:00  已被访问:172次
手工升级ACCESS到SQLSERVER 
1、必须先安装Microsoft Office Access 2003,和SQL Server2000。
2、把旧的数据库备份,备份完成后,用Access 2003打开MDB数据库,在打开时会出现一个警告,不要理会它(安全警告),按打开键,打开后按工具栏——数据库实用工具——转换数据库——转换为2002-2003格式,把数据库转换成2003格式。
3、转换完成后再用Access 2003打开,打开后按工具栏——数据库实用工具——升迁向导——新建数据库——填写SQL数据库登陆名称、密码和要新建的数据库(准备转成新的数据库),按下一步,按“ 》”键,再按下一步,选取所有选项,再按下一步,选择“不对应用程序作任何改动”,再按完成。 
4、打开SQL企业管理器——数据库---选中相应的数据库---右键所有任务-----生成SQL脚本——常规——全部显示——编写全部对象脚本——确定(记住存放的位置)。 
5、用记事本打开刚才生成的SQL脚本,在编辑栏——替换——查找内容为“datetime”替换为“smalldatetime”——替换全部;完成后再在编辑栏——替换——查找内容为“nvarchar”替换为“varchar”——替换全部,完成后保存退出。 
6、打开SQL企业管理器——数据库——点击这个数据库一下新建的数据库,然后在工具栏——SQL查询分析器——文件——打开——“刚才生成的SQL脚本”——查询——执行,然后关闭窗口。
7、再回到SQL企业管理器——数据库——点击这个数据库一下新建的数据库,然后打开工具栏——数据库转换服务——导入数据——下一步——数据源“Microsoft Access”文件名“为旧的数据库”——下一步——再下一步——从源数据复制表和视图——下一步——全选——下一步——立即运行——下一步——完成
方法一: 

在这里,我们谈论的是 Access 开发的升级,如何升级到 SQL Server 2000。你有几种升级方法可以选择。 

1、你可以采用链接表方式,通过链接表链接到 SQL SERVER 2000 中的表。原先在 ACCESS 中开发的程序基本无需更改,除非你要更改数据结构。 

2、你可以采用 ADP 的方式升级数据库,ADP 方式基本抛弃了原先 MDB 大多数模式。你必须适应新的数据结构,接受 JET SQL 编写的查询变成 T-SQL 编写的存储过程、视图等等对象的结果。也就是说你必须重新学习 T-SQL 。 

方法二: 

给你一些我的经验吧。反正access到sqlserver的移植是很痛苦的,我弄过好几次了。 
希望大家能补充一下。 

1.数据库导入以后,自动增加字段需要重写,所有的数字类型需要增加长度,最好用 
decimal。 

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

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

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

5.有可能一些true/false类型不能使用,要变为1/0。 

6.备注类型要通过cast(column as varchar)来使用。UploadFiles/2005-12/1222208225.rar 

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

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

方法三: 

1.ACCESS的数据库中的自动编号类型在转化时,sql server并没有将它设为自动编号型,我们需在SQL创建语句中加上identity,表示自动编号! 

2.转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。我遇见这种情况,用smalldatetime型时,转化失败,而用datetime型时,转化成功。 

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

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

5.在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL SERVER数据库处理中,却不能用 
1.数据库导入以后,自动增加字段需要重写,所有的数字类型需要增加长度,最好用bigint。 
2.所有的默认值都丢失了。主要是数字类型和日期类型。 
3.所有sql语句中的now(),time(),date()要改成getdate()。 
4.所有sql语句中的datediff(’d’, time1, time2)要改成datediff(day, time1, time2),相应的其他日期属性也需要更改。 
5.有可能一些true/false的判断语句不能正常使用了,这里是指用整数型来表达bool的情况,要变为1/0。 
6.备注类型要通过cast(column as varchar)来使用。 
7.CursorType要改成1,也就是打开数据库时要给出第一个数字参数为1,否则记录可能 
显示不完整。也就是说,一般要写成rs.open sql, conn, 1。 
8.isnull(rowname)要改成rowname = null 
9.程序里如果有直接对整型变量的判断,也需要进行显示的转换,如: 
if rs("id") = 0 then 
要变为 
if clng(rs("id")) = 0 then 
编辑:汕尾网站建设
 
上下篇: Microsoft OLE DB Provider for SQL Server (0x80040E07) 从字符串转换为 datetime 时发生语法错误 SQL server中常用convert函数转换日期格式

最新推荐信息