最近,我不得不实现事务复制,以便在另一台服务器上拥有该数据库的实时副本,以便进行报告。在配置复制时,我意识到很多表都没有主键,所以我无法发布我想要的所有表。
第二个选项是实现合并复制,但是会为所有表添加GUID列。由于它是供应商应用程序的数据库,因此供应商警告我们不要“触摸”数据库结构,因为数据库结构的任何更改都可能导致其应用程序中断。因此,合并复制不再是一种选择。
在这种情况下,我一直在为其他可用选项做一些研究;我唯一能找到的就是Log Shipping。我知道它会使我的数据库处于只读模式,但(据我所知),因为这是我留下的唯一选项,它将严格用于报告目的,我认为我可以忍受这个。
有人可以建议更好的解决方案吗?或者Log Shipping是我唯一的选择吗?
它是SQL Server 2008 R2 64位数据中心版。
答案 0 :(得分:2)
您的其他选择是:
数据库镜像,并使用快照进行只读操作。管理快照可能会很痛苦。
升级到SQL Server 2012,并在可用性组中使用可读辅助节点。这可能是钱包里的痛苦。
你提到了日志传送,但根据你的后续评论我不认为很清楚,每次你将日志恢复到日志发送的副本时,你需要踢出所有可能正在运行的用户报告。这是因为您需要对数据库进行独占访问才能还原日志。这是“你得到你付出的代价”的另一种情况 - 如果你愿意,你可以登录到Express实例(如果你的数据库支持它),但这不是一个完全无懈可击的解决方案。