我们正在进行一个多年期项目,我们正在构建一个新系统和一个新数据库,以最终取代旧系统和数据库。用户正在使用新旧系统,因为我们正在改变它们。
我们不断遇到的问题是当一个系统中的对象依赖于另一个系统中的对象时。我们一直在使用 View ,但遇到了其中一种技术( Entity Framework )的限制,并且正在考虑其他选择。
我们现在考虑的另一个选择是复制。我的老板对可能导致的额外维护不感兴趣。那么,还有哪些其他选项可以将依赖数据放入需要它的数据库中?
更新:
我们使用的技术是 SQL Server 2008 和 Entity Framework 。两个数据库都在同一个 sql server 实例中,因此不需要链接服务器。
我们面临的 Entity Framework 限制是我们似乎无法创建基于表的实体和基于 View 的实体之间的关系。据我所知,数据库中 View 和表之间不存在任何关系,因此 edmx 图无法推断出来。而且我似乎无法在不出错的情况下手动创建关系。它认为 View 中的所有列都是键。
如果我这样保留它, View 中的每一列都会出现这样的错误:
Association End key property [...] is not mapped.
如果我尝试在不是键的列上将“实体键”属性更改为 false,我会收到此错误:
All the key properties of the EntitySet [...] must be mapped to all the key properties [...] of table viewName.
根据 this forum post这听起来像是 Entity Framework 的限制。
更新 #2
我还应该提到 Entity Framework 的主要限制是它一次只支持一个数据库。所以我们需要旧数据出现在新数据库中,以便 Entity Framework 能够看到它。我们只需要在新系统中读取旧系统数据。
最佳答案
您可以使用链接服务器查询将数据保留在原处,但从其他数据库连接到它。
根据每个数据库中数据的最新程度以及如果一个数据源可以保持只读状态,您可以:
- 使用数据库复制向导创建 SSIS 包 您可以作为 SQL 代理任务定期运行
- 使用快照复制
- 创建自定义 BCP 进/出流程 获取数据到另一个数据库
- 使用事务复制, 可以接近实时。
如果数据需要在两个数据库中读写,那么你可以使用:
- 事务复制 更新订阅
- 合并复制
随着列表的向下,维护解决方案所涉及的工作量会增加。如果链接服务器查询适合您要实现的目标,那么使用链接服务器查询效果最佳。
编辑:如果它们是同一台服务器,那么按照另一位用户的建议,您应该能够使用 servername.databasename.schema.tablename 访问表 看起来这是一个 Entity Framework 问题 &不是数据库问题。
关于sql-server - 随着时间的推移,如何将数据库部分迁移到新系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/967280/