SQL Server OLEDB/ODBC 复制的安全初始同步

SQL Server OLEDB/ODBC 复制的安全初始同步

我正在尝试设置从 SQL Server 2008 R2 到 PostgreSQL 9.1 的单向事务复制。我正在尝试 PGNP OLE DB 提供程序。

我可以成功创建订阅,并且事务确实复制到了 PG 服务器。我在订阅中使用了 sync_type = 'none',因为否则,架构(包括 SQL Server 特定选项(SET ANSI_NULLS ON 等))似乎会被发送到 PostgreSQL,这会搞砸一切。

这没问题,我可以使用 SSIS 并复制我的整个数据库,包括数据。我的问题是,我如何才能安全地做到这一点?因为如果我只运行 SSIS 包来导出数据,然后添加订阅,交易可能会丢失。

例如,SSIS 将数据导出到 PG。行 X 已更新。复制开始。在这种情况下,行 X 的更新不在我的手动同步中,但复制随后开始。我无法运行复制,因为可能会发生其他错误。

这里的正确程序是什么?

答案1

我遇到过几次类似的问题。解决此问题的技巧是设置2 订阅

  • 您当前设置的
  • 另一个是 SQL 服务器数据库,它将“正常”同步

整个过程如下:

  1. 配置一个 sql server 订阅服务器,按照你喜欢的方式同步,重点是确保这个订阅服务器正确同步
  2. 配置对 postgres 的复制。注意在 postgres 中创建所有目标表,但不要关心数据同步。
  3. 在此阶段,当您修改主服务器上的数据时,该数据会复制到两个从服务器上。现在您停止 le日志读取器分发服务器上的代理。然后,您要等待(例如借助复制监视器)两个订阅代理都已处理完发往两个订阅者的所有事务。
  4. 截短POSTGRES 订阅服务器上的所有复制表
  5. 从 SQL 订阅服务器复制所有表 (不是主服务器!!)到Postgres订阅服务器。
  6. 两个订阅者现在拥有完全相同的数据!
  7. 启动日志读取器代理。您已完成

请注意,当日志读取器代理停止时,发布服务器上的事务将停留在发布服务器的日志中。因此,请注意不要让它满载。步骤 5(复制数据)可能相当长,因此请在主服务器上配置足够大的日志(取决于事务量)。

顺便说一句,如果您将 sync_type 设置为“automatic”,snapshost 代理将生成一个快照,该快照也将正确同步。我的赏金在哪里?

答案2

尝试这篇文章 SQL Server 复制小抄

相关内容