Server programming in use...FiaDot

[테스트 환경]
MSSQL2000에 OLEDB로 ATL을 이용하여 접근
개발환경은 .Net2005, VS6 2가지 버젼을 사용해서 테스트


-- 테스트용 Stored Procedure
CREATE PROCEDURE sp_ResultParamIO

@num int,

@Ret int OUTPUT

AS

BEGIN

  select * from UserInfo where ID = @num

  Set @Ret = 99

END


위와같은 2가지 결과를 가지는 SP(이하 Stored Procedure)에서는

다음과 같이 구성할수 있다.

CCommand<CAccessor<CResultParamIO>, CRowset, CMultipleResults> cmdSP;

즉, 로우셋을 가지고 결과가 여러개로 되기 때문에

Cmd.GetNextResult(NULL, true);

를 통해서 @Ret값을 받을수 있게된다.


근데 문제는 CMultipleResults를 붙이게 되면 cmdSP를 호출할때마다

메모리가 늘어나게 된다.

혹시나 OLEDB의 컨넥션풀이나 메모리풀과 관련되었나 싶어서 물리적메모리와

가상메모리가 다 할때가지 기다려봤는데 줄어들지 않았다 -_-

이와같은 문제를 해결하고자 MS문서를 찾아봤는데 UDL파일이나 컨넥션 스트링을 이용한

leak나는 부분이 patch됐다는 사실을 알고 이를 수정해보았으나

여전히 누수가 존재했다 -_-....


데브피아와 여타 개인사이트들, 뉴스그룹을 통해 찾아본 결과

이는 CMultipleResults의 버그라고 볼수 밖에 없다 -_-;;



누구 아는분 있으면 해결책을 제시해 주시오 ㅡㅠ.....


이때문에 SP를 2개로 구성해서 하나 받고 또받고

이런 더러운 구조로 개발을 종료한다.



[참고자료]

OLE DB ? ATL Consumer Templates and “Memory Leaks” · Thu Mar 25,
http://exold.com/article/ole-db--atl-consumer-templates-and-memory-leaks-

BUG: Memory Leak in ATL OLE DB Consumer Template Functions
http://support.microsoft.com/kb/271926


http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNo=20&no=5204&ref=1760
http://www.google.co.kr/search?sourceid=navclient&hl=ko&ie=UTF-8&rlz=1T4GGLG_ko___KR204&q=msdn+GetNextResult
http://www.google.co.kr/search?hl=ko&newwindow=1&rlz=1T4GGLG_ko___KR204&q=CMultipleResults&lr=
http://dbforums.com/archive/index.php/t-481961.html
http://msdn2.microsoft.com/en-us/library/ms713643.aspx

"Steal Article" 카테고리의 다른 글
2007/01/16 22:09 2007/01/16 22:09
Posted by FiaDot
Technical Article/Steal Article l 2007/01/16 22:09

TRACKBACK :: http://fiadot.com/TatterTools/trackback/1829

댓글을 달아 주세요

1  ... 49 50 51 52 53 54 55 56 57  ... 676 

카테고리

전체 (676)
개인 (1)
Technical Article (273)
Diary (125)
Book (2)
Music (176)
DSP (19)
Tmp.Box (5)
Hardware (7)
Idea (60)
마이크로소프트웨어 (7)

달력

«   2010/09   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30