Sql-Server

Live Partial Table/列複製

  • May 7, 2020

我想知道是否有辦法使用 SQL Server 2012 Enterprise Edition 實現以下目標?

我有Table AServer 1說 10 列。

Table A:
| col1 | col2 | col3 | coln | col10 |

on Server 2,我需要Table Ain Table Bon的 Live Copy Server 2。但是我實際上只需要複製 3 列,因為這就是我使用的全部。

Table B:
| col1 | col3 | col10 |

我在上面提到了“實時”,我的意思是當我插入一個新值或更新一個新值時,Table A該更改將盡快傳播到Table B.

Table B是一個只讀表。並Table A獲取寫入其中的數據。所以 A 將成為發布者,B 將成為訂閱者。

我怎樣才能實現這種設置?換句話說,我需要使用某種複制嗎?或者我可以通過 Always ON 高可用性來實現這一點。

您還可以使用在插入/更新/刪除時填充表副本的觸發器來解決此問題。問題中並不清楚這些表實際上位於不同的伺服器上,並且訂閱者不可靠。在這種情況下,您可以簡單地將日誌發送給訂閱者 - 您可以在這裡非常接近實時,但您必須在恢復新日誌時暫時將使用者踢出。如果日誌傳送整個數據庫是一個問題,那麼您可以改為使用觸發器來填充同一實例上的另一個數據庫 - 該數據庫僅填充此表和所需的列 - 然後將該數據庫日誌傳送到另一個實例:

在此處輸入圖像描述

我有一篇關於使日誌傳送工作更像一組可讀輔助的部落格文章:L

您還可以查看這些文章,了解我用來執行類似複製的方法,但控制更多、影響更小,並且沒有故障排除噩夢:

我還在這篇文章的末尾討論了一些方法來提供數據的只讀副本以進行報告:

事務複製將是我為此選擇的解決方案。

有關事務複製的更多資訊可以在這裡找到:

http://msdn.microsoft.com/en-us/library/ms151176.aspx

要僅選擇所需的列,您需要使用列過濾器:

http://msdn.microsoft.com/en-us/library/ms151775.aspx

AlwaysOn 可用性組在這裡不起作用,因為它們的可用性副本包含一個或多個數據庫 - 但不能在表級別使用。

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