2016-10-31 23 views
0

我是DBA的新手,而不是SQL人員,因此請小心。如何重複執行多步模式更改(ETL模式更改?)

我想重組一個數據庫,需要添加新的列,表和關係,然後刪除舊的表,列和關係。三步過程似乎是按順序進行的。

  1. 更改架構以添加新的東西
  2. 運行SSIS掛鉤使用一些舊數據的新數據。
  3. 更改模式以刪除舊東西。

我在VS 2015中使用SQL數據庫Project來維護模式,並使用模式比較來更新數據庫模式。如果可能,我想使其可重複或自動化,以便我可以在非生產數據庫上對其進行測試以獲得正確的流程:更改模式 - >運行ETL->更改模式。有沒有辦法從ETL中應用模式更改,還是需要手動操作?有沒有辦法將兩個模式存儲到文件中,然後應用它們,而不是VS發佈或比較?

回答

1

有一個SQL任務可以讓你做你想做的事情。您想要更改表格(添加列),將數據從舊列移動到新列,然後刪除舊列。

1) Alter table tableA add column .. 
2) update table tableA set .. 
3) alter table tableA drop column... 

在運行它之前,請仔細測試您的代碼。

+0

感謝本傑明。那麼,你認爲我應該跳過SSIS和數據庫項目嗎?他們對理論上的SQL初學者來說似乎很不錯,對現實情況不太確定。 – jlear

+0

哦,你在談論SSIS中的SQL任務嗎?沒關係。 – jlear

0

它的工作!這裏是ETL的例子。 請注意,爲數據流設置DelayValidation爲true,併爲數據流中的某些操作禁用ValidateExternalMetadata非常重要,因爲數據庫不是靜態的。

Example Control Flow that Modifies Schema