目前,我们在CI / CD部署之外手动运行数据库脚本(SQL Server 2012)。我们可以使用TFS 2015 Update 3自动部署数据库更改的方式(包括工具集)是什么?
答案 0 :(得分:5)
这里有两种方法,两种方法都适用于TFS。实际上,TFS只是简化了用于更新数据库的任何脚本的执行,包括您自定义的手工脚本。
有基于状态的方法,它使用比较技术查看您的VCS / dev / test / staging数据库并将其与生产进行比较。 SQL Source Control和Redgate Software的DLM Automation Suite就像其他比较工具一样。您要做的是使用命令行或编程接口来设置源和目标,捕获输出,然后在发布过程中将其用作工件。我可能会将工件的评论作为您的流程中的脚本选择。
请注意,基于状态的比较存在一些问题,但这些问题并不顺利。重命名,拆分,合并,数据移动,其他一些。一些比较工具可以解决这个问题,有些则不然。请注意,这可能是一个问题。如果你有一个更成熟的数据库,也许不是,但你应该考虑这个。 SQL Source Control允许自定义迁移脚本,它可以处理这些问题。
另一种方法是脚本运行或迁移策略,其中您对dev数据库所做的每个更改都被捕获为有序脚本,如果需要,框架将按顺序执行这些更改。这是某些人的首选,因为您可以确切地看到将在开发和部署时执行哪些代码。来自Redgate Software,Liquibase,Rails Migrations,DBUp,FlywayDB的ReadyRoll都使用这种策略。
这些都不是更好或更糟。两种方法都有优点和缺点,但实际上选择取决于您的舒适程度和偏好。
披露:我为Redgate Software工作。
答案 1 :(得分:1)
如果部署数据库更改只是意味着将SQL Server数据库项目(.sqlproj文件)与Team Foundation Server中的Team Foundation Build一起使用。
有几种方法可以实现这一目标:
.dacpac
文件。更多详情请参阅此博客:Deploying SSDT During Local and Server Build。
至于使用TFS2015,您还可以尝试使用 SQL Server Database Deployment 任务。
使用此任务将SQL Server数据库部署到现有SQL 服务器实例。该任务使用DACPAC和SqlPackage.exe 提供对数据库创建和升级的细粒度控制。