2009-11-09 4 views
0

가끔 얻을 저장 프로 시저를 실행할 때 SQL 서버 2005에서 다음SQL 서버 2005 - 중첩 된 트랜잭션을 롤백 할 수 없습니다

 
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Cannot roll back T1. No transaction or savepoint of that name was found. 
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(Unknown Source) 
    at com.mchange.v2.c3p0.impl.NewProxyCallableStatement.executeUpdate(NewProxyCallableStatement.java:2160) 
    at com.sm.persistence.dao.TransactionRejectDAO.callSpMoveTransaction(TransactionRejectDAO.java:631) 
    ... 6 more 

어떤 아이디어? 연결 풀링 메커니즘은 준비된 문을 닫으려고

:

 
Nov 9, 2009 9:32:55 AM com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement close 
WARNING: SQLServerPreparedStatementID:201 (ConnectionID:139 TransactionID:0x1A00000039000000): Error (ignored) closing PreparedHandle:0 
com.microsoft.sqlserver.jdbc.SQLServerException: The server failed to resume the transaction. Desc:390000001a. 
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.TDSParser.parse(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.TDSParser.parse(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$1PreparedHandleClose.doExecute(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.closePreparedHandle(Unknown Source) 
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.close(Unknown Source) 
    at com.mchange.v1.db.sql.StatementUtils.attemptClose(StatementUtils.java:41) 
    at com.mchange.v2.c3p0.stmt.GooGooStatementCache.synchronousDestroyStatement(GooGooStatementCache.java:413) 
    at com.mchange.v2.c3p0.stmt.GooGooStatementCache.closeAll(GooGooStatementCache.java:351) 
    at com.mchange.v2.c3p0.impl.NewPooledConnection.closeAllCachedStatements(NewPooledConnection.java:673) 
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:543) 
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:234) 
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:470) 
    at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:964) 
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547) 
Nov 9, 2009 9:32:55 AM com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement close 
WARNING: SQLServerPreparedStatementID:186 (ConnectionID:139 TransactionID:0x1A00000039000000): Error (ignored) closing PreparedHandle:0 

저장 프로 시저 내가 불필요한 생각 중첩 된 트랜잭션 T1이 포함되어 있습니다. 그것이 문제일까요?

감사

답변

1

첫 번째 오류는 당신이 가지고 있다는 사실 때문이다 라는 이름의 당신이 롤백하려는 중첩 된 트랜잭션 (transaction) - (중첩 된 트랜잭션을 명명 "트랜잭션을 BEGIN"같은 입력 수단을 명명하는 귀하의 경우 = T1)은 허용되지만 명명 된 중첩 트랜잭션으로 롤백하는 것은 지원되지 않으므로 오류가 발생합니다.

자세한 내용은 this 주제를 참조하십시오.

+0

감사합니다. 나는 그것을 바꿀 것이고 당신에게 알려줄 것이다. – DaTroop

1

중첩 트랜잭션을 롤백해야하는 경우 SAVE 트랜잭션을 사용할 수 있습니다. 참조 here

관련 문제