Sql-Server

次要副本索引

  • January 15, 2018

我有一個問題,關於一個問題,這是 70-462 Microsoft 考試的一部分。

我今天有這個問題,我不完全確定正確的答案。雖然我確實通過了考試,但鑑於這種情況,我想了解正確的解決方案。

如果我沒記錯問題,您管理 2012 SQL Server,要求將 OLTP 數據庫的最新報告解除安裝到另一台伺服器,並且還能夠向輔助數據庫添加索引。

該問題的答案大致如下:

  1. 兩台伺服器,不同的數據中心。具有同步送出的 AG 組。主動二級。
  2. 兩台伺服器,同一個子網。具有同步送出的 AG 組。
  3. 兩台伺服器,每 10 分鐘發送一次日誌。
  4. 非同步送出有幾個不同的答案。
  5. SQL Server,包括配置為執行事務複製的應用程序數據庫。
  6. 包含配置為執行快照複製的應用程序數據庫的 SQL Server。
  7. Windows 故障轉移群集中的兩台伺服器。SQL Server 配置為集群實例。

最初我排除了非同步送出選項(延遲)、不同數據中心的同步送出 AG 組(延遲?)、日誌傳送(延遲)和快照複製選項。

這給我留下了同一子網上的同步送出 AG 組,或者帶有事務複製的 SQL 伺服器。

根據https://msdn.microsoft.com/en-us/library/ff878253.aspx,我讀到如果你想在你的活動輔助節點上建立索引,你必須在你的主節點中創建它們。我將這個問題解釋為需要能夠在第二天創建索引,這些索引在主索引上不存在(包括報告索引,或者不存在的索引)。

另一個答案是單獨指 SQL Server,這聽起來不像我們正在添加“另一台伺服器”來解除安裝工作。

我是否誤解了問題/要求?正確的答案/解決方案應該是什麼?

  • #5:事務複製。

**為什麼這是一個選項?**因為文件準確地解釋了為什麼它在那裡是可能的——一旦初始化,索引更改不會在任何一個方向上複製。

可以在發布伺服器或訂閱伺服器上添加索引,而無需特別考慮複製(請注意索引會影響性能)。CREATE INDEX並且ALTER INDEX不會被複製,因此如果您在發布伺服器上添加或更改索引,如果您希望它反映在訂閱伺服器上,則必須在訂閱伺服器上進行相同的添加或更改。

我也認為您在閱讀文本時過於字面意思。如果您已經配置了複製,那麼您極不可能假設它會被配置為複製到同一 SQL Server 實例中的另一個數據庫 - 我什至不確定這是否可能,或者是否真的存在合理的案例,但我認為問題的措辭並不傾向於指向你。老實說,我只是認為這些考試的問題質量一般來說是可疑的。我不會過多解讀它們。

**為什麼其他選項都不可能?**因為:

  • 在沒有可用性組配置中,您不能在輔助節點上創建索引,因為輔助節點本質上是只讀的(儘管您可以創建統計資訊;但是,這些位於 tempdb 中)。IIRC 也有人要求支持這樣的索引,但沒有計劃。這排除了#1、#2 和#4。
  • 日誌傳送不適合該要求,因為您無法更改目標數據庫並繼續應用日誌。所以 - 由於問題指出日誌每 10 分鐘恢復一次 - 您必須每 10 分鐘恢復一次數據庫,創建索引,然後在 10 分鐘後將所有人踢出以再次執行此操作。這不是“最新的”報告。這排除了#3。
  • 快照複製一旦初始化就無法更新,因為它實際上是一個快照——為了創建索引,每次恢復快照時都必須這樣做,因為這是一個全有或全無的操作。在此模型中無法提供“最新”報告。這排除了#6。
  • 在故障轉移群集中,只有一個數據副本,並且只有一個 SQL Server 實例,並且數據僅對主(“活動”)節點上的任何工作負載(讀取或寫入)可見。因此,根據定義,不可能對數據的副本進行更改,因為沒有“副本”。這排除了#7。

引用自:https://dba.stackexchange.com/questions/101224