【问题标题】:SQL Server full copy of database for read operations用于读取操作的 SQL Server 数据库完整副本
【发布时间】:2013-11-08 13:15:22
【问题描述】:

请告知什么更适合我的问题。我在托管 SQL Server 的同一台服务器上托管了一个高负载 Web 应用程序。我还在同一台服务器上运行 SQL 服务报告,生成用户报告。

所以我的服务器基本上可以在磁盘读/写速度之上运行。我将获得另一台服务器并在那里安装另一台 SQL 服务器,以便在那里托管 SSRS。所以我的标准是尽可能获取最新数据。

我看过几个解决方案,目前我确实通过作业进行备份,将其复制到第二台服务器并在那里恢复,也通过作业。但这不是最好的解决方案。

所有复制机制(事务、合并、快照)都会通过锁定发布者数据库的表来影响发布者数据库,这对我来说是不可接受的。

所以我想知道是否有可能创建具有只读访问权限的副本,该副本会定期同步而不影响主数据库?我会将所有报告加载到该副本,并使我的主数据库仅供网络应用程序使用。

什么解决方案可能适合我的问题?因为我不是 DBA,所以我会开始研究这个方向。谢谢。

【问题讨论】:

标签: sql replication log-shipping


【解决方案1】:

事务复制通常用于将报告卸载到另一个服务器/实例,并且在最佳情况下可以接近实时。事务复制的好处是您可以在订阅者上放置不同的索引以优化报告。如果报告只需要一个子集,您也可以选择只复制部分数据。

事务复制发生锁定的唯一时间是在您生成快照时。使用并发快照处理(事务复制的默认设置),共享锁只保留很短的时间,因此用户可以继续不间断地工作。无论哪种方式,这都不是问题,因为无论如何您都可能会在用户活动较少的时期生成快照。

【讨论】:

  • 这是否意味着我需要 3 台服务器来实现事务复制(一台用于分发服务器)?我也想知道为什么每次都要生成快照,我以为初始同步只生成一次快照,之后只复制事务日志进行复制。
  • 你是对的,快照只需要初始化订阅者。之后,日志读取器代理将事务从事务日志复制到分发数据库,​​该数据库充当存储转发队列。然后分发代理将分发数据库中的事务复制给订阅者。
  • 您可以配置本地Distributor(Publisher充当Distributor)或远程Distributor。在大多数情况下,本地经销商就可以了。
  • 我已将您标记为 asnwer。如果您有“howto”的链接,我将不胜感激。
  • 今天我听说了 SQL Server 2012 Always On 功能,它不是事务复制的更好替代品吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
相关资源
最近更新 更多