Pet*_*teT 4 sql-server primary-key transactional-replication
我刚刚遇到一些令人不安的事情,我试图从一个设计不受我们控制的数据库中实现事务复制.这种复制是为了执行报告而不会对系统造成太大的负担.在尝试复制时,只有一些表发生了.
由于调查表没有主键,因此没有选择复制调查表,我认为如果我使用ODBC和ms访问而不是在管理工作室中,它甚至不会显示为主键.查询也不是非常慢.
我尝试插入一个重复的记录,它没有说出一个唯一的索引(不是主键).似乎是使用唯一索引实现的表与主键相对.为什么我不知道我会尖叫.
无论如何都要执行事务复制或替代方案,它需要是实时的(最后一两分钟).主db服务器目前是sql 2000 sp3a和报告服务器2005.
我目前唯一想到的尝试就是将复制设置为另一种类型的数据库.我相信复制说oracle是可能的,这会强制使用像我假设访问正在使用因此显示主键的ODBC驱动程序.我不知道这是否准确无误.
正如MSDN 所述,无法在没有主键的表上创建事务复制.您可以使用不需要主键的合并复制(单向),rowguid如果不存在,它会自动创建一个列:
合并复制使用全局唯一标识符(GUID)列来标识合并复制过程中的每一行.如果发布的表没有带有ROWGUIDCOL属性和唯一索引的uniqueidentifier列,则复制会添加一个.确保引用已发布表的任何SELECT和INSERT语句都使用列列表.如果不再发布表并且复制添加了列,则删除该列; 如果列已存在,则不会删除.
不幸的是,如果使用合并复制,您将会受到性能损失.
如果您只需要使用复制进行报告,并且您不需要数据与发布者上的数据完全相同,那么您也可以考虑快照复制