我有一个Access数据库(在Access 2003中)有几个表,并且数据必须导入到Sql Server 2005. Access数据的结构与sql server不同数据库,所以我创建了各种查询,将其转换为Sql Server所需的格式。基本上在SQL Server每个表我有两个查询:产生的字段名和与SQL表兼容的类型选择查询,以及追加查询其基本上没有通过Access查询从Access数据库导入到Sql Server时出现的问题
Insert into [Sql_table] (field1, field2, ...)
Select [field1, field2, ...] from [Access_table]
SQL和原始访问表具有主键自动递增,并将其包含在查询中。
当我运行插入查询和源选择查询没有很多记录(多达几百个)所有工作正常,记录插入确定,与原来的身份
但当源查询有更多的记录(我有超过10000条记录几张桌子),我有两种情况:
或者访问报告查询不能任何记录到SQL Server由于主键冲突增加(但没有侵犯可言)。在这种情况下,我只需关闭访问并重新启动它...我得到第二种情况
运行查询访问告诉我它不能导入x记录(通常很少,10,21,32,通常似乎随机数了由于主键违规而导致超过10000个中的100个),但导入其余的。同样,无论如何都没有关键违规,所有的ID都是唯一的,如通过autoinc字段在原始Access表中生成的。奇怪的是,如果我再次删除SQL数据和运行查询,我得到不同数量的未导入,有时少,有时更多的记录,但都在10-50范围内出10000
我试着与Access 2007一样,但同样的事情发生。
Sql服务器表具有与主表的外键关系,但这种关系也可以通过我尝试导入的数据来满足。
有没有人知道面临这个问题,并知道一个解决方案?
感谢
PS:我不使用SQL Server导入向导自会有办法很多工作通过访问SQL Server中的数据转换 - 选择查询已经取得的访问,他们是相当复杂的,使用一些使用VBA编写的函数,难以仅仅为了这个目的而重写为tsql
多亏用同样的方式,我已经试过了,但它变得复杂,因为有参与这个几个表,并重新创建它们,清洗它们都变得耗时 – bzamfir 2010-03-20 14:00:27