我刚遇到令人不安的事情,我试图从设计不受我们控制的数据库中实现事务复制。这种复制是为了执行报告而不会对系统造成过多的负担。在尝试复制时,只有一些表发生了。
由于调查表没有主键,因此没有选择复制调查表,我认为如果我使用ODBC和ms访问而不是在管理工作室中,它甚至不会显示为主键。此外,查询的速度也不是很慢。
我尝试插入重复记录,但未能说出唯一索引(不是主键)。似乎是使用唯一索引实现的表与主键相对。为什么我不知道我可以尖叫。
无论如何执行事务复制或替代方案,它都需要处于活动状态(最后一两分钟)。主数据库服务器当前是sql 2000 sp3a和报告服务器2005。
我目前唯一想到的尝试是将复制设置为另一种类型的数据库。我相信复制说oracle是可能的,这会强制使用像我假设访问正在使用因此显示主键的ODBC驱动程序。我不知道这是否准确无误。
答案 0 :(得分:7)
作为MSDN states,无法在没有主键的表上创建事务复制。您可以使用Merge replication(单向),不需要主键,如果不存在,它会自动创建rowguid
列:
合并复制使用全局 唯一标识符(GUID)列 在合并期间识别每一行 复制过程。如果发表了 table没有uniqueidentifier 具有ROWGUIDCOL属性的列 复制增加了一个唯一的索引 一。确保任何SELECT和INSERT 引用已发表的陈述 表使用列列表。如果一张桌子 不再发布和复制 添加了列,列是 删除;如果列已经 存在,它不被删除。
不幸的是,如果使用合并复制,您将会受到性能损失。
如果您只需要将复制用于报告,并且您不需要数据与发布者上的数据完全相同,那么您也可以考虑快照复制