将多个Access DB(具有相同功能但不同数据)迁移到单个SQL Server DB

时间:2011-07-15 05:38:35

标签: sql-server database ms-access migration database-migration

场合

我有5个Access DB文件,每个文件有10个表,40个查询和8个宏。所有5个Access DB文件具有相同的表名,表结构,相同的查询和相同的宏。唯一不同的是表中包含的数据。如果重要,每个数据库上的某些表的行数在几百到100K +之间。

我想要实现的目标

我正在将这5个Access数据库文件迁移到单个SQL Server(2008)数据库。 编辑: 迁移后,我确实需要知道哪些表属于哪个数据库,因为每个原始Access数据库都与公司的部门相关联,所以我需要跟踪这个。< / p>

我的解决方案或选项

表将作为表导入SQL Server。查询将作为存储过程导入。宏将作为新的存储过程导入。

  1. 将每个Access DB的表和查询导入SQL Server DB,并通过给它们添加前缀来重命名每个表和查询,以识别哪些表属于哪个数据库。
  2. 与#1相同,但只导入表格。对于查询,只导入一组查询(40个查询)并将其修改为从表中动态选择,插入,更新或删除
  3. 将第一个Access DB中的表A,第二个Access DB中的表A,第三个Access DB中的表A等导入到SQL Server中的一个新表中,并为它们提供唯一标识符,以标识哪一行数据属于哪个数据库
  4. 您认为最好的方法是什么?请告诉我是否有比我列出的更好的方法。谢谢!

3 个答案:

答案 0 :(得分:1)

我会说数字3.你不会得到重复代码和更容易的维护。

更容易维护的一个例子是性能调整。您说5个访问数据库中的查询是相同的:假设您检测到其中一个查询运行得太慢而您决定需要在基础表上创建索引。在选项#1和#2中,这意味着在5“双胞胎”表上重新创建相同的索引。

答案 1 :(得分:1)

我会将它们迁移到MS SQL,如下所示:

  • 将数据库1中的所有表从SQL Server导入到相应的表中,但添加一个名为旧主键的新主键,重命名数据库的旧pk和标识符。
  • 使用旧的pk和标识符将所有外键更新到新的pk字段。
  • 重复数据库2-5
  • 删除标识符或保留标识符,具体取决于您是否需要知道行的来源(旧主键相同)
  • 只导入一次查询/宏,因为它们是相同的。

当这样做时,你保持pk-fk关系和查询完整无缺,并且仍然知道行的来源。

答案 2 :(得分:0)

在访问每个这些数据库时,您可以在新表中为每个部门字段ID(新字段)分配标识符(每个部门具有不同的值),然后将此值添加到每个要导入的表。创建一个包含部门信息的新表,然后创建连接这些表的连接表。因此,每个部门之间是相互区分的。