将 SQL 部署脚本构建到应用程序中?

Posted

技术标签:

【中文标题】将 SQL 部署脚本构建到应用程序中?【英文标题】:Building SQL deployment scripts into the application? 【发布时间】:2013-02-25 22:24:08 【问题描述】:

当我们更新客户的软件安装时,我们目前有一种相当手动、繁琐、混乱且容易出错的方式来运行 SQL 部署脚本。我们正在考虑寻找一个第三方 SQL 部署工具来自动化这个过程。

但是,我正在将构建我们自己的 SQL 部署工具的想法推广到应用程序本身。这很简单 - 在应用程序启动时,它会:

1) 检查现有的数据库架构版本(例如“35”)

2) 检查“最新”数据库架构版本(例如“38”)

3) 从资源文件(例如“36”、“37”、“38”)中检索相关的 SQL 部署脚本

4) 锁定数据库并运行每个所需的 SQL 部署脚本

请注意,如果发生任何错误,这仍将由 IT 技术人员运行,而不是由最终用户运行。

这看起来很不正统,但我真的看不出有什么问题。你的想法?

【问题讨论】:

我见过类似的数据库部署作为 SSIS 包完成。维护包很耗时,但经过一些测试和调整后,它运行良好。 【参考方案1】:

我看不出这有什么固有的错误。 在我工作过的一家公司,他们构建了一个自定义 SQL 脚本安装程序,允许他们自动将更改应用到数据库,必要时回滚更改,并密切关注已应用的版本。

无论应用程序的预期结果如何,您都需要设置约定(即数据库版本应具有此文件夹结构等)并确定将在运行该工具时使用的需求和流程(即如何自动化,你会成功的)

【讨论】:

谢谢,很高兴获得一些外部验证。【参考方案2】:

不要建立自己的。对于定制解决方案而言,这个问题太常见了。

您正在寻找数据库迁移工具,我的建议是liquibase。它可以从命令行运行或集成到构建过程中。对我来说特别有价值的独特功能是生成 SQL 升级(和降级)脚本,我们在支持生产安装时经常需要这些脚本。

有关替代迁移工具的更详细列表,请参阅以下答案:

Migrations for Java

【讨论】:

以上是关于将 SQL 部署脚本构建到应用程序中?的主要内容,如果未能解决你的问题,请参考以下文章

npm 错误!缺少脚本:将反应应用程序部署到heroku时构建

如何将软件构建从 Azure DevOps 部署到内部服务器?

如何在构建时使用数据库项目执行主数据 sql 脚本

错误的ERR!缺少脚本:在将react应用程序部署到heroku时构建

使用脚本启用到 sql express 的远程连接

无法为 Vue Webpack 构建的应用程序加载 Worker 脚本