sql - 通过 SDLC 传播数据库更改的常见做法?

标签 sql database version-control sdlc

我完成了一项功能请求,需要更改我们网站的数据库。

将数据库更改传播到软件开发生命周期的测试和生产阶段的标准方法是什么?我的工作人员建议我们没有为此制定适当的程序,但我们应该这样做。

在版本控制的上下文中执行此操作的常见方法是什么?

我正在考虑在自述文件中添加一条指令,让测试人员/部署人员在尝试启动站点之前通过 psql 执行项目中包含的 SQL 脚本。但我不希望该脚本保留在后代分支中,对吗?或者我也这样?答案是对数据库的所有更改都应该以某种方式集中化吗?

这里的部分问题可能是我不知道更准确的方式来提出这个问题,所以很难谷歌。非常欢迎任何建议,谢谢!

最佳答案

SQL DDLs 的源/版本控制和传播是一个很难解决的问题。有第三方工具,例如 Red Gate's SQL Source Control这有帮助,但可能会变得昂贵。根据我的经验,不同的开发商店倾向于使用内部开发的手动流程。这可能意味着 DDL 导出和保存脚本,将 SQL DDL 硬塞到所使用的任何修订控制系统中。 (Git、SVN、CVS 等)我还看到一些商店只是简单地压缩并存储整个(但空的)数据库。这是一种相当笨拙的方法,但确实有效。

最好的办法是使用一种工具来帮助您,就像上面提到的那样,但导出和版本控制 DDL 脚本也可以。是的,您确实希望 DDL 集中在某些 revision control system 中。 。如果您使用自动构建系统,您还可以包括针对数据库执行版本控制的 DDL 脚本。无论您选择哪种方法,最重要的是保持一致。

一些可帮助您入门的资源:( This is my Google search 生成以下链接。)

关于sql - 通过 SDLC 传播数据库更改的常见做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24615897/

相关文章:

sql - PostgreSQL INSERT INTO WITH 多个 SELECT

database - 在列表框中换行文本 - ms access 2010

php - 将复选框值存储在 MySQL 数据库中,然后检索它们是否已设置……最好的方法是什么?

database - docker 在没有主机卷的情况下运行本地脚本

git - 如何撤消 git merge squash?

tfs - TFS 2010 源代码管理中的符号链接(symbolic link)?

mysql - 尝试使用用户定义的变量获取连接的主键

mysql - 嵌套查询的命令不同步错误

c# - 驱动程序和提供程序之间的区别

c# - 我如何告诉 VS 2008 停止在我的文件前面放置字节顺序标记?