【问题标题】:How to deploy sql changes with .NET + Oracle如何使用 .NET + Oracle 部署 sql 更改
【发布时间】:2015-02-03 20:55:25
【问题描述】:

我的设置是服务器上的 .NET 和 Oracle 作为数据库。我正在寻找一种方便的方法来连续部署 SQL 更改。

到目前为止,我有一个构建服务器 (Teamcity),它从 DVCS 中提取更改并创建一个部署包。然后我将包导入 IIS。

这工作正常,除了没有发生任何 SQL 部署。我不知道如何将 SQL 部分集成到这个过程中。

SQL 更改存储在文件中并按日期和时间命名并提交到 DVCS。

我的要求是能够部署到不同版本的系统,只运行所需的 SQL 脚本。这甚至可能吗?

我想省略任何付费的第三方工具。

编辑 - 在此过程中不需要创建新数据库,它已经存在

【问题讨论】:

  • 你好。你能更具体一点吗?你有什么问题? SQL 的持续集成还是什么?

标签: .net oracle deployment teamcity


【解决方案1】:

根据您对第三方工具的看法,您可以查看FluentMigrator library。您可以从自己的应用程序中引用它,这样它就不会像第三方工具了。

如果你不能使用 3rd 方库,那么你必须自己做:

  • 在您的数据库中维护一个表,该表将包含在该特定数据库上执行的所有增量脚本的列表。或者,只存储最后执行的脚本,或“数据库版本号”。
  • 对脚本使用命名或编号约定,以便您可以确定应用了哪些脚本,哪些没有应用,并以正确的顺序应用脚本。
  • 编写一个数据库迁移工具,它将部署中包含的脚本列表与目标数据库中的“版本”表进行比较,确定应该执行哪些已部署的脚本,执行它们,然后更新“版本”表。

【讨论】:

    【解决方案2】:

    我这样做的方式虽然并不理想,但多年来一直在工作,但我将 sql 脚本的来源保存在一个目录结构中,该目录结构与我的工件一起压缩并部署,以及我编写的安装程序,该程序提取和迭代目录并根据文件夹以依赖顺序运行脚本:

    • 表格
    • 观看次数
    • 过程
    • 触发器
    • 更新

    我在每次部署时运行所有脚本。在每个 sql 脚本中,我处理更新中的操作,

    对于表和索引,如果存在,则跳过,否则创建 存储过程、视图、触发器、删除和重新创建(以及重新分配权限) 然后是一个更新脚本来执行添加列、重命名等操作。

    这绝对是我在我们的持续部署环境中必须管理的最困难的事情。我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2010-11-20
      • 2011-10-17
      • 1970-01-01
      • 2013-09-06
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多