![在选定表上进行日志传送](https://linux22.com/image/543295/%E5%9C%A8%E9%80%89%E5%AE%9A%E8%A1%A8%E4%B8%8A%E8%BF%9B%E8%A1%8C%E6%97%A5%E5%BF%97%E4%BC%A0%E9%80%81.png)
我知道我很可能使用了错误的术语,所以如果我使用了错误的术语,请纠正我,以便我可以更好地搜索。
我们在客户站点有一个非常大的数据库,我们希望将一些表格的最新副本通过互联网发送到我们办公室的服务器。我们只想复制一些表格,因为对整个数据库进行日志传送(我们当前的解决方案)的带宽要求太高。另外,直接复制到我们的服务器也不可能,因为我们的服务器无法从互联网访问,而且管理层不想进行复制(稍后会详细介绍)。
我们曾有过的一个可能的想法就是对我们需要的表进行某种形式的复制到同一服务器上的另一个数据库中,并对第二个较小的数据库进行日志传送,但管理层担心客户过去曾破坏过复制(然而,这是在其内部网络上的两台服务器之间进行的),因此如果可能的话,他们希望远离这种情况。
任何建议都将不胜感激。如果使用某种形式的复制是唯一的解决方案,我并不反对复制,我只是需要令人信服的论据来说服管理层这样做。
这将在运行 Sql2005 或 Sql2008 的多个站点上进行设置,我们将同时拥有这两个版本来恢复数据,所以这不是问题。
谢谢。
答案1
你检查过微软同步框架? 这是一项 Microsoft 数据同步技术,支持 SQL Server 和其他数据存储,支持同步这些数据存储的子集(仅特定表或其他内容),当然,Microsoft 试图将其很好地集成到其许多技术堆栈中。
以下是相关内容StackOverflow 问题“我可以只同步表的子集吗?”。太长了;没读过答案是是的你可以。
与实施自行解决的解决方案相比,这可以节省您大量的时间。
答案2
您几乎已经介绍了两个可用的选项。除非您想构建某种 SQL Service Broker 解决方案或类似解决方案,但这仍然需要两台服务器之间的连接。根据您的描述,他们的服务器和您的服务器之间的 SQL Server 复制将是解决问题的正确方法。
答案3
我唯一能想到的就是自己想办法。我会这样做:
在服务器上运行的批处理,转储bcp out
表、压缩它并将其放在 FTP 上。
在您的办公室运行的第二批程序会定期检查 FTP,如果发现新文件,则将其解压缩,运行DELETE FROM [tablename]
,然后运行bcp in
解压缩的文件。
答案4
如果它们可以破坏复制,那么它们很可能也会破坏您设置的任何其他东西。我可能会使用事务或合并复制(如果需要,还可以使用一些日志传送),并确保为订阅者编写设置步骤脚本,这样您只需按几次 F5 即可修复它们造成的错误。