执行存储过程报错:“SQLSERVER 内部错误。文本管理器无法继续执行当前语句”的处理方法

来源:互联网 发布:webuploader php接收 编辑:程序博客网 时间:2024/05/16 18:25

问题描述:

执行存储过程报错,如下:

服务器:消息7102,级别20,状态7,过程 P_TJXSZL,行139

SQLSERVER 内部错误。文本管理器无法继续执行当前语句。

连接中断

 

问题跟踪:

首先,根据报错的行数定位存储过程中的语句,并把语句单独摘出来执行,如果执行通过,则表示问题不在这里,继续下一次的跟踪;

然后,对该存储过程进行调试;调试后发现过程还未执行就报错了。这说明在调用过程开始的地方就有问题;

然后,从头对存储过程中的语句逐句执行,看是哪句出错。也可以分段批量执行语句,直到找出报错的语句;

最后,分析此语句,定位原因。

 

原因分析:

TR_FDZDMXK表损坏,需重建,但是删除此表时提示如下信息:(使用修复表语句不管用,原因待查。。)

服务器: 消息 7105,级别 22,状态 3,行 1
text、ntext 或 image 节点的页 (1:117376),槽 0 不存在。

连接中断

 

临时解决方法:

前提:数据库已做好备份。打开查询分析器,执行以下语句如下:

步骤1、将损坏的名进行重命名

EXEC SP_RENAME 'TR_FDZDMXK','TR_FDZDMXK_BAK'

 

步骤2、删除系统表中保存的损坏的表约束与主键

EXEC SP_RENAME 'TR_FDZDMXK','TR_FDZDMXK_BAK'GODELETE FROM SYSOBJECTS WHERE NAME LIKE '%DF__TR_FDZDMX%' OR NAME LIKE '%PK_TR_FDZDMXK%'

 

步骤3、在查询分析器中,找到相应的数据库下的此表,并生成创建(CREATE)表的语句。

步骤4、执行创建表的语句。