2013-04-05 36 views
3

我一直負責在網上得到一個複製我們的SQL Server 2005/2008數據庫領域內部和每日更新。與每個站點的連接都受到監管,因此聯機訪問不是一種選擇。現場數據庫是工作組許可的。主服務器是企業用一些猥瑣的處理器和內存。這些副本的目的是雙重的:(1)在線備份和(2)ETL到數據倉庫的源代碼。最佳實踐,以大量複製非常大的數據庫與SSIS

大約有300個數據庫,大部分都是相同的模式,分佈在美國,加拿大和墨西哥。當前數據庫大小在5 GB到1 TB之間。活動各不相同,但每臺服務器每天大約有1,500,000個新行,大多數在2個表中。每個總共大約有50張桌子。每個站點的連接質量和帶寬各不相同,但主站點具有足夠的帶寬來並行執行多個站點。

我在想SSIS,但不知道如何處理除桌面以外的任務。任何人都可以提供指導嗎?

+0

您將如何識別更改? – billinkc 2013-04-05 15:35:19

+0

這些行使用順序bigint標識。我從本地數據庫獲取站點的最大ID,並從遠程獲得具有更高ID的所有內容。標準SSIS在較小的桌子上。 - 從remote_table中選擇id不在(從local_table中選擇id)的id - 達到該效果。 – Metaphor 2013-04-05 16:04:47

回答

0

老實說,我會建議使用SQL複製。我們這麼做很多,甚至可以通過撥號進行操作。它基本上最大限度地減少了所需的流量,因爲只有更改被傳輸。

有幾種拓撲結構。我們只使用合併(雙向),但事務可能會滿足您的需求(單向)。

我們的環境是一個單一的中央數據庫,複製(使用過濾的複製文章)到各種網站數據庫。中央DB是發佈者。一旦到位,它就非常健壯,但是對模式升級來說是一件麻煩事。

然而,鑑於你的數據庫是不是同質的,其中遠程站點是發佈者可能更容易對其進行設置,而中央SQL實例都有每個站點的數據庫,這是一個用戶向網站發佈。這些文章甚至不需要過濾。然後您可以集中處理各個站點數據。

請注意,網站數據庫需要安裝複製組件(它們通常在安裝程序中是可選的)。要設置爲發佈者,他們還需要本地配置(每個配置都有配置)。作爲工作組版本,它可以充當發佈者。 SQL Express不能充當發​​布者。

這聽起來很複雜,但它實際上只是程序性的,而做這樣的事情的內在機制。