sqlserver 消息 682,: 内部错误。提供用于读取列值的缓冲区太小。请运行 DBCC CHECKDB 查看是否有损坏情况 的处理方法

本文详细介绍了SQL Server遇到消息682:内部错误,提供用于读取列的缓冲区太小的问题解决过程。通过运行DBCC CHECKDB进行检查,发现并修复潜在的数据损坏情况。特别指出,错误发生的原因在于未正确添加字段'SHENGRI'。文章还分享了尝试使用ALTER DATABASE进行数据库修复的失败经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sqlserver 消息   682,:   内部错误。提供用于读取列值的缓冲区太小。请运行   DBCC   CHECKDB   查看是否有损坏情况 的处理方法
select * into BBB_vip_PREPARE 
--SELECT *
 FROM 
 openquery(DBLINK_ORACL,'SELECT TRIM(M.MEMBER_CODE),
       ''-'' shibiema, 
       ''Y'',
       M.CHINESE_NAME,
       '''' ps,
       ''2049-12-31'' youxiaoq,
       ''VIP'',
       M.JOINT_DATE,
       M.SHOP_CODE,
       M.POINTS,
       ''N'',
       0 CSJE,
       ''2049-12-31'', 
       M.SEX, 
       M.ID_NO, 
       CASE 
           WHEN M.BIRTHDAY>TO_DATE(''2000-01-01'',''yyyy-mm-dd'') 
           THEN ''2100-''||SUBSTR(M.BIRTHMMDD,0,2)||''-''||SUBSTR(M.BIRTHMMDD,2,2) 
           WHEN M.BIRTHDAY<TO_DATE(''2000-01-01'',''yyyy-mm-dd'') 
           THEN TO_CHAR(M.BIRTHDAY,''yyyy-mm-dd'') 
       END SHENGRI, --之前这里没有加 SHENGRI,结果就报上述错误,加了就不报错了。
       TRIM(PP.PROV_CNAME),
       '''' postcode,
       M.PHONE_DAY,
       M.PHONE_NIGHT,
       M.E_MAIL,
       ''0'' QQ,
       ''MSN'' MSN,
       TRIM(M.ADDRESS) ,
       ''1900-01-01 23:59'',
       0 JSJF,
       1,
       ''-'' BZ,
       ''-'' XL,
       ''-'' ZY,
       ''-'' SR,
       M.AGE  
  FROM MEMBERSHIP M 
   LEFT JOIN PROVINCE PP 
       ON TRIM(PP.PROV_CODE) =TRIM(M.PROV_CODE) 
       --AND M.ID_NO IS NOT NULL
       and 1=0
')
出现上述错误后,运行dbcheck ,没有错误。后来想强行修复
ALTER DATABASE MYDBNAME  SET SINGLE_USER
执行好长时间也没有结束,最后放弃,看看是不是还有其他的地方要注意
结果发现:
 --之前这里没有加 SHENGRI,结果就报上述错误,加了就不报错了。
分享之。
上述语句是在SQLSERVER 中执行,生成oracle查询来的数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值