postgame

 SET NOCOUNT ON;
 SET LOCK_TIMEOUT 1000;
 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;


ms-sql에서 ODBC연결로 프로시져를 만들어 쓸때.. 보통.. 위 세줄을 쓰고 구현합니다.

SET NOCOUNT ON            
= Transact-SQL 문의 영향을 받은 행 수를 나타내는 수 반환 금지
SET LOCK_TIMEOUT 1000  
=  트랜잭션 잠금이 해제될 때가지 문이 기다려야 할 시간(밀리초) 설정 1초
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
= 불필요한 읽기나 격리 수준 0을 구현합니다. 이렇게 하면 공유 잠금이 만들어지지 않고 단독 잠금이 무시됩니다. 이 옵션을 설정하면 커밋되지 않은 데이터나 불필요한 데이터를 읽을 수 있습니다. 데이터의 값이 변경될 수 있으며 트랜잭션이 끝나기 전에 데이터 집합에 행이 나타나거나 사라질 수도 있습니다. 이 옵션은 트랜잭션에서 모든 SELECT 문의 모든 테이블에 NOLOCK을 설정하는 것과 같습니다. 네 가지 격리 수준 중 제한이 가장 적습니다.-msdn

특히 LOCK_TIMEOUT이나 TRANSACTION ISOLATION LEVEL은 
적당히 셋팅해 쓰면 됩니다만..
NOCOUNT ON을 켜지 않으면
ODBC 바인딩시
빼먹은 프로시져는 정상실행되는데..
다음 프로시져에서 '잘못된 커서 상태입니다'라는 오류가 떨어집니다.

물론 SET NOCOUNT ON 를 넣으면 해결할수 있습니다.

아.. 이것땜에 하루를 까먹었었네요.. ㅠㅠ


Posted by 중원_