使用SSDT部署多个数据库

3
我们有一个现有的系统,其中有多个数据库位于同一个SQL Server实例上,并且我们希望使用SQL Server Data Tools部署数据库更改。因此,我创建了一个解决方案,每个数据库都有一个数据库项目。
当我运行构建时,它会为每个项目创建一个.dacpac文件。理想情况下,我们希望捆绑数据库更改的部署,以便所有数据库可以一次性部署。我看到数据库项目可以引用其他项目,并假设您也可以使用此机制进行捆绑 - 但是我不愿仅出于部署目的而添加引用。
部署多个数据库的推荐方法是什么?

2
你可以查看这篇博客文章 - Ognyan Dimitrov
2个回答

2

我认为你无法做到这一点。默认情况下,每个数据库都有自己的dacpac。您可以设置一个脚本,可以一次性构建/发布所有数据库,但它将逐个执行它们。我曾经创建过一个基本的批处理文件,可以按顺序构建所有的dacpac并将它们全部发布。


好的,我明白你可以做那种脚本。我主要关心的是一种事务性行为——如果(比如说)第三个数据库的部署失败了,我理想情况下希望回滚之前数据库的部署。不过我猜可以通过数据库备份来解决这个问题。 - Hermann.Gruber
1
如果涉及到非纯代码的内容,就会变得非常棘手,因为数据库具有状态。如果你做了任何类型的数据迁移,你必须正确地处理它。你可以潜在地保留一个版本化的 dacpac 堆栈并使用它们进行还原,但更好的选择是在某个地方建立一个测试系统,以验证如果需要同时回滚所有内容,一切是否会顺利进行。你平常升级 SSDT 时会出现失败问题吗? - Peter Schott
我们在部署过程中有一个时间窗口,在这个时间窗口内没有任何数据库在使用,因此如果一个或多个dacpac失败,回滚似乎是可行的。我们几乎刚开始使用SSDT。迄今为止,我们使用了一批SQL脚本,并且当出现问题时,反馈/升级机制很差。 - Hermann.Gruber
1
我建议使用PS进行部署。已经有几个项目在进行中,所以您不需要重新发明轮子。但是,如果您进行模式更改之外的任何操作,回滚将变得棘手。数据移动仍然需要在SSDT之外进行特殊处理以恢复事物。如果您将dacpacs存储在某个地方以便还原,则模式更改将相对容易。 - Peter Schott

0

令人惊讶的是,对此并没有一个确定的答案。我知道Red Gate有SQL自动化工具,但你的公司需要为此付费。如果您有一个确定的答案,我很感兴趣。


这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - Nikita Chayka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接