【问题标题】:Error on large data in FluentMigrator Execute(string template, params object[] args);FluentMigrator Execute 中的大数据错误(字符串模板,参数对象 [] args);
【发布时间】:2015-05-21 13:23:11
【问题描述】:

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

这是我的脚本:

                INSERT INTO [Demo].[C]([key], [value], [tempID]) SELECT [name], [value], [userID] FROM [Demo].[A]
                INSERT INTO [Demo].[B]([parentID], [propertyID]) SELECT [tempID], [id] FROM [Demo].[C] WHERE [tempID] IS NOT NULL
                UPDATE [Demo].[C] SET [tempID] = NULL

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

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

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

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

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

【问题讨论】:

    标签: c# sql sql-server tsql fluent-migrator


    【解决方案1】:

    您的事务日志文件已满,没有剩余的磁盘空间供其增长(如果指定了自动增长选项)。

    执行以下查询以获取有关事务日志文件设置的更多详细信息:

    SELECT [type_desc]
          ,[name]
          ,[physical_name]
          ,[size]
          ,[max_size]
          ,[growth]
    FROM [sys].[database_files];
    

    您的问题可能有不同的解决方案。例如,获取更多空间并启用自动增长选项、单独执行步骤等。

    您可以确定的几件事:

    • FULLSIMPLE 恢复模式下的数据库
    • 如果它使用FULL恢复模式,检查是否定期备份事务日志文件(如果不这样做,它会尽可能多地增长并占用你的空间)

    如果你的数据库不需要在FULL恢复模式下,可以放到SIMPLE

    【讨论】:

      【解决方案2】:

      如果您在同一个查询窗口中运行这些,SSMS 将在一个隐式事务中运行所有这些。尝试将这些中的每一个放在单独的显式事务中。另外,清除你的T-Log

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-13
        • 2012-12-17
        • 1970-01-01
        • 1970-01-01
        • 2021-08-27
        • 2021-11-23
        • 1970-01-01
        • 2015-04-30
        相关资源
        最近更新 更多