【问题标题】:Data Migrations on Production Database生产数据库上的数据迁移
【发布时间】:2011-04-23 19:00:04
【问题描述】:

有没有办法让生产数据库上的数据迁移不使用 SQL?

我们正在使用 MigratorDotNet,当我们为更改数据库方案的应用程序构建新功能时,我们需要进行一些数据更新,我们必须执行复杂且麻烦的 SQL 语句,以便数据在生产中保持一致。

想知道是否有其他方法可以做到这一点,最好的做法是什么?关于其他可能的解决方案的任何想法?

我们不能使用 NHibernate 之类的东西,因为当方案发生变化时,我们必须继续修复旧的迁移,这很容易出错。

【问题讨论】:

    标签: sql database migration production-environment


    【解决方案1】:

    诀窍是使用您的迁移工具并将所述数据操作语句折叠到迁移中。我们通常在几个项目中使用同一事物的扩展版本,它绝对可以处理这个技巧。

    【讨论】:

    • 这就是我们正在做的事情,我们发现的缺点是我们设法使用 Nhibernate ORM 构建项目,因此我们不必直接使用 StoredProcedures 或 Sql 语句处理 ADO .net ,但是在迁移上似乎没有其他方法可以在不使用 SQL 的情况下迁移数据操作语句,因为如果我们使用 nhibernate,我们会发现当方案更改时,映射会更改,我们需要返回并修复旧的迁移可能不适用于新的映射。
    • 我明白你在说什么,但这有点像 cookie 崩溃的方式——在处理内部管道 (nhibernate) 之前,你需要处理好基础 (RDBMS)。
    • 好的,非常感谢您的回答,我们将继续按照您所说的在迁移器点网内进行数据操作。谢谢
    【解决方案2】:

    如果您已经在使用像 Migrator.NET 这样的迁移工具,那么我会说您已经完成了大部分工作。复杂的模式/数据更改只是 RDBMS 世界中的一个事实。

    【讨论】:

      【解决方案3】:

      试试螨虫。它让您可以使用 sql 执行任何操作并使用 sql 执行此操作,但能够确保您的数据库处于所需的版本,并且不会冒险执行已经运行的脚本(或错过脚本),从而离开您的数据库处于一致的状态。

      如果您的开发人员采用此方法。部署是一个简单的mite update,然后您就知道问题与产品或数据相关(但与架构无关)。

      https://github.com/soitgoes/mite

      让我知道你的想法。我开发了它,并且多年来一直与我的团队一起使用它并取得了巨大的成功。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-06-22
        • 1970-01-01
        • 1970-01-01
        • 2019-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多