不同伺服器上的兩個數據庫之間是否可以部分同步?
想像一個場景,您有一個數據庫的主實例和一個自動同步的輔助實例 - 幾乎與可用性組一樣。
我的問題是我是否可以將其他對象添加到輔助實例 - 特別是物化(索引)視圖 - 而無需將該視圖同步回主實例。
這可能嗎?
(“為什麼?”,我聽到你問了?因為我不希望維護視圖的性能影響影響主實例。如果需要,輔助節點可以使用非同步送出模式。)
我認為唯一符合您要求的內置數據同步技術是Transactional Replication。
請參閱有關複製的常見問題解答:
如何在發布和訂閱數據庫上添加或更改索引?
可以在發布伺服器或訂閱伺服器上添加索引,而無需特別考慮複製(請注意索引會影響性能)。
CREATE INDEX
並且ALTER INDEX
不會被複製,因此如果您在發布伺服器上添加或更改索引,如果您希望它反映在訂閱伺服器上,則必須在訂閱伺服器上進行相同的添加或更改。這意味著您可以在每個副本上擁有不同的對象(索引、視圖等)。
如果您的同步方法是通過 SQL Server 的複制功能(例如使用事務複製),那麼這是可能的。
但是,一個小的限制是,每當生成新快照或其中一個綁定對象的架構發生更改時,都需要刪除任何架構綁定對象(例如物化視圖或行級安全策略)。****對於前一種情況,我通常使用複制前和複製後腳本來處理它,對於後一種情況,我很少有架構更改的架構綁定對象,但如果它在藍月亮中發生一次,我只需手動刪除並重新創建架構綁定目的。
使用可用性組,這是不可能的 - 對主數據庫的所有更改都會自動對輔助數據庫進行。並且不能直接對輔助數據庫進行更改,因為它是只讀的。
與可用性組相比,****複製的其他好處是您可以精細地選擇要從發布者數據庫同步到訂閱者數據庫的對象,而不是像需要使用可用性組那樣同步整個數據庫。
SQL Server 中還有其他同步功能,可能允許您在目標數據庫上創建架構綁定對象,而無需在源數據庫上創建它們,例如SSIS。但是與其他功能相比,使用此功能也有優缺點,例如初始設置可能會涉及更多一些,並且在模擬可用性組和複製等近實時同步時可能會有些笨拙。