SQLSERVER 605 尝试在数据库 %d 中提取逻辑页 %S_PGID 失败。 该逻辑页属于分配单元 %I64d,而非 %I64d。...

本文记录了在开发过程中遇到的SQL 605错误现象及排查过程。作者最初怀疑是硬件IO问题,但在更换服务器后仍出现相同错误。通过仔细检查存储过程代码并修改插入表的目标名称后,成功解决了该问题。

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

今天在开发过程中写了一个存储过程发现执行的时候,时不时会提示605错误,重新执行又可能会成功.

百度了一下,很多说法是硬件的IO问题,就是存储器反馈给SQL SERVER 写入成功,但下次读取的时候SQLSEVER 系统校验发现写入的数据不正确.

换了一台服务器,还是提示同样的错误,难道是两台服务器都有硬件问题?

 

重新跟踪错误,仔细检查了一个代码.发现总是在同一个地方提示错误

  INSERT INTO #STK_MKT(LIST_DATE,LTTTRDATE,EDATE,PSVPCLNGPRARC,PSVOPNGPRARC,PSVCLNGPRARC,PSVHTPR,PSVLTPR,TRVOL,TRTO)
    SELECT C.LIST_DATE,B.EDATE,A.ENDDATE,B.PSVPCLNGPRARC,B.PSVOPNGPRARC,B.PSVCLNGPRARC,B.PSVHTPR,B.PSVLTPR,B.TRVOL,B.TRTO
    FROM #TRADE_DAY A
            CROSS APPLY(SELECT TOP 1 * FROM #STK_MKT
                        WHERE EDATE<=A.ENDDATE AND LIST_DATE<=A.ENDDATE 
                        ORDER BY EDATE DESC) B
            CROSS APPLY(SELECT TOP 1 * FROM #LIST_DATE WHERE LIST_DATE<=A.ENDDATE ORDER BY LIST_DATE DESC) C
    WHERE NOT EXISTS(SELECT 1 FROM #STK_MKT WHERE EDATE=a.ENDDATE)

把插入的表名换了一下,将结果存入其它表中

  INSERT INTO #HK_STK_PRICE_IDX(LIST_DATE,LTTTRDATE,EDATE,PSVPCLNGPRARC,PSVOPNGPRARC,PSVCLNGPRARC,PSVHTPR,PSVLTPR,TRVOL,TRTO)
    SELECT C.LIST_DATE,B.EDATE,A.ENDDATE,B.PSVPCLNGPRARC,B.PSVOPNGPRARC,B.PSVCLNGPRARC,B.PSVHTPR,B.PSVLTPR,B.TRVOL,B.TRTO
    FROM #TRADE_DAY A
            CROSS APPLY(SELECT TOP 1 * FROM #STK_MKT
                        WHERE EDATE<=A.ENDDATE AND LIST_DATE<=A.ENDDATE 
                        ORDER BY EDATE DESC) B
            CROSS APPLY(SELECT TOP 1 * FROM #LIST_DATE WHERE LIST_DATE<=A.ENDDATE ORDER BY LIST_DATE DESC) C
    WHERE NOT EXISTS(SELECT 1 FROM #STK_MKT WHERE EDATE=a.ENDDATE)

重新执行没有再报这个错误.原因不清楚,不轻易去猜测.

转载于:https://www.cnblogs.com/champaign/p/4008367.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值