问题标签 [fluent-migrator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6204 浏览

c# - FluentMigrator 未运行迁移

我继承了一个使用 FluentMigrator 来管理迁移的项目。最初,当应用程序启动时,该项目正在执行进程中的迁移,但 IT 已经解决了这个问题,我们现在必须为我们所有的数据库更改提供脚本给 DBA。

作为此过渡的一部分,我已将迁移移至一个名为 Migrations 的新项目。当我尝试使用命令行工具执行迁移时,它似乎可以工作,但没有将迁移应用于数据库。数据库字符串是正确的,因为如果 VersionInfo 表不存在,则会创建它。在此处输入图像描述

有许多迁移,但大多数都非常简单。这是第一个的示例:

在此处输入图像描述

我正在使用 SQL Server 2012 和 FluentMigrator 1.2.1。

这是 gunr2171 的文本命令行:

以及示例迁移:

0 投票
2 回答
546 浏览

azure - FluentMigrator 从 Application_Start 迁移

我目前正在更改我们的数据库部署策略以使用 FluentMigration,并且一直在阅读如何运行它。有些人建议它可以从 Application_Start 运行,我喜欢这个想法,但其他人说不,但没有说明原因,所以我的问题是:

  1. 在应用程序启动时运行数据库迁移是一个坏主意,如果是,为什么?
  2. 我们正计划将我们的站点迁移到部署到 azure 云服务,如果我们不从 application_start 运行迁移,考虑到我们希望使部署尽可能简单,我们应该如何/何时运行它。
  3. 无论它在哪里运行,我们如何确保它只运行一次,因为我们将拥有一个网站和多个工作角色(尽管我们可以确保只从网站调用迁移代码,但将来我们可能会增加到 2或更多实例,这是否意味着它可以运行不止一次?)

我将不胜感激其他人在部署期间如何处理数据库迁移,特别是从部署到 azure 云服务的角度。

编辑:

查看下面的评论,我可以看到在 application_start 期间运行的潜在问题,也许问题是我试图用错误的工具解决问题,如果 FluentMigrator 不是要走的路,而且在我们的情况下可能不是我们有大量的存储过程、视图等,因此作为迁移的一部分,我将不得不使用 SQL 脚本将它们保持在正确的版本,并且我认为向下迁移是不可能的。

我喜欢在 Application_Start 期间运行的想法是,我可以为 Azure 构建一个部署包,然后将其上传到 staging 并且数据库迁移将运行,就这样,而不是感谢运行手动脚本,然后只需交换投入生产。

0 投票
1 回答
1065 浏览

c# - FluentMigrator 版本控制刷新视图

我正在使用 Fluent Migrator 来保持数据库更新。Up 和 Down 功能完美运行。下一步是我想要创建视图。这些我想从我拥有的 .SQL 文件中运行。我希望每次都运行完所有迁移后运行它。

我目前拥有的是:

和一堂课

这不会被触发,因为在 maintenanceLoader 中它可以找到 0 个元素。我正在插入 _migrate,它的定义如下:

为什么Assembly.GetExecutingAssembly()扫描不到,[Maintenance(MigrationStage.AfterAll)]找不到呢?

我还希望 ViewMaintenance 类能够运行Execute.Sql(Migration 类所具有的。

0 投票
1 回答
39 浏览

.net - 将 Code-First EF6 与旧框架集成

使用 EF6 和代码优先迁移来开发新功能使我的开发非常棒。现在我已经通过了原型阶段,我需要将此流程与我更大的代码库和变更控制流程集成。

迁移很棒,如果我处于不同的情况,我很乐意使用它们,但是当我发布代码时,数据库代码当前在单独的更改控制过程中执行。此外,该架构使用 Visual Studio 2010 中的数据库项目进行版本控制。

有没有办法模拟__migrationHistory表,所以当我部署时,我不会从 EF6 收到任何错误?此外,有没有办法将流畅迁移的输出脚本化为文件输出以供 DBA 执行?我看到我可以手动创建行条目,但我不确定Model二进制字段中存储的内容以及它是否可能只是下面的实际 T-SQL。

0 投票
1 回答
569 浏览

migration - 在批处理文件中获取 Migrate.exe 的输出

我有一个基于用户输入运行 FluentMigrator 迁移的批处理文件。最后一步是运行迁移器,如下所示:

这可以按要求工作 - Migrate.exe 应用程序将所有输出打印到文件中,然后是成功消息,然后将文件写入控制台,因此存在控制台和文件副本。但是如果迁移失败,例如如果用户没有数据库的写权限,它就不能按预期工作。在这种情况下,结束消息期望文件已正确执行。有什么方法可以确定迁移器是否因错误退出?

我想显示:

  • 迁移代码
  • (如果失败)失败的错误信息
  • (else) 成功消息

编辑:我最初询问如何显示错误和一般输出 - 这是通过>> install_log.txt 2>&1代码实现的。现在我只需要弄清楚如何识别迁移时是否发生错误。

0 投票
2 回答
717 浏览

sql-server - FluentMigrator 是否适用于 SQL Server 2014

Fluent Migrator 是否不支持 SQL Server 2014?我遇到异常 - “无法确定数据库服务器的主要版本或 FluentMigrator 不支持。”</p>

0 投票
1 回答
802 浏览

sql-server - Execute.EmbeddedScript 超时

我有一个运行嵌入式 SQL 脚本的迁移,该脚本可能需要大量时间才能执行。

当我从 MSSM 运行脚本时,它运行良好,

运行迁移时,出现错误:

错误是超时已过期。在操作完成之前超时时间已过或服务器没有响应。

我无法找到可以调整超时值的位置。帮助将不胜感激。

0 投票
1 回答
739 浏览

visual-studio-2013 - 如何在 Visual Studio 2013 中运行 Fluent Migrator

我在 Visual Studio 中创建了一个迁移我使用 Nuget 将 Fluent Migrator 添加到我的项目中,但是如何运行迁移以将表和列添加到我的数据库中?

0 投票
1 回答
263 浏览

c# - 在 Build 中执行 .NET 代码

我正在编写一个 C# 应用程序,它采用嵌入式 SQL 文件并使用 FluentMigrator 执行它们;而且我必须找到一种方法来去除我的 SQL 中某些导致 FluentMigrator 尝试执行时出现问题的字符。通过 FM 执行 SQL 的方式有 3 种:按名称执行文件、按名称执行嵌入资源、内容为有效 SQL 的字符串。

以前,我曾尝试使用执行包含在字符串中的 sql 的方法,在将坏字符传递给 FM 之前,我可以在其中去除坏字符。由于其他限制,我不能走这条路,必须通过给出嵌入资源的名称来执行 SQL。这里的问题是我无法在通过这种方法执行之前去除坏字符。

有没有办法在构建/编译时执行可以从我的嵌入式资源文件中删除坏字符的代码。我知道有构建事件,但它们似乎仅限于命令行功能。我可以做更多吗?

编辑:这些字符的一个示例是“\r\n”、“\n\r”,甚至是“;” 一个人在一条线上。

0 投票
2 回答
330 浏览

c# - FluentMigrator Execute 中的大数据错误(字符串模板,参数对象 [] args);

我有一个脚本可以使用执行方法sql将数据从旧表迁移到新表。FluentMigrator

这是我的脚本:

userProperty表有大约 1100 万行,位于:

  • 第一步,我必须插入表中的某些列C。(1100万行)
  • 第二步,我必须将数据从 C 表插入到 B 表。(1100 万行)
  • 第三步,我应该更新 C 表(1100 万行)

总共 1100 万行,但我收到此错误:

错误是由于“ACTIVE_TRANSACTION”,数据库“test”的事务日志已满。

我想找到最快的方法,因为这是one time running脚本。