4

我刚刚遇到了一些令人不安的事情,我试图从一个设计不受我们控制的数据库中实现事务复制。这种复制是为了在不对系统造成过多负担的情况下执行报告。在尝试复制时,只有一些表通过了。

在调查表中没有选择复制,因为它们没有主键,我认为如果我使用 ODBC 和 ms 访问但不在管理工作室中,它甚至不能显示为主键。查询也不是慢得离谱。

我尝试插入重复记录,但未能说出唯一索引(不是主键)。似乎是使用唯一索引而不是主键来实现表。为什么我不知道我可以尖叫。

无论如何要执行事务复制或替代方案,它需要是实时的(最后一分钟或两分钟)。主数据库服务器目前是 sql 2000 sp3a 和报告服务器 2005。

我目前唯一想到的尝试是将复制设置为好像它是另一种类型的数据库一样。我相信复制说 oracle 是可能的,这会强制使用 ODBC 驱动程序,就像我假设访问正在使用的那样,因此显示主键。我不知道这在我的深度范围内是否准确。

4

1 回答 1

7

正如 MSDN所说,不可能在没有主键的表上创建事务复制。您可以使用不需要主键的合并复制rowguid(一种方式),如果它不存在,它会自动创建一个列:

合并复制在合并复制过程中使用全局唯一标识符 (GUID) 列来标识每一行。如果已发布的表没有具有 ROWGUIDCOL 属性和唯一索引的 uniqueidentifier 列,则复制会添加一个。确保引用已发布表的任何 SELECT 和 INSERT 语句都使用列列表。如果不再发布表并且复制添加了该列,则删除该列;如果该列已存在,则不会将其删除。

不幸的是,如果使用合并复制,您将受到性能损失。

如果您只需要将复制用于报告,并且您不需要与发布者上的数据完全相同,那么您也可以考虑快照复制

于 2009-07-22T11:42:03.430 回答