2012-09-17 121 views
12

所有我必須創建一個具有基本模式的單個數據庫。這個數據庫將會很大(100GB以上),並將被用作數據倉庫。現在,這個數據庫的創建目前正在通過C#代碼進行'一擊'從多個不同的來源提取數據。由於數據量龐大,這種創建造成了一些問題。已經決定,不要一次性創建單個數據庫;到將多個數據庫合併到一個數據庫中

  1. 創建幾個包含核心數據表的小型數據庫。
  2. 將較小的數據庫合併到一個更大的數據庫中。
  3. 構建模式/添加相關約束。

我的問題是雙重的。

1.什麼是合併多個數據庫(具有相同的模式/表結構)的最佳方式?

2.有創建這個數據倉庫(超大型數據庫)的更好方法嗎?

謝謝你的時間。

+2

爲什麼創建一個大型數據庫會導致問題,爲什麼不創建很多小型數據庫會導致相同的問題? –

+0

要創建「大型」數據庫需要6個小時以上。形成這個數據庫的大部分數據都是從其他數據庫中提取的(有時是通過網絡)。由於數據的優勢,我們可以掛起創建此數據庫的服務器實例。這是試圖模塊化升級的原因,所以當/如果有一個退出,我們不會得到一個損壞的數據庫。 – MoonKnight

回答

7

您的第一個問題:您提到了相同的模式和表結構,在這種情況下,它將數據從一個數據庫表(即較小的數據庫)簡單移動到另一個數據庫(即較大的數據庫)。爲此必須確保

1)沒有數據的重複(在-至少在PK場)

從1分貝2)將數據移動到另一個用於SQL Server參閱

Transfer data from one database to another database

4

sola的答案很好,並且會工作。這是另一種選擇:不要合併。在導入創建的多個基表上創建一個全聯合視圖。這可以爲您節省大量數據移動。這種觀點被稱爲partitioned view

+0

我知道分區視圖,但是,數據倉庫數據庫必須是獨立的。這個數據庫必須作爲單個數據庫實體提供給客戶端(可能跨越多個.ndf等)。我需要能夠自動化數據庫創建過程,因此@sola建議的方法不是我可以使用的方法。謝謝你的時間。 – MoonKnight

6

SQL-Hub(http://sql-hub.com)將允許您將具有相同模式的多個數據庫合併到單個數據庫中。有一個免費許可證可以讓你從用戶界面執行此操作,但如果您想要自動運行該過程,您可能需要爲許可證付費。但是,如果數據量非常大,它可能會慢慢達到你想要實現的目標 - 你可以試試看。

也有一些文章here,看看這些問題的其他選項。

相關問題