事务回滚一直是0% ,路过的大神,进来帮忙给小弟看下,谢谢

niuhejun 2014-05-07 11:42:48
为了测试表分区后的数据写入性能。我新创建了一个分区表T1

利用微软自带的数据导入导出工具从表T2中导出4000W数据进T1。平均每分钟在40W-60W左右浮动,

悲催的事情发生了,当数据导入到3900W左右的时候,突然就不动了。一直持续2个多小时还是卡在这个地方,也不报错,也不停止的。

于是我就手动停止了数据迁导入的任务。问题来了。现在T1表一直在执行数据导入。我就把他所在的线程给kill了,然后系统提示

“SPID 65: 正在进行事务回滚。估计回滚已完成: 0%。估计剩余时间: 0 秒。”

然后就无限开始等待。这都又俩小时了。。。还是上边的提示。

求高手指点。。。。
...全文
716 31 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
twtiqfn 2014-05-08
  • 打赏
  • 举报
回复
太深了,不懂,再学习吧
發糞塗牆 2014-05-07
  • 打赏
  • 举报
回复
回复的时候记得引用就好了,不然结贴了在首页看不到
niuhejun 2014-05-07
  • 打赏
  • 举报
回复
引用 24 楼 DBA_Huangzj 的回复:
既然没阻塞了,估计你就只能等了等半个小时再看看kill 65有没有变化吧
行,谢谢版主,你抓紧吃饭去吧,我下午在等个一个半个小时,在看看,有问题我在回复你,下午我会发聩一个结果,你关注下,谢谢你啦
發糞塗牆 2014-05-07
  • 打赏
  • 举报
回复
既然没阻塞了,估计你就只能等了等半个小时再看看kill 65有没有变化吧
niuhejun 2014-05-07
  • 打赏
  • 举报
回复
引用 22 楼 DBA_Huangzj 的回复:
DBCC opentran()看看
数据库 'new56539' 的事务信息。 最早的活动事务: SPID (服务器进程 ID): 65 UID (用户 ID): -1 名称 : BULK INSERT LSN : (20992:430226:190) 开始时间 : 05 7 2014 6:24:52:030AM SID : 0x0105000000000005150000009abf42e36cb95a12f85084def9030000 DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
發糞塗牆 2014-05-07
  • 打赏
  • 举报
回复
DBCC opentran()看看
niuhejun 2014-05-07
  • 打赏
  • 举报
回复
引用 19 楼 DBA_Huangzj 的回复:
1222锁超时, 给我看看结果
select text from sys.dm_exec_sql_text(0x02000000FFE7E4104F512F2C581E215A0E83449CF09D6016) 结果: insert bulk [new56539].[dbo].[Automatic]([A_IdId] nvarchar(50) collate Chinese_PRC_CI_AS,[A_Danhao] nvarchar(50) collate Chinese_PRC_CI_AS,[A_Good] nvarchar(20) collate Chinese_PRC_CI_AS,[A_Bianhao] nvarchar(30) collate Chinese_PRC_CI_AS,[A_Jianshu] int,[A_Hk] numeric(18,0),[A_Dfhk] numeric(18,0),[A_Yf] numeric(18,0),[A_Yfyf] numeric(18,0),[A_Tfyf] numeric(18,0),[A_Dfyf] numeric(18,0),[A_Hfyf] numeric(18,0),[A_Yjyf] numeric(18,0),[A_Shk] numeric(18,0),[A_Sf] numeric(18,0),[A_Sxf] numeric(18,0),[A_Shdate] datetime,[A_Fcdate] datetime,[A_Jcdate] datetime,[A_Skdate] datetime,[A_Hkdate] datetime,[A_Jkdate] datetime,[A_Fkdate] datetime,[A_Shr] nvarchar(50) collate Chinese_PRC_CI_AS,[A_Shtel] nvarchar(50) collate Chinese_PRC_CI_AS,[A_Fhr] nvarchar(80) collate Chinese_PRC_CI_AS,[A_Fhtel] nvarchar(30) collate Chinese_PRC_CI_AS,[A_Qd] nvarchar(20) collate Chinese_PRC_CI_AS,[A_Shd] nvarchar(20) collate Chinese_PRC_CI_AS,[A_Zd] nvarchar(20) collate Chinese_PRC_CI_AS,[A_Fhd] nvarchar(20) collate Chinese_PRC_CI_AS,[A_Worker] int,[A_Fkdanhao] nvarchar(50) collate Chinese_PRC_CI_AS,[A_Gh] nvarchar(50) collate Chinese_PRC_CI_AS,[A_Accout] nvarchar(30) collate Chinese_PRC_CI_AS,[A_Unit] nvarchar(50) collate Chinese_PRC_CI_AS,[A_Pj] int,[A_State] int,[A_Dzzt] int,[A_ModifyDate] datetime,[A_CreateDate] datetime)with(TABLOCK,CHECK_CONSTRAINTS) 这个就是插入语句 下边那条语句是个XML
niuhejun 2014-05-07
  • 打赏
  • 举报
回复
引用 19 楼 DBA_Huangzj 的回复:
1222锁超时, 给我看看结果
65 0 3019176 3019184 0x02000000FFE7E4104F512F2C581E215A0E83449CF09D6016 0 -1 0x06000F00FFE7E410B8E17961000000000000000000000000
發糞塗牆 2014-05-07
  • 打赏
  • 举报
回复
1222锁超时, SELECT t1.session_id , t1.request_id , t1.task_alloc , t1.task_dealloc , t2.sql_handle , t2.statement_start_offset , t2.statement_end_offset , t2.plan_handle FROM ( SELECT session_id , request_id , SUM(internal_objects_alloc_page_count) AS task_alloc , SUM(internal_objects_dealloc_page_count) AS task_dealloc FROM sys.dm_db_task_space_usage GROUP BY session_id , request_id ) AS t1 , sys.dm_exec_requests AS t2 WHERE t1.session_id = t2.session_id AND ( t1.request_id = t2.request_id ) AND t1.session_id=65 ORDER BY t1.task_alloc DESC 给我看看结果
niuhejun 2014-05-07
  • 打赏
  • 举报
回复
引用 17 楼 DBA_Huangzj 的回复:
你要看下开始动了没有,这个百分比的确不准确,只能知道个大概
去哪里看开始动了? 有具体的地方或者语句吗
發糞塗牆 2014-05-07
  • 打赏
  • 举报
回复
你要看下开始动了没有,这个百分比的确不准确,只能知道个大概
niuhejun 2014-05-07
  • 打赏
  • 举报
回复
引用 14 楼 DBA_Huangzj 的回复:
再输入:kill 65 看看现在开始动了没
SPID 65: 正在进行事务回滚。估计回滚已完成: 0%。估计剩余时间: 0 秒。
niuhejun 2014-05-07
  • 打赏
  • 举报
回复
引用 12 楼 DBA_Huangzj 的回复:
4000W数据回滚,是需要点时间,2个小时貌似我也试过
你的意思,这个0%只是个假象。等着就行,大约二三个多小时他就会回滚完毕对吧。时间倒是可以等,我就是怕他是不是一直这么下去,现在对这个分区表的所有操作全部都会提示“1222”错误
發糞塗牆 2014-05-07
  • 打赏
  • 举报
回复
再输入:kill 65 看看现在开始动了没
niuhejun 2014-05-07
  • 打赏
  • 举报
回复
引用 11 楼 DBA_Huangzj 的回复:
再次执行1楼的代码
1.执行 select * from sys.dm_os_waiting_tasks WHERE blocking_session_id IS NOT NULL 结果为空 2.执行 select * from sys.dm_os_waiting_tasks WHERE blocking_session_id IS NOT NULL 结果为空
發糞塗牆 2014-05-07
  • 打赏
  • 举报
回复
4000W数据回滚,是需要点时间,2个小时貌似我也试过
發糞塗牆 2014-05-07
  • 打赏
  • 举报
回复
再次执行1楼的代码
niuhejun 2014-05-07
  • 打赏
  • 举报
回复
引用 9 楼 DBA_Huangzj 的回复:
我要看sql
这个sql语句是另一个同事跑的一个对数据库某张表的某个字段加密的语句。我已经让他停了,现在查不到数据了 那俩handle也都为空了。上边的事务回滚依然存在
發糞塗牆 2014-05-07
  • 打赏
  • 举报
回复
我要看sql
niuhejun 2014-05-07
  • 打赏
  • 举报
回复
引用 7 楼 DBA_Huangzj 的回复:
/*

*/
select text from sys.dm_exec_sql_text(@sql_handle)
select * from sys.dm_exec_query_plan(@plan_handle)
这两句都能执行出来信息,而且有一句还有sql语句。接下来版主。我都晕了。。。 你是在给我查找原因呢,还是原因已经找到了。。。
加载更多回复(11)

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧