如何使用.NET + Oracle部署sql更改

时间:2015-02-03 20:55:25

标签: .net oracle deployment teamcity

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

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

这样可以正常工作,但不会发生任何SQL部署。我不知道如何将SQL部分集成到这个过程中。

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

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

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

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

2 个答案:

答案 0 :(得分:1)

根据您认为的第三方工具,您可以查看FluentMigrator library。您可以从自己的应用程序中引用它,使其看起来不像第三方工具。

如果你不能使用第三方库,那么你必须自己动手:

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

答案 1 :(得分:0)

我这样做的方式,虽然不理想已经工作了多年,我保留sql脚本源于一个目录结构,该目录结构被压缩并与我的工件一起部署以及我编写的安装程序,它提取并迭代目录并根据文件夹以依赖顺序运行脚本:

  • 视图
  • 特效
  • 触发器
  • 更新

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

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

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