辅助副本索引

Dan*_*Dan 4 replication sql-server sql-server-2012 availability-groups

我有一个问题,关于一个问题,它是 70-462 Microsoft 考试的一部分。

我今天有这个问题,我不完全确定正确答案。虽然我确实通过了考试,但我想了解这种情况下的正确解决方案。

如果我没记错问题,您管理的是 2012 SQL Server,要求是将 OLTP 数据库的分钟报告卸载到另一台服务器,并且还能够向辅助数据库添加索引。

问题的答案大致如下:

  1. 两台服务器,不同的数据中心。具有同步提交的 AG 组。主动次要。
  2. 两台服务器,同一个子网。具有同步提交的 AG 组。
  3. 两台服务器,每 10 分钟发送一次日志。
  4. a-synch 提交有几个不同的答案。
  5. 包含配置为执行事务复制的应用程序数据库的 SQL Server。
  6. 包含配置为执行快照复制的应用程序数据库的 SQL Server。
  7. Windows 故障转移群集中的两台服务器。SQL Server 配置为群集实例。

最初我排除了异步提交选项(延迟)、不同数据中心的同步提交 AG 组(延迟?)、日志传送(延迟)和快照复制选项。

这给我留下了同一个子网上的同步提交 AG 组,或具有事务复制的 SQL 服务器。

基于https://msdn.microsoft.com/en-us/library/ff878253.aspx,我读到如果你想在你的活动辅助节点上建立索引,你必须在你的主要节点中创建它们。我将这个问题解释为要求能够在主服务器上创建索引,而这些索引在主服务器上不存在(包括用于报告的索引,或者其他什么不存在)。

另一个答案,单独指的是 SQL Server,这听起来不像我们要添加“另一台服务器”来卸载工作。

我是否误解了问题/要求?正确答案/解决方案应该是什么?

Aar*_*and 5

  • #5:事务复制。

为什么这是一个选项?因为文档准确地解释了为什么可以在那里 - 一旦初始化,索引更改不会在任一方向复制。

可以在发布服务器或订阅服务器上添加索引,无需特别考虑复制(请注意,索引会影响性能)。CREATE INDEX并且ALTER INDEX不会被复制,因此如果您在发布服务器上添加或更改索引,如果您希望它在那里得到反映,您必须在订阅服务器上进行相同的添加或更改。

我还认为您在阅读文本时过于字面化。如果您完全配置了复制,则极不可能假设它会被配置为复制到 SQL Server 的同一实例内的另一个数据库 - 我什至不确定这是否可能,或者是否真的有合理的用例,但我不认为问题的措辞倾向于指向你。老实说,我只是认为这些考试中的问题质量一般来说是不可靠的。我不会对它们读太多。

为什么其他选项都不可能?因为:

  • 在没有可用性组配置中,您不能在辅助节点上创建索引,因为辅助节点本质上是只读的(尽管您可以创建统计信息;但是,这些存在于 tempdb 中)。IIRC 也有请求支持类似这样的索引,但没有计划。这排除了#1、#2 和#4。
  • 日志传送不太适合该要求,因为您无法更改目标数据库并继续应用日志。所以 - 由于问题指出日志每 10 分钟恢复一次 - 您必须每 10 分钟恢复一次数据库,创建索引,然后在 10 分钟后将所有人踢出去再做一次。这不是“最新”报告。这排除了#3。
  • 快照复制一旦初始化就无法更新,因为它实际上是一个快照——为了创建索引,你必须在每次恢复快照时都这样做,因为这是一个全有或全无的操作。在此模型中无法提供“最新”报告。这排除了#6。
  • 在故障转移群集中,只有一份数据副本,只有一个 SQL Server 实例,并且数据仅对主(“活动”)节点上的任何工作负载(读取或写入)可见。因此,根据定义,不可能对数据的副本进行更改,因为没有“副本”。这排除了#7。