2011-05-15 67 views
1

我正在使用FM來部署數據庫。作爲部署的一部分,我推出了一個觀點。的變化是這樣的:將視圖回滾到同一視圖的以前版本

R1:創建視圖

R2:沒有變化,以查看

R3:添加列到視圖

R4:無變化

R5:從視圖中刪除列

該視圖是由源代碼管理中的腳本創建的。假設我部署了R3,然後決定回滾到R2(我正在考慮一個我不想離開的奇怪的生產站點)。所以視圖的腳本(drop/create)在本地文件中。我不能再使用該腳本,因爲本地版本在R3,但我希望它回到R1(或R2)。

如何使用FluentMigrator可靠地使視圖回滾到以前的版本?我能想到的唯一選擇是將視圖創建腳本保存在我的Migration類中的字符串中。但似乎我需要將我的課程中的每個版本都放在一個字符串中 - 這對於團隊來說非常笨重和難以推銷。

我想到的每一個現實的解決方案都可以與源代碼控制的想法相悖 - 在本地擁有單一版本的東西並隨時跟蹤其變化。

回答

0

一個非常簡單的方法就是做類似:

if (object_id('dbo.myView', 'V')) is not null 
    drop view [dbo].[myView] 
go 
create view [dbo].[myView] as 

select foo, bar 
from dbo.Orders 

現在,如果你需要需要改變這種觀點,你讓你改變這個腳本和部署。如果它存在並且創建新視圖,它將放棄該視圖。從源代碼控制的角度來看,您所做的只是對文本文件進行更改,以便能夠高效地存儲它,輕鬆查看差異等。換句話說,您可以執行源代碼管理確實很好,因爲它只是文本。

+0

不,那不行。考慮文件版本控制和源代碼控制的情況。 – jcollum 2011-05-15 23:37:15

+0

你說它不起作用很奇怪。我之所以這麼建議,是因爲我已經使用了它,它適用於我。祝你好運,找到你正在尋找的東西。 – 2011-05-16 15:08:47

+0

好的我會解釋一下:你有一個腳本視圖,它是視圖的R5的drop/create。你運行該腳本。現在您要回滾到相同視圖的先前版本(例如R3)。那麼你在本地的腳本是R5。那麼,你如何使用你本地的腳本版本來到那個視圖的R3?你不能。你必須從源代碼管理中解脫出來。 – jcollum 2011-05-16 15:40:39

相關問題