有一个表有大概1000万条数据,现在需要把这个表的数据导入到另外一个数据结构完全一样的表中,我现在是直接用数据导入功能,直接从哪个表复制数据到新表,可执行了20个小时候还一直停留在状态1004,不知道是什么原因,有没有解决办法,停止估计也得半天,又不敢强制结束怕把数据丢失了。

解决方案 »

  1.   

    如果目的表没有数据,可以停止。当事务未回滚,导致目的表产生数据,可以truncate table 目的表处理。对于1000万数据insert,建议bcp 导出(比如dat格式), 再bcp导入。
      

  2.   

    1、存在当前导入事务,你的想法尚可行。源表属于读操作,理论上不会有数据影响,但是。。目的表可能造成表或者错误,严重可能发生log损坏等。有时候犯错也需要勇气!2、如果是强制停止,不需要关机,重启SQL服务即可。
    比如CMD运行net stop mssqlserver --关闭默认实例服务
    net start mssqlserver --开启默认实例服务
      

  3.   

    检查是否仅存在当前事务。SQL2005及以上
    select * from sys.sysprocesses where spid > 50 --查看进程数SQL2000
    sp_who2 --查看SPID大于50的进程查看进程执行内容
    dbcc inputbuffer(spid号)
      

  4.   

    如果用ssis执行的话,半小时之内就应该可以搞定。