2011-05-15 29 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

相关问题