2017-07-14 40 views
2

我對SQL Server管理相當陌生,目前正在尋找使用SSIS構建解決方案。 我的問題主要是關於「我的邏輯是正確的」和一些關於最佳實踐的更小的事情。SSIS - 定期導入多個sql視圖

但讓我畫你的照片開始!

我有一個應用程序,它爲我提供了數據庫視圖,以減輕對該數據庫的壓力我想將這些視圖的數據定期傳輸到輔助數據庫/不同的實例,然後我可以在其上設置更多特定權限/轉換/其他視圖建立在該數據上。我最初提供的觀點在我如何獲得它們方面已經得到了很大的修正。

經過一番閱讀後,我覺得要走的路是使用SSIS。我開始構建我的包,並使用「SSIS導入和導出嚮導」進行初始傳輸。

現在對於我的第一個問題,這將是傳輸數據的正確方法,並且SSIS是正確的工具嗎?

其次,我注意到嚮導做了多個SQL Preperation任務和數據流任務。 對我來說,將每個成爲表格的視圖分割成單獨的SQL Preperation Task和單獨的數據流任務似乎是合乎邏輯的,只是爲了保持清晰的圖像和儘可能多的控制。雖然這需要一些時間來設置(> 100個視圖/表),但它似乎比巫師如何將它們組合在一起更簡潔。

此外,由於預處理任務已經創建表,所以這些表在第二次執行時會失敗,因爲它們已經存在。除了向每個查詢添加IFEXISTS子句之外,是否還有一個快速的工作週期?

如果我從錯誤的方向完全接近完成任何想法,我們將不勝感激,或向更好的解決方案提示。 這個想法是稍後將一些SSAS添加到系統中,併爲這些表/數據提供一些數據分析。

謝謝!

+0

也許我誤解了這句話。我從多個源視圖創建多個表,每個視圖具有完全不同的列/數據類型,但它們只是來自同一個源數據庫。 –

回答

1

如果您要將數據傳輸到其他實例,那麼SSIS可能是您最好的選擇。你的下一個問題是確定你想每次都導入所有的數據,還是隻導入新的/更新的項目。

如果您每次都導出所有數據,這會簡單得多,並假設您有一個合適的維護時段(例如一夜之間),您可以在不影響最終用戶的情況下完成該過程,只需簡單地截斷數據並重新加載。這顯然與增加數據傳輸量有關。

如果您只想導出新的/更新的數據,現在需要確定是否可以真正計算出哪些行是新的或不同的,而無需簡單地將它們與輔助數據庫中的數據進行比較。理想情況下,您的源表格將具有可靠的LastUpdateDate列或更好的rowversion列,使用該列可以導出所有具有比次實例中相應表中顯示的值更新的行。

對於更新只有路線有很多閱讀需要完成,爲此我強烈建議你avoid the Slowly Changing Dimension transformation like the plague

如果您想要在大量類似的對象上執行簡單操作,例如將ifexists添加到您的帖子中的表格創建中,您也認爲有很多重複性任務。解決這個問題的最好方法是學習如何使用Biml自動完成基於元數據的重複性任務。

祝你好運!

+0

謝謝您的信息。但是,這是否意味着將每個表的每個準備任務和數據流任務分解爲合理/最佳實踐?或者將它們結合起來更有意義? –

+0

@DirkR。我想說的很多都取決於個人喜好和解決方案的需求。我個人更喜歡提取一切,然後在可能的情況下進行轉換以使事情簡單化,但根據您的情況,這並非總是可行或合理。我會建議設計一些做你想做的事情的方法,然後選擇一個看起來最合適的方法。這樣你也會強迫自己去看待不同的方法,因此學到更多。 – iamdave

+0

好吧,啓動它基本上是:從視圖A(DB1)獲取數據並將其轉儲到表A(DB2)中,從視圖B(DB1)獲取數據並將其轉儲到表B(DB2)中,然後計劃一個包更新/替換我們將在之後決定的頻率中的數據。 (所以現在還沒有轉換)事情是我對SSIS相當陌生,我有一種感覺,如果我現在不正確地設置它,它會永遠困擾我:)以一個課程爲好,但總是很高興聽到來自真正與之合作並具有真實生活經驗的人。 –