1

我正在使用 FM 来部署数据库。作为该部署的一部分,我正在推出一个视图。变化是这样的:

R1:创建视图

R2:视图没有变化

R3:向视图添加一列

R4:没有变化

R5:从视图中删除列

该视图由源代码管理中的脚本创建。假设我部署了 R3,然后决定回滚到 R2(我正在考虑一个我不想让其处于奇怪状态的生产站点)。所以视图的脚本(drop/create)在本地文件中。我无法再次使用该脚本,因为本地版本位于 R3,但我希望它返回到 R1(或 R2)。

如何使用 FluentMigrator 可靠地将视图回滚到以前的版本?我能想到的唯一选择是将视图创建脚本保存在我的迁移类中的字符串中。但似乎我需要在我的课堂上将它的每个版本都放在一个字符串中——非常笨拙并且对团队来说很难推销。

我能想到的每一个现实的解决方案都与源代码控制的想法背道而驰——在本地拥有一个事物的单一版本并随着时间的推移跟踪它的变化。

4

2 回答 2

1

我将此功能添加到 FluentMigrator 中——能够直接从源代码执行脚本。你可以在这里得到它:

https://github.com/jcollum/fluentmigrator

目前只支持SVN。尚未集成到主分支中。

于 2011-06-03T20:50:15.380 回答
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

现在,如果您需要更改该视图,您可以更改此脚本并部署它们。如果存在,它将删除视图并重新创建它。从源代码管理的角度来看,您所做的只是对文本文件进行更改,因此您应该能够有效地存储它,非常简单地查看差异等等。换句话说,您可以做源代码管理的所有事情做得很好,因为它只是文本。

于 2011-05-15T22:35:59.167 回答