使用TFS 2015部署数据库更改的不同方法有哪些?

Cha*_*aka 1 sql-server-2012 tfs-2015 devops

目前,我们在CI/CD部署之外手动运行数据库脚本(SQL Server 2012).我们可以使用TFS 2015 Update 3自动部署数据库更改的方式(包括工具集)有哪些?

way*_*est 5

这里有两种方法,两种方法都适用于TFS.实际上,TFS只是简化了用于更新数据库的任何脚本的执行,包括您自定义的手工脚本.

有一种基于状态的方法,它使用比较技术查看您的VCS/dev/test/staging数据库并将其与生产进行比较.与其他比较工具一样,Redgate Software的SQL Source Control和DLM Automation Suite也是如此.您要做的是使用命令行或编程接口来设置源和目标,捕获输出,然后在发布过程中将其用作工件.我可能会将工件的评论作为您流程中的脚本选择.

请注意,基于状态的比较存在一些问题.重命名,拆分,合并,数据移动,其他一些.一些比较工具可以解决这个问题,有些则不然.请注意,这可能是一个问题.如果你有一个更成熟的数据库,也许不是,但你应该考虑这个.SQL Source Control允许自定义迁移脚本,它可以处理这些问题.

另一种方法是脚本运行或迁移策略,其中您对dev数据库所做的每个更改都被捕获为有序脚本,如果需要,框架将按顺序执行这些更改.这是某些人的首选,因为您可以确切地看到将在开发和部署时执行哪些代码.来自Redgate Software,Liquibase,Rails Migrations,DBUp,FlywayDB的ReadyRoll都使用这种策略.

这些都不是更好或更糟.两种方法都有优点和缺点,但实际上选择取决于您的舒适程度和偏好.

披露:我为Redgate Software工作.