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

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

我可以成功创build一个订阅,事务确实复制到PG服务器。 我在订阅上使用了sync_type ='none',因为在其他情况下,包括SQL Server特定选项(SET ANSI_NULLS ON等)在内的模式似乎被发送到PostgreSQL,而后者将其locking。

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

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

什么是适当的程序在这里?

我有几次类似的问题。 诀窍是设置2个订阅

  • 你目前设置的那个
  • 另一个到一个SQL Server数据库,它将同步“正常”

所以这里是整个程序:

  1. configuration一个sql server用户,只要你喜欢,同步它的重要一点是要确保这个用户是正确同步
  2. configuration你的复制到postgres。 注意在postgres中创build所有的目标表,但不关心数据同步。
  3. 在这个阶段,当您修改主服务器上的数据时,它将被复制到两个从服务器上。 现在,您停止经销商处的LOG READER代理。 而且你等待(感谢复制监视器例如)两个订阅代理已经处理了所有事务给两个订户。
  4. 在POSTGRES用户处截断所有复制的表
  5. 将SQL订阅服务器( 不是主服务器!!)的所有表复制到Postgres订阅服务器。
  6. 两个用户现在都有完全相同的数据!
  7. 启动日志读取器代理。 你完成了

请注意,在日志读取器代理程序停止时,发布服务器上的事务将被卡在发布服务器的日志中。 所以要小心,不要让它充满。 步骤5(复制数据)可能很长,因此在主数据库上configuration足够大的日志(取决于事务量)。

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

试试这篇文章SQL Server复制婴儿床