c# - 迁移附加了 C# 应用程序的 Oracle 数据库 : How to manage database migration?

标签 c# database oracle migration

我有一个使用 Oracle 数据库的 C# 应用程序,并且已经发布。现在是发布新版本的时候了。 C#对象模型已修改,对表结构有影响。

如果我发布新版本,我需要处理现有数据。仅仅删除表格并重新创建这些表格不会让任何客户满意。

为了解决这个问题,我收集了 SQL 脚本,它将以前发布的数据库结构更改为新的数据库结构。在此过程中,数据也会迁移。 SQL 脚本提交到存储库,如 C# 源代码。在 CruiseControl.NET 的帮助下定期测试数据库的修补。针对修补后的数据库运行 NUnit 测试,以发现数据库表和 C# 对象模型之间的不匹配。

整个过程确实有效,但我觉得这可以做得更好。我认为数据库迁移非常关键。无法与错误修补的数据库一起使用的已交付应用程序没有任何值(value)。丢失数据是 Not Acceptable 。这些可怕的场景可能会让我觉得根本不要更改数据库。因此,对我使用的工具和实践充满信心对我来说非常重要。

上周我偶然发现了 LiquiBase我问自己 - 现在在 SO 中:

哪些工具或实践可以帮助以更低的风险和更高的信心进行数据库迁移?那里有什么好书或互联网资源吗?

我对 C# 和 Oracle 的特定解决方案特别感兴趣,它们可能适合我上面概述的开发过程。

最佳答案

数据库升级脚本必须是开发过程的一部分。这是跟踪数据库架构升级的一种方法:

  • 在数据库中创建 VERSION 表,其中包含一 strip 版本号的记录
  • 每次更改应用程序的数据库架构时,您应该:
    • 创建用于创建、更改或删除数据库对象的 SQL 脚本
    • 创建 SQL 脚本来管理必须使用新数据模式完成的数据更改(例如,在新字段中插入默认值,在新表中插入默认记录,创建用于拆分或合并表的脚本,...)
    • 增加数据库版本号
      • 对于每次更改,我通常会创建一个名为 DbVerXXXX.SQL 的脚本,其中包含所有必要的升级(XXXX 是版本号)。此外,我会分小步进行更改 - 仅为您将在应用程序中进行的下一次更改更改数据库架构。不要创建需要数周或数月的工作来升级您的应用程序的数据库升级。
  • 创建将用户数据库升级到新版本的脚本:
    • 脚本应检查当前数据库版本,然后执行将模式转换为所需级别的数据库升级脚本
    • 更改版本表中的版本号

此过程使您能够:

  • 将所有数据库架构更改置于源代码控制之下,因此您拥有完整的更改历史
  • 在将升级脚本发送给客户之前,尝试在测试数据库上测试您的升级脚本
  • 自信地自动升级用户数据库

关于c# - 迁移附加了 C# 应用程序的 Oracle 数据库 : How to manage database migration?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/499171/

相关文章:

c# - 映射两个具有不同 namespace 的相同枚举

c# - 在 using 语句中使用 null IDisposable 值

c# - 从 Xaml 文件创建数据对象

java - 使用 ResultSetTableModel 删除 JTable 选中的行

java - Apple 弃用 Java,我们作为程序员的技术选择是什么?

Python 3.3 - 连接 Oracle 数据库

c# - 如何创建无需按下一步按钮的静默安装?

php - mysql 数据库插入将所有 ID 更改为 4294967295

c# - 如何在数据库中存储和访问 session

oracle - DevArt 的 dotConnect for Oracle 与 DataDirect 的 ADO.NET 数据提供程序