检查数据库完整性失败:(-1073548784) 执行查询“DBCC CHECKDB WITH NO_INFOMSGS

谁是谁的谁 2010-09-08 08:31:54
请帮忙看看以下错误该如何修复?


/*
任务开始: 2010-09-08T04:57:50。
任务结束: 2010-09-08T05:01:24。
失败:(-1073548784) 执行查询“DBCC CHECKDB WITH NO_INFOMSGS
”失败,错误如下:“页 (1:263346),槽 10 位于对象 ID 304212334,索引 ID 1,分区 ID 72057608279949312,分配单元 ID 72057608241872896 (类型为"In-row data")中。列 "orgadvoff" 的值超出了数据类型"numeric"的范围。请将该列更新为合法的值。
页 (1:263346),槽 13 位于对象 ID 304212334,索引 ID 1,分区 ID 72057608279949312,分配单元 ID 72057608241872896 (类型为"In-row data")中。列 "nttax" 的值超出了数据类型"numeric"的范围。请将该列更新为合法的值。
页 (1:263347),槽 8 位于对象 ID 304212334,索引 ID 1,分区 ID 72057608279949312,分配单元 ID 72057608241872896 (类型为"In-row data")中。列 "advoff" 的值超出了数据类型"numeric"的范围。请将该列更新为合法的值。
页 (1:263348),槽 0 位于对象 ID 304212334,索引 ID 1,分区 ID 72057608279949312,分配单元 ID 72057608241872896 (类型为"In-row data")中。列 "exchange" 的值超出了数据类型"numeric"的范围。请将该列更新为合法的值。
*/
...全文
1231 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
obuntu 2010-09-08
  • 打赏
  • 举报
回复

select * from sys.allocation_units
/*
container_id

如果 type = 1 或 3,则 container_id = sys.partitions.hobt_id。

如果 type 为 2,则 container_id = sys.partitions.partition_id。

*/
谁是谁的谁 2010-09-08
  • 打赏
  • 举报
回复
如何找到 分配单元 ID 呢
谁是谁的谁 2010-09-08
  • 打赏
  • 举报
回复
数据类型范围不能随意改的情况下,那么只能改值了是吗?
hao1hao2hao3 2010-09-08
  • 打赏
  • 举报
回复
都是超出了范围,改大一点看看,实在不行做一下特殊处理,除以同一个基数(比如一百万)就可以了
obuntu 2010-09-08
  • 打赏
  • 举报
回复

select OBJECT_NAME([object_id]) from sys.partitions
where partition_id=''


找出对应的object,然后修改下对应列的数据类型范围吧。
duanzhi1984 2010-09-08
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 nf_kyle 的回复:]
update ac001 set orgadvoff =cast(orgadvoff as numeric(12,2))
这样执行后仍然报错
[/Quote]

那我觉得是你的数值太大了吧.试下,将类型更改为numeric(15,2),再按12楼进行转换..

update ac001 set orgadvoff =cast(orgadvoff as numeric(15,2))





谁是谁的谁 2010-09-08
  • 打赏
  • 举报
回复
update ac001 set orgadvoff =cast(orgadvoff as numeric(12,2))
这样执行后仍然报错
duanzhi1984 2010-09-08
  • 打赏
  • 举报
回复
建议楼主将所有的数据都更新一扁,再查询下。

update ac001 set orgadvoff =cast(orgadvoff as numeric(12,2)) 



再查询是否可以。

select orgadvoff,* from ac001 where docno = 'SHP100101'
谁是谁的谁 2010-09-08
  • 打赏
  • 举报
回复
我update ac001 set orgadvoff=0 where docno='SHP100101' 提示执行成功,
但是执行查询select 却报错,仅提示如下信息

在执行批处理时出现错误。错误消息为: 算术溢出。


table ac001 中orgadvoff字段属性如下
orgadvoff numeric no 9 12 2 yes (n/a) (n/a) NULL
claro 2010-09-08
  • 打赏
  • 举报
回复
贴出详细错误信息。

以及如下语句结果
sp_help 'ac001'
obuntu 2010-09-08
  • 打赏
  • 举报
回复
先执行

DBCC CHECKDB(dbname,REPAIR_REBUILD) 


再看看。
billpu 2010-09-08
  • 打赏
  • 举报
回复
没碰到过 重新update不可以吗
谁是谁的谁 2010-09-08
  • 打赏
  • 举报
回复
+100分继续求助

我现在已经找到那条错误的记录,但是查询该记录系统却报错,请教该怎么处理呢?

select orgadvoff,* from ac001 where docno = 'SHP100101'
/*
在执行批处理时出现错误。错误消息为: 算术溢出。
*/

22,300

社区成员

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

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