Access升迁到Sql server有些数据表迁迁总是失败的解决办法(表被跳过或导出失败)

2017-07-28 10:40:00
zstmtony
原创
184

Access升迁到Sql server有些数据表迁迁总是失败(表被跳过或导出失败)



来源:Access中国

作者:tmtony


access自身有一个非常好的升迁工具,叫做Access升迁向导(Upsizing Wizard),可以利用升迁向导把整个Access数据库中的表升迁到SQL Server中,

首先要注意:

1. Access 2003或 access2007不能直接升迁到sqlserver2008 , 在Access2003 及 Access2007 这2个版本环境下,无法用升迁向导将access表到SQL Server 2008的。

                      因为会提示以下错误: 升迁向导 只适用于Microsoft Sql Server(6.50 SP5 或更高版本)。请登录到 Sql server 数据源。

                        


2.如果是Access 2003或Access 2007 可以考虑迁移到sql server 2000 或 Sql server 2005 ,然后再用Sql server将数据库备份,再还原到Sql server 2008 或 Sql  server 2012 或 Sql server 2016



3.可考虑使用 微软的SSMA 迁移工具

    SSMA( SQL Server Migration Assistant) For Access(Access 升迁向导替代工具)

   


最近在帮客户将一个Access2007的accdb数据升迁到Sql server是,发现有一个表死活升迁不了,使用的是Access内置的Sql server升迁工具

开始 以为是Access2007的问题,后来改为Access 2003的mdb再升迁Sql server也是失败

总是提示: 表:XX表名  表被跳过或导出失败

     


解决过程:

1. 查看数据表的字段,发现有些表的默认值或掩码 或格式的设置,担心这些会不会与Sql server不兼容。删除了以下的相关设置:


工作代码ID 小数位数0

标准工时  小数位数 2

原料不良  小数位数 0

工作时间  小数位数 4  掩码0.000

效率      格式 百分比

再进行升迁,还是不成功,错误如上。


2.再检查数据表的索引,发现有一个索引的索引名与字段名不同,且索引名有 / 这个特殊字符,修改了这个索引名

        


        再尝试继续升迁,还是同样的错误。


这时突然想起以前有一次帮一个香港客户升迁繁体Access 97数据库到Sql server时遇到一个问题,就是数据表里的日期有一些乱码或不正确的日期。


3.马上将这个升迁失败的数据表打开,查看日期字段的内容,果不其然,日期有问题,有非法的日期内容,如下图所示

   改正这些错误的日期,再重新升迁,终于成功!


    


升迁成功后的提示画面

    


所以从Access Migrate 到Sql server时一定要注意数据内容本身有否问题

另补充一个特别重要的经验:

除了要按日期顺排序外,也要降序排序看看日期内容有否问题。有些日期是太小,有些日期是太大而导致无法导入



另还要检查 有否 2月 有 2月30日的,其它月份 有32日的

另还要检查 Sql server中是否已经存在同名的表名

另一个经验,当不知道是什么原因导致Access升迁到sql server失败时,最快的方法,是逐个删除一些字段,看看删除哪个字段之后,升迁成功了,就可判断是这个字段的数据出现问题了。逐个排除法。

还有可能是sql server数据库有问题,会导致所有表升迁不了,要尝试一下升迁到一个新的数据库是否正常,提成除sql server这个数据库的问题


再补充一个经验:

如果是日期字段(但内容是保存时间的)经常会出现升迁不了,出错,找来找去找不到原因。解决办法很简单,只要把时间按升序排序

如果这些时间排在00:00:00 前面的 时间肯定有问题,删除这些记录或手工改一下记录就可成功移植了。

正常 排序 ,空的在最前面,然后是00:00:00 但这些错误的时间会排在00:00:00 前面,有可能是有隐藏的日期如1899/01/01 之类的日期隐藏了


补充阅读:


在Access的早期版本中,Microsoft就开发了Upsizing Wizard,通过该向导可以很容易地将Access数据表转换成SQL Server数据表。当进行Access数据表升迁时,该向导提供了易于操作的界面用于选择数据表和指定附加选项。但是,该向导并不能对所有的版本进行升迁。目前,有一款新的转换工具——SQL Server迁移助手(SQL Server Migration Assistant,SSMA),它不仅可以完成简单的上传任务,而且还可以将Access中的一些特定选项(如Allow Zero Length属性)转换成SQL Server中类似的属性。此外,SSMA也可以在需要转换时给出一些智能推荐,如在表中添加rowversion列能够确保行的唯一性。


由于SSMA更适合现在的表升迁的需要,因此没有理由再使用原来的Upsizing Wizard。SSMA可以从Microsoft下载中心免费下载。另外,读者可以在本书的后面发现,通过Access Web应用也可以将Access数据导入到SQL Server表中,而且不需要配置步骤,要比SSMA和Upsizing Wizard更简单。


    分享