代码之家  ›  专栏  ›  技术社区  ›  BlueRaja - Danny Pflughoeft

将多访问数据库合并到SQL Server中

  •  3
  • BlueRaja - Danny Pflughoeft  · 技术社区  · 15 年前

    我们有一个程序,每个用户都有自己的Access数据库。我们希望将所有这些合并到一个SQL Server数据库中。

    问题是,使用SQL Server导入/导出向导时,主键/外键不会得到更新。例如,如果一个用户有这个表:

    1  Apple
    2  Banana
    

    另一个用户有:

    1  Coconut
    2  Cheeseburger
    

    生成的表如下所示:

    1  Apple
    2  Banana
    1  Coconut
    2  Cheeseburger
    

    同样,任何通过主键(2)引用香蕉的东西现在都同时引用香蕉和芝士汉堡,这不会让素食主义者非常高兴。

    在导入时,除了编写非常长且复杂的导入脚本外,是否有其他方法可以自动更新主键/外键引用?

    4 回复  |  直到 15 年前
        1
  •  0
  •   Cade Roux    15 年前

    如果需要将它们完全划分,则必须为每个表分配某种分区列。您需要SQL Server具有与Access相同的引用完整性,这有什么原因吗?您只是导入到SQL Server以进行只读报告吗?如果是那样的话,我就不必为李操心了。所有查询都需要partitionid/siteid/customerid。对于单实体访问,可以通过使用需要partitionid的表值UDF包装表来实现这一点。对于不起作用的跨站点。

    我认为我们需要更多地了解基本目标。

        2
  •  0
  •   TonBill    14 年前

    我的基本问题是‘您需要保留原始记录密钥吗?’例如1:用户数据库A表T中的apple;1:在用户数据库B的表T中。假设表T在所有数据库实例中具有相同的结构。我可以假设您可能希望保留原始数据的原因:(a)您可能需要引用原始数据(可能是以前报告的可视化),和/或(b)应用程序本身可能存在数据依赖关系。

    如果答案是“否”,那么您可能只对保留所有不同的数据值感兴趣。允许使用新键生成SQL表,并约束SQL表字段,使其包含唯一的数据。这种方法似乎保留了原始的表结构(而不是原始的键值或它的“位置”),可以满足您的需求。

    如果答案是“是”,我看不出有什么办法可以创建一个索引来保留指向原始数据库的指针和表T中创建的键。这种方法似乎需要修改应用程序。

        3
  •  0
  •   Community CDub    8 年前

    最后创造了一个 SSIS visual programming tool 微软制造 (以及他们的“Business Integration Studio”的一部分,它与SQL Server一起提供)

        4
  •  -1
  •   Arthur Miller    15 年前

    为什么不让Access使用它的复制管理器来合并数据库呢?这将允许您在导入到SQL Server之前识别冲突并解决它们。我很有信心它会保留外键关系。如果我正确地理解了您的情况,并且数据库是具有不同数据的相同结构,那么您可以将组合的数据库加载到应用程序中,并在移动到SQL Server之前验证数据。

    您使用的是什么版本的Access?这是Access 2000的链接。请使用该语言调整搜索参数以适合您的版本。

    http://technet.microsoft.com/en-us/library/cc751054.aspx

    推荐文章