FluentMigrator Execute(string template, params object[] args) 中的大数据出错;
Error on large data in FluentMigrator Execute(string template, params object[] args);
我有一个 sql
脚本可以使用 FluentMigrator
执行方法将数据从旧 table 迁移到新脚本。
这是我的脚本:
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
table 有大约 1100 万行,并且在:
- 第一步,我必须插入
C
table 中的某些列。(1100 万行)
- 第二步,我必须将数据从 C table 插入到 B table。(1100 万行)
- 第三步,我应该更新 C table(1100 万行)
总共 1100 万行,但出现此错误:
The error was The transaction log for database 'test' is full
due to 'ACTIVE_TRANSACTION'.
我想找到最快的方法,因为这是 one time running
脚本。
如果您在同一个查询 运行 中使用这些 window,则 SSMS 运行 将其全部包含在一个隐式事务中。尝试将这些中的每一个都放在一个单独的显式事务中。另外,清除你的 T-Log
您的事务日志文件已满,没有剩余磁盘 space 可用于增长(如果指定了自动增长选项)。
执行以下查询以获取有关您的事务日志文件设置的更多详细信息:
SELECT [type_desc]
,[name]
,[physical_name]
,[size]
,[max_size]
,[growth]
FROM [sys].[database_files];
您的问题可能有不同的解决方案。例如,获取更多space并启用自动增长选项,单独执行步骤等
您确定的几件事:
- 您的数据库是否处于
FULL
或 SIMPLE
恢复模式下
- 如果它正在使用
FULL
恢复模式,请检查是否对事务日志文件进行了定期备份(如果不进行备份,它会尽可能多地增长并吃掉你的 space)
如果你的数据库不需要在FULL
恢复模式下,你可以把它放到SIMPLE
.
我有一个 sql
脚本可以使用 FluentMigrator
执行方法将数据从旧 table 迁移到新脚本。
这是我的脚本:
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
table 有大约 1100 万行,并且在:
- 第一步,我必须插入
C
table 中的某些列。(1100 万行) - 第二步,我必须将数据从 C table 插入到 B table。(1100 万行)
- 第三步,我应该更新 C table(1100 万行)
总共 1100 万行,但出现此错误:
The error was The transaction log for database 'test' is full due to 'ACTIVE_TRANSACTION'.
我想找到最快的方法,因为这是 one time running
脚本。
如果您在同一个查询 运行 中使用这些 window,则 SSMS 运行 将其全部包含在一个隐式事务中。尝试将这些中的每一个都放在一个单独的显式事务中。另外,清除你的 T-Log
您的事务日志文件已满,没有剩余磁盘 space 可用于增长(如果指定了自动增长选项)。
执行以下查询以获取有关您的事务日志文件设置的更多详细信息:
SELECT [type_desc]
,[name]
,[physical_name]
,[size]
,[max_size]
,[growth]
FROM [sys].[database_files];
您的问题可能有不同的解决方案。例如,获取更多space并启用自动增长选项,单独执行步骤等
您确定的几件事:
- 您的数据库是否处于
FULL
或SIMPLE
恢复模式下 - 如果它正在使用
FULL
恢复模式,请检查是否对事务日志文件进行了定期备份(如果不进行备份,它会尽可能多地增长并吃掉你的 space)
如果你的数据库不需要在FULL
恢复模式下,你可以把它放到SIMPLE
.