昨天在做变更时,遇到这样一个问题。
在同一个SQL Server实例上,要将一个库中的一个表的数据,全量导入到另一个数据库中,表结构完全一致的空表中。目的数据库的恢复模式是简单。
原定的实施计划是用导入导出向导做,但在向导执行时报错某一列的数据无效。
导入数据。
随时查看导入的进度。
当运行了10分钟,插入了2000W行时,监控系统告警磁盘空间不足。检查磁盘空间发现,数据库日志文件所在的盘,可用空间只剩几十MB了。
看着行数不断减少,估计回滚完成的时间。回滚完成后,赶紧收缩了日志文件。在这种情况下,inser
在同一个SQL Server实例上,要将一个库中的一个表的数据,全量导入到另一个数据库中,表结构完全一致的空表中。目的数据库的恢复模式是简单。
原定的实施计划是用导入导出向导做,但在向导执行时报错某一列的数据无效。
需要导入的数据有6000W行,要找到哪一行的数据有问题会非常耗时,于是就打算用
insert into destination_table select * from source_table with(nolock)
导入数据。
导入的过程中,执行
select count(1) from destination_table with(nolock)
随时查看导入的进度。
当运行了10分钟,插入了2000W行时,监控系统告警磁盘空间不足。检查磁盘空间发现,数据库日志文件所在的盘,可用空间只剩几十MB了。
只插入了1/3的数据, 日志文件增长20多GB,导致磁盘空间耗尽。服务器上暂时没有别的磁盘空间可用,于是就取消了insert的操作,让事务回滚,时不时执行
select count(1) from destination_table with(nolock)
看着行数不断减少,估计回滚完成的时间。回滚完成后,赶紧收缩了日志文件。在这种情况下,inser