Sql server 使用SSDT部署多个数据库

Sql server 使用SSDT部署多个数据库,sql-server,sql-server-data-tools,Sql Server,Sql Server Data Tools,我们现有的系统在一个SQL Server实例上有多个数据库,我们希望使用SQL Server数据工具部署数据库更改。因此,我创建了一个解决方案,每个数据库有一个数据库项目 当我运行构建时,它会为每个项目创建一个.dacpac文件。理想情况下,我们希望捆绑数据库更改的部署,以便一次性部署所有数据库。我已经看到数据库项目可以引用其他项目,并且假设您也可以使用此机制进行捆绑—但是我不愿意仅仅为了部署而添加引用 在一个包中部署多个数据库的推荐方法是什么?我认为您无法做到这一点。默认情况下,每个数据库都有

我们现有的系统在一个SQL Server实例上有多个数据库,我们希望使用SQL Server数据工具部署数据库更改。因此,我创建了一个解决方案,每个数据库有一个数据库项目

当我运行构建时,它会为每个项目创建一个
.dacpac
文件。理想情况下,我们希望捆绑数据库更改的部署,以便一次性部署所有数据库。我已经看到数据库项目可以引用其他项目,并且假设您也可以使用此机制进行捆绑—但是我不愿意仅仅为了部署而添加引用


在一个包中部署多个数据库的推荐方法是什么?

我认为您无法做到这一点。默认情况下,每个数据库都有自己的dacpac。您可以设置一个脚本,该脚本可以一次构建/发布所有数据库,但一次只能创建/发布一个数据库。不久前,我创建了一个基本批处理文件,该文件将构建所有DACPAC,并按顺序发布每个DACPAC。

好的,我很清楚,您可以编写这种脚本。我最感兴趣的是一种事务性行为——如果(比如)第三个数据库的部署失败,理想情况下,我希望回滚以前数据库的部署。不过,我想我们可以通过数据库备份来解决这个问题,因为数据库有一个状态,所以对于任何非纯代码的东西来说,这都会变得非常棘手。如果您已经完成了任何类型的数据迁移,您必须正确地考虑这一点。您可能会保存一个版本化的DACPAC并使用它们进行恢复,但是您最好的选择是在某个地方设置一个测试系统,以验证如果您需要同时运行所有内容,那么所有内容都会顺利进行。在SSDT升级失败的情况下,您通常会遇到问题吗?在部署期间,我们有一个时间窗口,其中没有任何数据库正在使用,因此,在一个或多个出现故障的DACPAC看来是可行的情况下进行回滚。我们刚刚开始使用SSDT。到目前为止,我们使用了成批的SQL脚本,当出现问题时,反馈/升级机制很差。我可能建议使用PS来进行部署。有几个项目已经在进行中,所以你不需要重新发明轮子。然而,如果您在模式更改之外做任何事情,那么使用SSDT进行回滚将非常棘手。数据移动仍然需要在SSDT之外进行特殊处理,以便将数据放回原位。如果您将DACPAC存储在某个位置以便可以还原,则架构更改将相对容易。您可以检查。