Visual Server数据库项目数据运动脚本在不同版本的数据库上运行

Bro*_*ski 6 sql-server data-migration database-project visual-studio-2010

我们一直在使用Visual Studio数据库项目来维护项目的当前架构,这对于我们在将数据库架构引入新开发机器方面效果很好,但我们还没有用它来升级环境.以前我们使用迁移脚本将您从初始版本带到下一版本,依此类推,直到您处于当前版本,但现在我们希望利用数据库项目的强大功能.

我最近读了Barclay Hill的两篇帖子

在部署期间管理数据运动(第1部分)
在部署期间管理数据运动(第2部分)

其中介绍了从一个版本转到另一个版本时如何进行部署前后脚本,我们已经习惯了很好的效果,但是我现在陷入了一些我无法解决的问题,并感到我错过了.我们有两个不同版本的数据库,但迁移脚本不适用于两者中的较旧版本.以下是我们场景的简化版本.

脚本

版本1


1 ColumnABC CHAR(1)

版本2

表1
ColumnXYZ INT

从版本1到版本2的数据移动

预部署脚本检查数据库所处的版本,如果版本为1,则将ColumnABC中的数据放入临时表中.

部署后脚本检查我们现在是否为版本2,并检查是否存在在预部署脚本中创建的临时表,并在将char转换为int后将其放入新列ColumnXYZ中.

版本3

表1
Column123 INT

当我们将数据库从版本1升级到版本2然后升级到版本3时,一切正常.但是,如果我们在版本1上有一个数据库并希望跳转到版本3,则部署后脚本将失败,因为没有ColumnXYZ,因为它现在是Column123.

在旧的迁移方法中,这不会是一个问题,因为部署逐个遍历每个版本,但这不是数据库项目的工作方式.还有其他人经历过这个吗?你是如何处理它并让我错过了一些明显的东西?

Ben*_*jol 0

很抱歉看到您在这里没有得到任何答复。你最后有办法解决一些问题吗?

我刚刚开始研究“数据家伙”,整个数据运动的事情看起来绝对是房间里的大象。

我刚刚读完您提到的两篇博客文章,我的理解是您需要结合检查版本和预期的架构条件。所以我猜这意味着您需要在版本 3 的部署后脚本中执行两个不同的子句。

(请告诉我。我还在犹豫是投资这个还是走经典的 DIY 路线。)