hoony's web study

728x90
반응형
블로그로도 수익을 창출할 수 있다는 것을 아시나요? 이 블로그는 매달 200$ 이상의 수입을 애드센스 광고수입으로 벌어들입니다.


System.Transactions를 사용하려면 System.Transactions.dll에 대한 참조가 필요합니다.

System.Transaction 참조추가
다음 코드에서는 서로 다른 두 SqlConnection 개체(TransactionScope 블록에 래핑됨)로 나타나는 두 개의 서로 다른 SQL Server 인스턴스에 대한 승격 가능한 트랜잭션을 만드는 방법을 보여 줍니다. 이 코드에서는 using 문을 사용하여 TransactionScope 블록을 만든 후 첫 번째 연결을 엽니다. 그리고 나면 이 연결은 TransactionScope에 자동으로 참여합니다. 이 트랜잭션은 처음에 완전 분산 트랜잭션이 아니라 간단한 트랜잭션으로 참여합니다. 이 코드에서는 간결한 설명을 위해 생략되었지만 조건 논리가 있는 것으로 가정합니다. 필요한 경우에만 두 번째 연결을 열어서 TransactionScope에 참여시킵니다. 연결이 열리면 트랜잭션이 완전 분산 트랜잭션으로 자동 승격됩니다. 그런 다음, 코드에서는 트랜잭션을 커밋하는 Complete를 호출합니다. 이 코드에서는 연결에 대한 using 문을 종료하면 두 연결을 삭제합니다. TransactionScopeDispose 메서드는 TransactionScopeusing 블록에서 자동으로 호출됩니다. TransactionScope 블록의 한 지점에서 예외가 발생한 경우에는 Complete가 호출되지 않으며 TransactionScope가 삭제되면 분산 트랜잭션이 롤백됩니다.

Visual Basic
Using transScope As New TransactionScope()
    Using connection1 As New SqlConnection(connectString1)
        ' Opening connection1 automatically enlists it in the 
        ' TransactionScope as a lightweight transaction.
        connection1.Open()

        ' Do work in the first connection.

        ' Assumes conditional logic in place where the second
        ' connection will only be opened as needed.
        Using connection2 As New SqlConnection(connectString2)
            ' Open the second connection, which enlists the 
            ' second connection and promotes the transaction to
            ' a full distributed transaction.
            connection2.Open()

            ' Do work in the second connection.

        End Using
    End Using

    ' Commit the transaction.
    transScope.Complete()
End Using
C#
using (TransactionScope transScope = new TransactionScope())
{
    using (SqlConnection connection1 = new 
       SqlConnection(connectString1))
    {
        // Opening connection1 automatically enlists it in the 
        // TransactionScope as a lightweight transaction.
        connection1.Open();

        // Do work in the first connection.

        // Assumes conditional logic in place where the second
        // connection will only be opened as needed.
        using (SqlConnection connection2 = new 
            SqlConnection(connectString2))
        {
            // Open the second connection, which enlists the 
            // second connection and promotes the transaction to
            // a full distributed transaction. 
            connection2.Open();

            // Do work in the second connection.
        }
    }
    //  The Complete method commits the transaction.
    transScope.Complete();
}
728x90

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading