今天在开发过程中写了一个存储过程发现执行的时候,时不时会提示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(SELECTTOP1*FROM #STK_MKT
WHERE EDATE<=A.ENDDATE AND LIST_DATE<=A.ENDDATE
ORDERBY EDATE DESC) B
CROSS APPLY(SELECTTOP1*FROM #LIST_DATE WHERE LIST_DATE<=A.ENDDATE ORDERBY LIST_DATE DESC) C
WHERENOTEXISTS(SELECT1FROM #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(SELECTTOP1*FROM #STK_MKT
WHERE EDATE<=A.ENDDATE AND LIST_DATE<=A.ENDDATE
ORDERBY EDATE DESC) B
CROSS APPLY(SELECTTOP1*FROM #LIST_DATE WHERE LIST_DATE<=A.ENDDATE ORDERBY LIST_DATE DESC) C
WHERENOTEXISTS(SELECT1FROM #STK_MKT WHERE EDATE=a.ENDDATE)
重新执行没有再报这个错误.原因不清楚,不轻易去猜测.
原文:http://www.cnblogs.com/champaign/p/4008367.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!