다음을 통해 공유


명시적 트랜잭션

명시적 트랜잭션은 트랜잭션 시작 및 완료를 모두 명시적으로 정의하는 트랜잭션입니다.

DB-Library 응용 프로그램 및 Transact-SQL 스크립트는 BEGIN TRANSACTION, COMMIT TRANSACTION, COMMIT WORK, ROLLBACK TRANSACTION 또는 ROLLBACK WORK Transact-SQL 문을 사용하여 명시적 트랜잭션을 정의합니다.

  • BEGIN TRANSACTION
    한 연결에 대해 명시적 트랜잭션의 시작 위치를 표시합니다.

  • COMMIT TRANSACTION 또는 COMMIT WORK
    오류가 발생하지 않은 경우 트랜잭션을 성공적으로 끝내는 데 사용됩니다. 트랜잭션에서 만들어진 모든 데이터 수정은 영구적으로 데이터베이스의 일부가 됩니다. 트랜잭션이 보유한 리소스는 해제됩니다.

  • ROLLBACK TRANSACTION 또는 ROLLBACK WORK
    오류가 발생했을 때 트랜잭션을 지우는 데 사용됩니다. 트랜잭션에 의해 수정된 모든 데이터는 트랜잭션 시작 시점의 상태로 되돌려집니다. 트랜잭션이 보유한 리소스는 해제됩니다.

OLE DB에서도 명시적 트랜잭션을 사용할 수 있습니다. ITransactionLocal::StartTransaction 메서드를 호출하여 트랜잭션을 시작합니다. ITransaction::Commit 또는 ITransaction::Abort 메서드의 fRetaining을 FALSE로 설정하여 호출하면 다른 트랜잭션을 자동으로 시작하지 않고 트랜잭션을 완료할 수 있습니다.

ADO에서는 Connection 개체에 대해 BeginTrans 메서드를 사용하여 명시적 트랜잭션을 시작합니다. 트랜잭션을 완료하려면 Connection 개체의 CommitTrans 또는 RollbackTrans 메서드를 호출합니다.

ADO.NET SqlClient 관리 공급자에서는 SqlConnection 개체에 대해 BeginTransaction 메서드를 사용하여 명시적 트랜잭션을 시작합니다. 트랜잭션을 완료하려면 SqlTransaction 개체의 Commit() 또는 Rollback() 메서드를 호출합니다.

ODBC API는 명시적 트랜잭션을 지원하지 않으며 자동 커밋 트랜잭션과 암시적 트랜잭션만 지원합니다.

명시적 트랜잭션 모드는 해당 트랜잭션 중에만 유지됩니다. 트랜잭션이 끝나면 명시적 트랜잭션이 시작된 시기의 트랜잭션 모드인 암시적 모드나 자동 커밋 모드로 되돌려집니다.

[!참고]

MARS(Multiple Active Result Set) 세션에서는 Transact-SQL BEGIN TRANSACTION 문으로 시작한 명시적 트랜잭션이 일괄 처리 범위의 트랜잭션이 됩니다. 일괄 처리가 완료될 때 일괄 처리 범위의 트랜잭션이 커밋되거나 롤백되지 않으면 SQL Server에서 해당 트랜잭션을 자동으로 롤백합니다. 자세한 내용은 트랜잭션 제어(데이터베이스 엔진)트랜잭션 문(Transact-SQL)을 참조하십시오.