我们有 70 多个 SQL Server 2008 数据库需要从 OLTP 环境复制到单独的报告服务器。复制数据库后,我们将进行一些部分数据转换:反规范化、行级安全等。SSRS 报告将基于这些静态非规范化表和视图编写。
我们有一个小的夜间窗口,用于复制和转换所有 70 个数据库(3 小时)。目前数据库平均约为 10GB。
选项:
1. 事务复制: 我们需要在每个报告数据库上创建 100 多个静态非规范化表。对所有 70 个数据库执行此操作几乎达到了我们每晚的时间限制。随着数据库的增长,我们将超过时间限制。我们考虑将非规范化表与视图混合以加快转换速度。但是会有一些动态和一些静态数据,这不是我们可以使用的解决方案。此外,对于使用事务复制的 70 个数据库,我们关注带宽使用情况。
2.快照复制: 每晚复制整个数据库。这意味着我们可以混合使用非规范化的表和视图,以便数据转换过程更快。但是快照是一个完整的数据副本,所以随着数据库的增长,我们将超过我们完成复制和转换的时间限制。
3. 日志传送: 在我们的夜间窗口中,我们可以使用日志传送来更新报告数据库,然后截断并重新填充非规范化表并使用一些视图。但是,我知道通过日志传送,无法将额外的表和视图添加到订阅数据库中。
4. 镜像: 镜像已被弃用,但数据库在故障转移之前无法进行报告。
5. SQL Server 2012 永远在线。 我们还没有 SQL Server 2012,可以将其配置为每天更新一次而不是实时更新吗?是否可以在订阅数据库(我们的报告数据库)上创建额外的表和视图?
6. 合并复制: 这是为了将多个数据源合并到一个数据库中。但看起来它允许计划更新(每天一次)并且仅使用最新更改更新订阅者数据库,而不是执行整个快照。它需要为每个表添加一个 rowversion 列,但我们可以处理这个问题。同样使用此解决方案是否可以在订阅者数据库上创建其他表而不会导致更新不同步?
- 最后一个选项是我们使用 SSIS 从 OLTP 数据库中仅选择我们需要的数据。我认为这个选项会产生更大的风险,因为我们必须处理对非规范化表的插入/更新/删除,而不是每天删除并重新创建非规范化表。
对我们的选项的任何帮助将不胜感激。如果我做了任何不正确的假设,请说。