次要副本索引
我有一個問題,關於一個問題,這是 70-462 Microsoft 考試的一部分。
我今天有這個問題,我不完全確定正確的答案。雖然我確實通過了考試,但鑑於這種情況,我想了解正確的解決方案。
如果我沒記錯問題,您管理 2012 SQL Server,要求將 OLTP 數據庫的最新報告解除安裝到另一台伺服器,並且還能夠向輔助數據庫添加索引。
該問題的答案大致如下:
- 兩台伺服器,不同的數據中心。具有同步送出的 AG 組。主動二級。
- 兩台伺服器,同一個子網。具有同步送出的 AG 組。
- 兩台伺服器,每 10 分鐘發送一次日誌。
- 非同步送出有幾個不同的答案。
- SQL Server,包括配置為執行事務複製的應用程序數據庫。
- 包含配置為執行快照複製的應用程序數據庫的 SQL Server。
- 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。