본문 바로가기

컴터생각

SQL Server JDBC 드라이버 버그..

기능 개선상 스토어드 프로시저가 몇개 추가되었는데, 갑자기 스토어드 프로시저 호출이 안되는거다.. 예전 스토어드 프로시저는 잘 호출되고 실행도 되는데 새로 추가된 스토어드 프로시저는 호출이 안된다.. 도대체 뭐가 문제인가.. 몇일을 끙끙 거리고 해매도 답도 안나오고..

스토어드 프로시저 내부에 select 가 2개 이상 있는 것도 아니고.. 이렇게 수정해보고, 저렇게 수정을 해봐도 해결이 안되더군..

2008/03/18 19:16:18 at ets.biz.admin.siteadmin.TestMngMgt.TestMngTO.testMngMarking2
(TestMngTO.java:500) [Debug] call proc_answer ex ( ?, '' ) start
2008/03/18 19:16:18 at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run
(ThreadPool.java:683) [Error] com.microsoft.sqlserver.jdbc.SQLServerException: 서버 커서는 둘 이상의 SELECT 문이 있는 원격 저장 프로시저나 저장 프로시저에서 사용할 수 없습니다. 기본 결과 집합이나 클라이언트 커서를 사용하십시오.
    at ets.biz.admin.siteadmin.TestMngMgt.TestMngTO.testMngMarking2(TestMngTO.java:522)
    at ets.biz.admin.siteadmin.TestMngMgt.TestMngBLC.testMngMarking2(TestMngBLC.java:154)
    at ets.biz.admin.siteadmin.TestMngMgt.TestMngBLC.doTheWork(TestMngBLC.java:51)
 
에러메시지를 가지고 구글 검색을 해봤는데도 검색도 안되고.. 결국, 안되는 영어로 메시지를 영어로 바꾸어 검색을 해서 영문에 해당하는 에러메시지를 찾아냈다.. 그 메시지로 Microsoft의 MSDN 사이트에서 검색을 하니 알려진 버그라는 사실을 찾았다.. 문제는 SQL Server JDBC 드라이버의 버그였으며, 최신버젼으로 업데이트 하니 해결되었다..
 
2006년에 수정된 버그인데, 몇날 몇일을 이것 때문에 시간을 허비한 것인지.. preparedStatement를 MS SQL 2000에서 수행할때 나는 버그였다.. 2005에서는 발생하지 않았다..

728x90