게시판 본문 ASP, ASP.NET, IIS & Script - Read Only
re: 트랜잭션 관련 문의 드립니다. |
---|
작성자: 송원석
작성일시: 2005-07-12 18:24,
조회수: 3,186
|
안녕하세요? 송원석입니다. ^_^
데브피아의 어떤 글을 말씀하시는 것인지는 저도 잘 짐작이 가지 않네요. 데브피아에 글을 쓴적이 몇 번 있긴한데 정확하게 기억은 하지 못하거든요. 아무튼 말씀하신 문제점들에 대해서 제가 아는대로 하나씩 짚어 보도록 하겠습니다. ^_^ 먼저 이기종 데이터베이스간의 트렌젝션 문제를 살펴보죠. 먼저 해당 기술에 대한 기본적인 기법은 ASP 관련 서적을 참고하셔야만 할 것 같습니다. 해당 기법에 대해서 설명드리는 것이 불가능하지는 않습니다만 게시물 하나로 설명드릴 수 있는 부분은 확실히 아니라고 생각합니다. 이 자리에서는 간략하게 개요만 말씀드리도록 하겠습니다. ASP 프로그램에서 일반적으로 사용되는 트랜젝션 관련 기법은 모두 세 가지 정도가 있습니다. 먼저 저장 프로시저 내에서 자체 관리를 하는 방법이 있습니다. 그러나 이 경우에는 이기종 데이터베이스간에 트랜젝션 관리가 불가능하므로 제외합니다. 그리고 그 다음으로 커넥션 개체 수준에서 트랜젝션 관리를 하는 방법이 있으나 역시 이 방법으로도 이기종 데이터베이스간의 트랜젝션 관리는 불가능하므로 역시 제외하도록 하겠습니다. 가장 마지막 방법이 바로 COM+ 를 이용하는 방법입니다. 그리고 이 방법은 이기종 데이터베이스까지도 포괄하여 관리가 가능합니다. 기본 원리는 매우 간단합니다. 먼저 ASP 코드 그 자체는 언제나와 같이 동일한 방법으로 작성합니다. 커넥션 개체를 몇 개를 열어도 상관없고 레코드셋도 자유롭게 사용하십시요. 그리고 트랜젝션 관련 코드는 단 한줄도 구현하지 마십시요. 즉 코드 자체는 트렌젝션과 무관한 것처럼 일단 작성을 합니다. 그리고 Page 지시자 쪽에 다음과 같은 지시문을 추가합니다. <%@ TRANSACTION=Required %>그리고 페이지의 상단에 오류를 무시하도록 다음과 같은 라인을 추가하십시요. On Error Resume Next이러면 모든 오류는 무시되고 오류가 발생한 다음 라인이 계속해서 실행됩니다. 그리고 페이지의 가장 마지막 부분에서 다음과 같이 오류 결과에 따라서 커밋을 시키거나 롤백을 시키는 코드를 호출해주십시요. 다만 이 코드는 샘플에 불과하므로 상황에 맞게 적절히 편집하여 사용하셔야만 합니다. If Err.Number <> 0 Then ObjectContext.SetAbort Else ObjectContext.SetComplete End If바로 위의 코드로 인해서 모든 트랜젝션 처리가 해결됩니다. 가장 처음에 작성한 Page 지시자로 인해서 현재 페이지의 모든 데이터베이스 관련 쿼리는 COM+ 에 의해서 제어를 받게 됩니다. 그리고 마지막 부분에 추가한 코드로 인해서 오류가 발생한 경우에는 트랜젝션이 롤백되고 아니면 커밋되는 것이죠. ObjectContext 개체는 ASP 자체에서 제공되는 내부 개체이므로 바로 호출이 가능합니다. 기본적인 개요는 이렇습니다만 관련된 보다 상세 자료는 MSDN 이나 관련 서적에서 위에서 말씀드린 메소드들이나 키워드들을 검색하여 찾아보시기 바랍니다. 그리고 참고로 오라클쪽과 관련하여 약간의 설정이 필요한 경우도 있으므로 관련 주제로 MSDN 을 검색하여 보시는 것을 권해드립니다. MS SQL 서버의 경우에도 윈도우즈 2003 을 사용하시면서 데이터베이스 서버와 웹 서버가 다를 경우 보안과 관련하여 추가적인 설정이 필요할 수 있습니다. 이 경우에도 역시 MSDN 을 검색해보시기를 권해드립니다. ^_^ 두 번째로 말씀하신 문제는 저의 경우에 개인적으로 Output 인자를 사용한 저장 프로시저를 그다지 자주 사용하지 않는 편이어서 뭐라고 말씀을 드릴 수가 없네요. 먼저 관련 내용을 한 번 살펴보고 뭔가 해결책을 발견하면 다시 말씀드리도록 하겠습니다. 그러나 당연히 원하시는 대로 동작을 해야하는게 아닌가 하는 생각이 드네요. ^_^;; 감사합니다. |
IP 주소: 203.231.54.9
|
최군 |
한때 win2003쓰면서 sql을 다른 2003서버에서 사용했는데 그때 안돼서 고생한게 생각이 나네요..^^;
|
2005-07-13 11:45 |
최군 |
ms에 물어보니 모른다던;;;; 잘됀다는 ;;;;; 그런말은 들어본적이 없다던;;;; 얘기를 들은게 생각이 나네요 ^^
|
2005-07-13 11:46 |
게시물 | ||||
---|---|---|---|---|
1,232 | 2005-07-20 | 5,112 | ||
1,231 | 2005-07-19 | 3,063 | ||
1,230 |
re: 파일큐브에서요... [1] |
2005-07-19 | 2,957 | |
1,229 |
궁금이 |
2005-07-15 | 1,344 | |
1,228 | 2005-07-15 | 2,994 | ||
1,227 |
죄송합니다만... [6] |
2005-07-15 | 6,034 | |
1,226 |
re: 죄송합니다만... [1] |
2005-07-15 | 2,959 | |
1,225 | 2005-07-14 | 5,796 | ||
1,224 |
re: 스크립트 제거 [2] |
2005-07-15 | 3,366 | |
1,223 |
궁금이 |
2005-07-14 | 955 | |
1,222 | 2005-07-14 | 3,961 | ||
1,221 | 2005-07-12 | 2,878 | ||
2005-07-12 | 3,186 | |||
1,219 | 2005-07-12 | 3,017 | ||
1,216 | 2005-07-12 | 2,901 | ||
1,215 | 2005-07-12 | 2,795 | ||
1,214 | 2005-07-11 | 2,883 | ||
1,213 | 2005-07-11 | 2,826 | ||
1,212 |
getByTagNAME( ) [1] |
정보문 |
2005-07-09 | 951 |
1,211 | 2005-07-07 | 2,875 | ||
1,210 | 2005-07-07 | 2,977 | ||
1,209 |
맞춤법 검사 [1] |
2005-07-06 | 2,950 | |
1,208 | 2005-07-06 | 2,888 | ||
1,207 | 2005-07-06 | 3,128 | ||
1,206 | 2005-07-06 | 3,046 |