내 기존 ASP 응용 프로그램에서 다음과 같은 오류가 점점 오전 : '80004005'"트랜잭션은이 커서 유형의 레코드 세트를 여러 개 가질 수 없습니다." 오류
거래 ODBC 드라이버 오류
Microsoft OLE DB 공급자가이 커서 유형의 여러 레코드를 가질 수 없습니다. 커서 형식을 변경하거나 트랜잭션을 커밋하거나 레코드 집합 중 하나를 닫습니다.
난 SQL Server 2008로 오라클의 코드를 마이그레이션하는 작업을하고,이 내가 모든 통해 응용 프로그램에서 여기 저기보고 계속 문제입니다.
수정 사항을 찾을 수 없습니다.
코드 블록이 특정의 경우 : 나 MyConn 최종 폐쇄 할 필요가 있다고 생각
Set MyConn = Server.CreateObject("ADODB.Connection")
Call OpenORPSConnect(MyConn)
ql = "Select username from mytable"
set rs = MyConn.Execute(sql)
if not rs.EOF then username = rs(0)
if username = "" then username = theUser
rs.close()
set rs = nothing
MyConn.BeginTrans()
sql = "Select someReport from MyTable"
set rs = MyConn.Execute(sql)
do while not rs.EOF
TIMESTAMP = rs("TIMESTAMP")
rev = rs("REV")
select case whatChange
case "Target date"
sql = "Insert into " & caJustTable & _
" (TEXT, TIMESTAMP, CURRENTFLAG)" & _
" Values (Text& "','" & COPY_TS & "', 'Y')""
MyConn.Execute(sql)
end select
sql = "update table, set this to that"
MyConn.Execute(sql) <-------- error happens here sometimes....
end if
rs.movenext
loop
rs.close()
set rs = nothing
내가 문제가 MyConn.BeginTrans가() 아니오 먼저 실행 한 후 커밋있다 없다 생각 : 여기
는 SQL 트랜잭션에 대한 참조입니다. 커밋하는 경우 다음 실행은 정상적으로 작동해야합니다. 그렇지 않으면 트랜잭션 외부에서 선택 항목을 이동하는 것을 고려할 수 있습니다. – Robert@ 로버트, 어디서 붙여야합니까? 솔직히, BeginTrans가 처음에 왜 거기에 있는지도 모르겠다. –
원한다면 그냥 제거하면된다. 삽입 할 때 실패하면 기존 데이터를 잃어 버리지 않고 롤백 할 수 있습니다. - http://www.firstsql.com/tutor5.htm – Robert